2017-02-23 2 views
0

Ich versuche, ein internes Signal während der Simulation nach der Route zu überwachen.

Also ich $display Syntax innerhalb der Verilog-Code verwendet.

In der Konsole wird jedoch nichts angezeigt.

ich die folgende Syntax in meinem Verilog-Code verwendet

always @(negedge clk) 
begin 
$display("Decimal: %d", idatabuf); 
end 

Also meine Frage ist, ob die $display Syntax nicht für Postroutensimulation funktioniert?

Wie auch immer, ich gehe den rohen Weg, um das interne Signal als Ausgang zu bekommen. Aber wenn die Syntax funktioniert, wäre mein Leben einfacher.

+0

Wenn Sie diese '$ Anzeige' zu Ihrer RTL hinzufügen, dann wird sie, wie die anderen gesagt haben, durch die Synthese entfernt. Sie sollten es jedoch zu Ihrer Post-Layout-Netzliste hinzufügen können. –

Antwort

0

Nein. Die $ -Anzeige ist nicht synthetisierbar und funktioniert nur in der Verhaltenssimulation. Alle nicht synthetisierbaren Teile des Codes wie & und # werden während des Synthesevorgangs ignoriert.

0

Wie Laleh sagte, $display ist nicht synthetisierbar. Um das zu tun, was Sie wollen, sollten Sie einen hierarchischen Bezug auf Ihr Signal nach der Synthese in Ihrer Testbench verwenden. z.B. In der Testbench können Sie hinzufügen:

[email protected]* 
    $display("Decimal: %d", u_top.u_mymod.idatabuf);` 

Es idatabuf drucken sollte jedes Mal ändert.

N.B .: Wenn das Signal, das Sie überwachen möchten, ein internes Signal und kein Pin eines hierarchischen Moduls ist, vereinfachen sich Synthesizer-Tools zur logischen Optimierung. Wenn Sie ein solches Signal überwachen möchten, sollten Sie eine Blackbox-Eingabe durchführen. In Synopsys-Tools besteht die einfachste Möglichkeit, eine Blackbox zu erstellen, darin, ein leeres Modul zu erstellen.

module BlackBox (I,O); 
    parameter SIZE=1; 
    input [SIZE-1:0] I; 
    output[SIZE-1:0] O; 
endmodule 
Verwandte Themen