Vừa

Class tham số hoá theo kiểu: hàng đợi có giới hạn bounded_q #(T, N)

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

parameterized-classstaticqueueoopsystemverilog

Class tham số hoá (parameterized class) là nền của UVM. uvm_sequencer #(REQ), uvm_analysis_port #(T), uvm_tlm_fifo #(T) đều được viết một lần rồi dùng cho mọi kiểu giao dịch. Bài này viết một hàng đợi có giới hạn, chạy được với bất kỳ kiểu nào, và kiểm một điểm hay bị hỏi trong phỏng vấn: biến static của class tham số hoá thuộc về ai.

class bounded_q #(type T = int, int N = 4);
  static int created;                    // số đối tượng đã tạo CỦA PHIÊN BẢN THAM SỐ NÀY
  int drops;                             // số lần try_put thất bại vì đầy

  function new();                        // tăng created
  function bit try_put(T v);             // đầy (đã có N phần tử): trả 0, drops++; ngược lại thêm vào cuối, trả 1
  function bit try_get(output T v);      // rỗng: trả 0, v = giá trị mặc định của T; ngược lại lấy phần tử đầu
  function bit peek(output T v);         // như try_get nhưng không lấy ra
  function int size();
  function bit is_full();
endclass

Testbench dùng nhiều phiên bản cùng lúc:

bounded_q #(int, 4)    a;     // giống hệt bounded_q (tham số mặc định)
bounded_q #(string, 2) b;
bounded_q #(int, 1)    c;     // phiên bản khác: N khác

Giá trị mặc định của int là 0, của string là "".

Các case

  1. int, N = 4: đúng thứ tự FIFOmẫu
  2. string, N = 2mẫu

Cùng 5 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.