$display语法在verilog HDL中进行路由后模拟时是否有效

$display语法在verilog HDL中进行路由后模拟时是否有效,verilog,verification,test-bench,Verilog,Verification,Test Bench,我试图在路线后模拟期间监控一个内部信号 所以我在verilog代码中使用了$display语法 然而,在控制台中没有显示任何内容 我在verilog代码中使用了以下语法 always @(negedge clk) begin $display("Decimal: %d", idatabuf); end 因此,我的问题是,$display语法是否不适用于后期路线模拟 无论如何,我要用一种粗糙的方法来获取内部信号作为输出。但是,如果语法$display起作用,我的生活会更轻松 No.$displ

我试图在路线后模拟期间监控一个内部信号

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

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

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

always @(negedge clk)
begin
$display("Decimal: %d", idatabuf); 
end
因此,我的问题是,
$display
语法是否不适用于后期路线模拟


无论如何,我要用一种粗糙的方法来获取内部信号作为输出。但是,如果语法
$display
起作用,我的生活会更轻松

No.$display不可合成,因此它仅在行为模拟中有效。
在合成过程中,所有不可合成的代码部分,如&和#,都会被忽略。

正如Laleh所说,
$display
是不可合成的。要想做你想做的事情,你应该在你的测试台上进行合成后,在你的信号上使用分层参考。e、 g.在测试台中,您可以添加:

always@* 
  $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

如果您要将这个
$display
添加到RTL,那么正如其他人所说,合成将删除它。不过,您应该能够将其添加到您的帖子布局网络列表中。