Vừa

Event và race cùng thời điểm: @ev hay wait(ev.triggered)

Class cần viết: sync_point · cần máy chấm có SystemVerilog · 6 case (2 mẫu) · giới hạn 4 s/case · ~20 phút

eventracesynchronizationtrapscheduling

Hai thread đồng bộ với nhau bằng event: một bên báo, một bên chờ. Trong mô phỏng, "cùng một thời điểm" không có nghĩa là "cùng lúc": các tiến trình trong một time step chạy theo một thứ tự nào đó mà người viết không kiểm soát. Chờ sai cách thì lần báo bị bỏ lỡ, và testbench treo hoặc chậm một nhịp. Đây là một race kinh điển.

class sync_point;
  event go;
  int   n_fired;                    // tổng số lần fire()
  task  fire();                     // kích hoạt go, n_fired++ (không tốn thời gian)
  task  wait_go();                  // trả về ở lần kích hoạt kế tiếp, HOẶC ngay lập tức nếu go đã được
                                    //   kích hoạt trong chính time step hiện tại
  task  wait_count(int k);          // trả về khi n_fired ≥ k (ngay lập tức nếu đã đủ)
endclass

Yêu cầu:

  • wait_go() gọi trong cùng time step với fire() phải trả về ở time step đó, bất kể bên nào chạy trước.
  • fire() ở một time step trước không tính: wait_go() phải chờ lần kích hoạt tiếp theo.
  • Mọi tiến trình đang chờ đều được giải phóng bởi cùng một lần fire().

Các case

  1. Chờ trước, kích hoạt saumẫu
  2. Kích hoạt và chờ trong cùng thời điểm (kích hoạt chạy trước)mẫu

Cùng 4 case ẩn kiểm các yêu cầu còn lại của đề. Case ẩn chỉ báo đúng/sai, không nói chi tiết: tự tìm chỗ sai từ đề, hoặc mở gợi ý.

Testbench có mô hình tham chiếu riêng, độc lập với lời giải mẫu. Lời giải mẫu đã chạy qua mọi case trên simulator thật, và 4 bản lỗi mẫu đều bị ít nhất một case bắt. Case mẫu sai sẽ cho biết chỗ sai đầu tiên (giá trị mong đợi so với giá trị nhận được); case ẩn chỉ báo đúng/sai.

Đang kết nối máy chấm…
Đang nạp bản nháp…

Tab để thụt lề. Nhấn Esc rồi Tab để rời trình soạn. Bản nháp tự lưu trong trình duyệt.

Gợi ý

Mỗi gợi ý mở trước khi AC giảm 10% điểm của đề.

Lời giải và phân tích

Lịch sử nộp bài

Chưa có lượt nào.

Độ khó: Vừa. Điểm gốc 40.