2015-01-29 11 views
5

Mi piacerebbe fare un debug di simulazione in Verilog e voglio aggiungere $display ad alcuni moduli ma voglio essere in grado di monitorare l'output fornito da un singolo modulo. Mi piacerebbe essere in grado di ottenere il nome con cui è stato istanziato il modulo corrente da aggiungere allo $display.C'è un modo per ottenere il nome con cui è stato istanziato un modulo Verilog?

Ad esempio:

module adder (...) 
    ... 
    $display($magic_instance_name, " ", in0, " + ", in1); 
    ... 

adder memory_address (...); 
adder fifo_nvals (...); 

E allora l'uscita sarà simile:

memory_address 100 + 8 
fifo_nvals 3 + 1 
... 

Un modo avrei potuto fare questo è quello di aggiungere un parametro instance_name ad ogni modulo. C'è un modo più semplice?

risposta

7

È possibile utilizzare %m per ottenere il percorso completo, compreso il nome dell'istanza unica:

module tb; 
    adder memory_address(); 
    adder fifo_nvals(); 
    initial #5 $finish; 
endmodule 

module adder; 
    initial $display(" hello from ... %m"); 
endmodule 

/* 

Prints: 

    hello from ... tb.memory_address 
    hello from ... tb.fifo_nvals 

*/ 
Problemi correlati