Я новичок в 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?
Спасибо!
__LINE__
и__FILE__
после версии iverilog 1.0, см. тестовый пример ivltests/ fileline.v для использования - person shuckc   schedule 04.04.2013