在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 2466|回复: 8

[求助] 菜鸟 求教modelsim一个testbench

[复制链接]
发表于 2013-10-24 05:18:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
刚开始接触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,是不能放进去么?望指导。。。
发表于 2013-10-24 07:03:30 | 显示全部楼层
我,给你个建议,先看一下简单verilog的书。因为我也不知道该咋跟你说,说实在的没见过你这样写加法器的。
肯定是错的。intial错了,还有所有reg变量应该给个初始值。
回复 支持 反对

使用道具 举报

发表于 2013-10-24 08:55:53 | 显示全部楼层
加法器里面用连续赋值语句。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-24 14:13:41 | 显示全部楼层
回复 2# chen851112


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

使用道具 举报

 楼主| 发表于 2013-10-24 14:15:10 | 显示全部楼层
回复 3# HADIST


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

使用道具 举报

发表于 2013-10-25 09:17:36 | 显示全部楼层
加法器里用initial是不能综合的
回复 支持 反对

使用道具 举报

发表于 2013-10-25 17:18:57 | 显示全部楼层
本帖最后由 zhuyi1234567899 于 2013-10-25 17:24 编辑

回复 2# chen851112


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

使用道具 举报

发表于 2013-10-25 17:20:25 | 显示全部楼层
回复 1# asu2011


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

使用道具 举报

 楼主| 发表于 2013-10-29 05:22:07 | 显示全部楼层
回复 8# zhuyi1234567899


    谢谢斑竹
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-11 07:27 , Processed in 0.116009 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表