gpt4 book ai didi

verilog - 在verilog中使用显示

转载 作者:行者123 更新时间:2023-12-04 23:18:35 26 4
gpt4 key购买 nike

我是 verilog 的新手,我知道它不是顺序语言。所以,我想问一下,有没有什么方法可以在模块执行后显示结果?因为显示应该总是在initial里面。 block ,因此我无法将显示用于调试目的。这是一个示例代码,可以更好地解释我的问题-

module A(a,b,c);
input a,b;
output c;

assign c=a&b;

initial
$display("%b",c);
endmodule

module testbench11;
reg a,b;
wire c;

A a1(a,b,c);

initial
$monitor(,$time,"a=%b,b=%b,c=%b",a,b,c);

initial
begin
#0 a=1'b0;b=1'b0;
#3 a=1'b0;b=1'b0;
#3 a=1'b0;b=1'b0;
end
endmodule

所以我想显示 c的结果在每次实例之后,以检查我是否获得所需的输出。在这种情况下,它似乎在最后显示结果,但在一些复杂的问题中我想使用 display就像我使用 printf 一样用于调试目的在C中。有什么方法可以在verilog中做到这一点吗?

最佳答案

Because display should always be inside initial block and so there is no way I can use display for debugging purposes.



我不知道你从哪里得到这个,它几乎和所有东西一样,除了 assign因为它必须在 block 内使用, intialalways .

要使用它在模块内部进行调试:
module A(a,b,c);
input a,b;
output c;

assign c = a&b;

always @*
$display("%b",c);
endmodule

最好从顶层显示和检查,保持模块代码干净。使用 display在 testench 中,您可以执行以下操作:

与模块内部相同的格式:
always @* begin
$display("%b",c);
end

或者要知道您在每个刺激步骤后显示:
initial begin
#0 a=1'b0;b=1'b0;
#1 $display("%b",c);

#3 a=1'b0;b=1'b0;
#1 $display("%b",c);

#3 a=1'b0;b=1'b0;
#1 $display("%b",c);
end

关于verilog - 在verilog中使用显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33653121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com