Sono nuovo di Verilog ma sono stato un programmatore C per anni che mi rende pericoloso.C'è qualcosa come __LINE__ in Verilog?
Sto facendo un po 'di Verilog per una lezione. Mi piacerebbe usare il test di stile C assert() nel mio codice di simulazione. https://en.wikipedia.org/wiki/Assert.h
Non stiamo utilizzando System Verilog in modo che non ci sia un asserzione standard che potrei trovare. Ho messo insieme la seguente macro.
`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)
Per quanto posso dire, non c'è modo di ottenere un numero di linea. Quindi, se l'asserzione fallisce, ricevo solo un messaggio senza alcun modo per ricollegarlo al luogo dell'errore.
assert failed 65535 != 65534
C'è un modo per ottenere il numero di linea corrente? O c'è un modo migliore per fare un test di asserzione in Verilog?
Grazie!
'__LINE__ è stato introdotto in SystemVerilog. – toolic
SystemVerilog ha anche il supporto nativo per le asserzioni. –
Icarus Verilog supporta le macro '__LINE__' e' __FILE__' dopo iverilog versione 1.0 vedere il caso di test [ivltests/fileline.v] (https://github.com/steveicarus/ivtest/blob/master/ivltests/fileline.v) per utilizzo – shuckc