2017-02-23 39 views
0

我試圖在路由後模擬期間監視一個內部信號。

所以我在Verilog代碼中使用了$display語法。

但是,在控制檯中沒有任何顯示。

我用Verilog代碼中的語法如下

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

所以我的問題是,是否$display語法佈線後仿真不起作用?

無論如何,我正在採取粗暴的方式獲取內部信號作爲輸出。但是,如果語法$display有效,我的生活會更容易。

+0

如果您將此$ $ display添加到您的RTL中,則正如其他人所說的那樣,合成將會將其刪除。不過,您應該可以將其添加到您的佈局後網表中。 –

回答

0

編號$顯示不可合成,因此它只適用於行爲模擬。 在合成過程中,所有不可合成的代碼部分(如&和#)都將被忽略。

0

正如Laleh所說,$display是不可合成的。要做你想做的事情,你應該在你的測試平臺中合成後在你的信號上使用分級參考。例如在您的測試平臺,您可以添加:

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

應該在每次改變時間打印idatabuf。如果要監控的信號是內部信號而不是分層模塊的引腳,綜合工具往往會簡化邏輯優化。如果你想監視這樣一個信號,你應該綁定驅動黑盒子輸入。在Synopsys工具中,製作黑盒的最簡單方法是創建一個空模塊。

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