Logic, bit và int: đừng làm mất X trước khi checker nhìn thấy
Tiên quyết
Sau bài này bạn sẽ
- Chọn kiểu theo miền giá trị, width và signedness thay vì tên quen thuộc
- Dự đoán default và conversion X/Z giữa kiểu2-state/4-state
- Bảo toàn thông tin unknown ở đường vào scoreboard trước khi so sánh
Kiểu dữ liệu là một phần của checker
DUT chưa reset và trả một bit X. Nếu monitor lập tức chép nó vào bit, checker phía sau chỉ thấy 0 và có thể chấp nhận một giao dịch hỏng. Không có phép so sánh thông minh nào khôi phục được thông tin đã mất. Bài phân biệt ba câu hỏi độc lập: có giữ X/Z không, bao nhiêu bit, và diễn giải signed hay unsigned.
Hai trạng thái và bốn trạng thái
bit, byte, shortint, int và longint là kiểu 2-state; logic và integer là 4-state trong phạm vi đang xét. Chuyển từng bit X/Z sang 2-state làm nó thành 0, không tạo báo lỗi runtime mặc định. Trong ví dụ four=01xz, bit 4 nhận 0100; integer giữ low 4 là 01xz. Logic không có nghĩa là một mức điện áp vật lý X, mà là miền giá trị của mô hình số. [1]
Width và signedness không đi cùng số trạng thái
byte 8/shortint 16/int 32/longint 64 đều signed mặc định; bit và vector logic không khai signed là unsigned. integer có 32 bit và signed. Bởi vậy byte và logic[7: 0] đều chứa tám bit nhưng khi cùng có pattern ff, mở rộng sang int lần lượt ra-1 và 255. Đừng dùng độ rộng C int của máy host để suy đoán SystemVerilog int.
Zero ban đầu không phải bằng chứng reset đúng
Biến 2-state chưa gán của TB bắt đầu 0, còn integer/logic chưa gán mangX trong mô phỏng đã kiểm. Điều đó không hứa flop thật có power-up value ấy. Nếu reset checker dùng 2-state, việc thấy 0 trước reset có thể chỉ là default hoặc conversion. Kiểm reset theo clock/contract của DUT và giữ dữ liệu quan sát ở 4-state khi unknown là lỗi cần bắt.
256 pattern và 240 pattern chứa unknown
Một nibble có bốn lựa chọn 0/1/X/Z cho mỗi bit, nên có 4^4=256 pattern. Chỉ 2^4=16 pattern hoàn toàn nhị phân;240 pattern còn lại chứaX/Z. TB dùng index base 4 để sinh giá trị và oracle độc lập chỉ đặt bit 1 cho chữ số 1. Nó kiểm bit/int nhận giá trị coerced, integer giữ nguyên low 4 và phần mở rộng 0 vì source unsigned.
Kiểm unknown trước khi đổi kiểu
Nếu interface cho phép X/Z trong giai đoạn chưa hợp lệ, monitor phải tách valid và data theo contract. Khi valid đã được chấp nhận và data bắt buộc nhị phân, kiểm unknown trên mẫu 4-state rồi mới chuyển sang transaction 2-state. Không tự sửa DUT bằng cách ép X về 0, cũng không kết luận mọi field của transaction đều cần 4-state nếu chỉ là số đếm do TB tự tạo.
Logic không tự giải quyết ownership
logic là data type; net/variable và quyền drive còn phụ thuộc declaration và ngữ cảnh port. Nó không biến hai procedural writer thành một thiết kế đúng, và không thay resolved net cho đường nhiều driver cần resolution. Quy tắc port, writer và resolution phải đối chiếu LRM/flow cụ thể; thí nghiệm này chỉ kiểm integral values, không claim bao phủ các luật ấy. [2]
Kiểm default, conversion và mở rộng dấu
Expected tính trước: 5 biến 2-state default 0; integer/logic defaultX;256 ca với 240 unknown; byteff→-1 còn unsignedff→255.
Icarus 4-state thực thi checker trên mọi pattern. Không dùng một simulator 2-state để kết luận X đã được giữ. [3]
Tự kiểm tra
Chọn kiểu ở biên quan sát trước
Vẽ đường DUT signal→monitor sample→transaction→scoreboard. Đánh dấu điểm nào có thể làm mất unknown, truncate hoặc mở rộng dấu. Chọn kiểu và assertion tại đúng biên ấy; kết quả 0 sau conversion không chứng minh nguồn là 0. Bài giữ draft/LRM needs-spec-check.
Nguồn và mức độ đối chiếu
- SystemVerilog bit, byte and int — bản chụp resources.zip, Integral types. Trích dẫn; nguồn đã đọc các mục liên quan.
- IEEE 1800-2023 SystemVerilog LRM, Phạm vi chưa đối chiếu. Chưa đối chiếu với văn bản nguồn (chưa mở).
- Thí nghiệm nguyên bản ex.b1.logic, Source và assertions. Trích dẫn; nguồn đã đọc toàn văn.
- IEEE 1800-2023 SystemVerilog LRM, logic types, assignment and conversion semantics. Chưa đối chiếu với văn bản nguồn (chưa mở).
- Thí nghiệm nguyên bản ex.b1.logic, Source, self-checks, metadata và verification.json. Trích dẫn; nguồn đã đọc toàn văn.
- IEEE 1800-2023 SystemVerilog LRM, logic type and conversion semantics. Chưa đối chiếu với văn bản nguồn (chưa mở).
- SystemVerilog bit, byte and int — bản chụp resources.zip, 2-State Data Types; bit; byte; shortint; int; longint. Trích dẫn; nguồn đã đọc các mục liên quan.