在 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
我正在尝试在 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