0

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

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

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

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

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

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

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

4

2 回答 2

0

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

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
于 2017-02-23T08:29:00.210 回答
0

不,$display 是不可合成的,所以它只适用于行为模拟。在综合过程中忽略所有不可综合的代码部分,例如 & 和 #。

于 2017-02-23T07:16:14.037 回答