Tôi mới đến Verilog nhưng đã là một lập trình viên C trong nhiều năm khiến tôi trở nên nguy hiểm.Có điều gì đó giống như __LINE__ trong Verilog không?
Tôi đang làm một số Verilog cho một lớp học. Tôi muốn sử dụng C assert() thử nghiệm phong cách trong mã mô phỏng của tôi. https://en.wikipedia.org/wiki/Assert.h
Chúng tôi hiện không sử dụng Hệ thống Verilog để không có xác nhận chuẩn nào mà tôi có thể tìm thấy. Tôi đã cobbled với nhau vĩ mô sau đây.
`define ASSERT_EQUALS(x,y) \
repeat(1)\
begin\
if((x) != (y)) \
begin\
$write("assert failed %d != %d\n", (x), (y));\
$finish;\
end\
end
// test the assert(should fail)
`ASSERT_EQUALS(t_data_in,16'hfffe)
Theo tôi có thể nói không có cách nào để lấy số dòng. Vì vậy, nếu xác nhận không thành công, tôi chỉ nhận được một tin nhắn không có cách nào để liên kết lại với vị trí của sự thất bại.
assert failed 65535 != 65534
Có cách nào để lấy số dòng hiện tại không? Hoặc là có một cách tốt hơn để làm một thử nghiệm khẳng định trong Verilog?
Cảm ơn!
'__LINE__ được giới thiệu trong SystemVerilog. – toolic
SystemVerilog cũng có hỗ trợ gốc cho các xác nhận. –
Icarus Verilog hỗ trợ các macro '__LINE__' và' __FILE__' sau phiên bản iverilog 1.0 xem trường hợp kiểm tra [ivltests/fileline.v] (https://github.com/steveicarus/ivtest/blob/master/ivltests/fileline.v) cho sử dụng – shuckc