我是 Verilog 的新手,但多年来一直是 C 程序员,这让我很危险。
我正在为一堂课做一些 Verilog。我想在我的模拟代码中使用 C assert() 样式测试。https://en.wikipedia.org/wiki/Assert.h
我们没有使用 System Verilog,所以没有我能找到的标准断言。我拼凑了以下宏。
`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)
据我所知,没有办法获得行号。因此,如果断言失败,我只会收到一条消息,无法链接回失败的位置。
assert failed 65535 != 65534
有没有办法获取当前行号?或者有没有更好的方法在 Verilog 中进行断言测试?
谢谢!