在 verilog HDL 中的 post-route 仿真期间 $display 语法是否有效

Whether $display syntax works during post-route simulation in verilog HDL

我正在尝试在 post 路线模拟期间监控一个内部信号。

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

但是,在控制台中没有显示任何内容。

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

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

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

无论如何,我将采用粗略的方式将内部信号作为输出。但是,如果语法 $display 有效,我的生活会更轻松。

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

正如 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