微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 菜鸟 求教modelsim一个testbench

菜鸟 求教modelsim一个testbench

时间:10-02 整理:3721RD 点击:
刚开始接触verilog,用modelsim仿真,编了一个程序adder,然后编写了一个testbench来调用adder 最后用$display显示出来最后的结果,我给了具体的输入,但是输出一直是x,为什么?贴上代码,轻喷。
module adder(a,b,cin,count,sum);
  input a,b,cin;
  output count,sum;
  reg count,sum;
  initial
   begin
    {count,sum}=a+b+cin;
   end
endmodule

testbench如下
module adder_tb;
   wire count,sum;
   reg a,b,cin;
   initial
   begin
   a=1'b1;
   b=1'b0;
   cin=1'b1;
end
adder adder1(a,b,cin,count,sum);
   initial
$display(count,sum);
endmodule

我想输出x的原因是不是因为verilog是并行执行的,调用的那个语句adder adder1(a,b,cin,count,sum);一开始在输入赋值之前就已经执行了,但是这时候输入值是不定的,所以他的输出总是x,我想把这个调用语句放在initial里面顺序执行,但是一放进去就报错,说是cant find checker,是不能放进去么?望指导。

我,给你个建议,先看一下简单verilog的书。因为我也不知道该咋跟你说,说实在的没见过你这样写加法器的。
肯定是错的。intial错了,还有所有reg变量应该给个初始值。

加法器里面用连续赋值语句。



        谢谢,我这就是照着书里面的例子来写的,赋值,最后加个延迟单位就搞定了。谢谢你的建议。



    初级自学阶段,先不去想这么多,我只想把这些基本的东西能跑出来 不出错就行。谢谢回复。

加法器里用initial是不能综合的



    如果我们记错的话,这段加法器写法为夏宇闻书上的,但是是错误的变种



    要明确verilog的并列执行,我觉得我说这一点你就能够自己分析出来原因了



    谢谢小编

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top