首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Verilog) Testbench等待

(Verilog) Testbench等待
EN

Stack Overflow用户
提问于 2018-02-14 17:15:22
回答 1查看 3.5K关注 0票数 0

我在为我的加法器创建一个测试台时遇到了问题。当我启动testbench时,它将指定初始启动时间为t1、输入ab,而当cout为1时,它将将最后时间设置为t2。最后,延迟是t2t1的减法。

问题主要是语法错误。

到目前为止,这是我的代码:

代码语言:javascript
复制
parameter N = 16;
parameter A = 0;

reg[N-1:0] a, b;
wire[N-1:0] sum;
reg cin;
wire cout;

arith_unit #(.ADDER_TYPE(A), .WIDTH(N)) tb (.a(a),.b(b),.cin(cin),.sum(sum),.cout(cout));
initial begin
a = 0;
b = 0;
cin = 0;
#50;


$time(t1);

a = 16'b0010110110100010;
b = 16'b1011111101100111; 
cin = 1'b0;

wait (if (cout == 1)) $time(t2); <-------sytax error here

int delay = t2 - t1; <-------sytax error here

$display ("%d", delay);
end
endmodule

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-02-14 17:42:53

  • wait (if (cout == 1))应该是wait (cout == 1)
  • int在Verilog中不作为变量类型存在(它在SystemVerilog中存在)。我想你想要integertime。还请注意,变量不能简单地在任何地方创建。在Verilog中,它需要使用regwire声明来声明。
  • $time不接受争论。使用t1 = $time;
  • 没有声明t1t2。也许是integer或者time

除非arith_unit内部有一些延迟,否则延迟将为0。如果有延迟,您可能需要再次检查cout是否没有故障,因为wait无法区分故障和稳定信号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48792812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档