Vừa

uvm_object: do_copy, do_compare, convert2string

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

uvmuvm-objectdo-copydo-compareclone

Trong UVM, transaction kế thừa uvm_object và dùng chung bộ phương thức chuẩn: copy(), clone(), compare(), convert2string(). Bạn không ghi đè copy/compare, mà cài các hook do_copy và do_compare. UVM gọi hook của bạn từ bên trong các phương thức chuẩn đó.

Viết class bus_txn extends uvm_sequence_item:

Thành phần Yêu cầu
Kiểu đi kèm typedef enum bit [1:0] {READ, WRITE, IDLE} kind_e; khai báo ngay trong code của bạn (ngoài class)
Trường kind_e kind; bit [31:0] addr; byte unsigned data[];
Đăng ký `uvm_object_utils(bus_txn), function new(string name = "bus_txn")
do_copy(uvm_object rhs) chép kind, addr, data (độc lập: sửa bản sao không đổi bản gốc)
do_compare(uvm_object rhs, uvm_comparer comparer) 1 khi kind, addr và data (độ dài và từng byte) đều bằng
convert2string() đúng định dạng "<KIND> addr=0x<8 chữ số hex> len=<n>", ví dụ "WRITE addr=0x0000abcd len=3" (hex chữ thường)

Testbench dùng các phương thức chuẩn của UVM:

bus_txn a = bus_txn::type_id::create("a"), b;
$cast(b, a.clone());     // gọi do_copy của bạn
b.compare(a);            // gọi do_compare của bạn

Code của bạn được đặt trong một package đã import sẵn uvm_pkg::* và uvm_macros.svh. Chỉ viết class (và typedef).

Đề này cần máy chấm có engine UVM. Một lượt chấm đề UVM lâu hơn đề thường (từ vài giây tới vài phút) vì phải biên dịch cùng testbench UVM.

Các case

  1. copy() chép đủ mọi trườngmẫu
  2. compare() bằng nhau và khác nhau ở addrmẫ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à 3 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.