在verilog HDL中的路径后模拟期间$ display语法是否有效

时间:2017-02-23 06:55:46

标签: verilog verification test-bench

我正试图在路线后模拟过程中监控一个内部信号。

所以我在verilog代码中使用了 $display 语法。

然而,在控制台中没有显示任何内容。

我在我的verilog代码中使用了以下语法

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

所以我的问题是 $display 语法是否不适用于路径后模拟?

无论如何,我将粗略地将内部信号作为输出。但是,如果语法 $display 有效,我的生活会更容易。

2 个答案:

答案 0 :(得分:0)

没有。 $ display不可合成,因此它仅适用于行为模拟。 所有不可合成的代码部分,例如&在合成过程中忽略#。

答案 1 :(得分:0)

正如Laleh所说,$display不可合成。要做你想做的事,你应该在你的测试平台中使用合成后的信号分层参考。例如在您的测试平台中,您可以添加:

always@* 
  $display("Decimal: %d", u_top.u_mymod.idatabuf);`

每次更改时都应打印idatabuf

N.B。:如果您要监控的信号是内部信号而不是分层模块的引脚,则综合工具倾向于简化逻辑优化。如果要监视此类信号,则应绑定以驱动黑盒输入。在Synopsys工具中,制作黑盒子的最简单方法是创建一个空模块。

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