常见Modelsim仿真错误(持续更新)

一、语法错误

1、 Illegal output or inout port connection for "port 'out'"

 

提示是测试文件wallace_tb.v的“out"端口错误,出现这种情况原因是测试平台的输出端口要设定成wire类型,如图所示。

改正之后可以成功仿真

2、Error: (vsim-3036) Instantiation depth of '/wallace_mul_tb/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1/U1' is 75. Assuming recursive instantiation.

出现这种一连串U1/U1的原因是测试文件模块和例化被测试模块名相同了,如图所示

将测试模块名更改一下即可。

二、使用错误

1、点击run all 后发现既没有出结果,工具栏的run一行都变成灰色。如图所示

实际上时由于没有在测试代码里加入停止语句$stop或者$finish,在代码中加入即可。另外如果本身有$stop但再运行时仍然会发生这样的情况,可能是由于,你已经运行了一次,再次运行时,实际已经运行到$stop之后了。正确的做法是,更改代码之后,需要点击restart重新开始仿真。

如果没有$stop等结束类语句,点击run而不是run all 仍然可以正常运行。

2、Modelsim仿真丢失了提示,如编译之后,没有成功或失败的提示,但仿真能正常运行。

     同时,来其他软件联合Modelsim的功能失效,重新生成LICENSE却发现,dll文件运行一半直接退出。建议重新安装Modelsim,并破解成功,可以成功运行。

3、No data

出现这种问题通常情况是,创建工程,编译完开始仿真后,没有点击运行导致的,点击run按钮即可,可参考Modelsim基础仿真流程。

三、逻辑错误

1、Port size (8 or 8) does not match connection size (3) for port 'b'

出现这种问题的原因如果是在测试文件中,则是连接时位宽没有对应。

由于b是8位二测试代码中是3位所以报错位宽不匹配,准确的说是测试模块的wire型信号位宽小于设计模块b的位宽,因为当位宽大于设计模块的实际信号时,是不会报错的。

2、高位出现高阻态,但是低位值是正常的,如图所示

这种情况是由于,设计测试模块信号位宽小于设计模块中的信号。准确的说,是测试模块中的reg类型信号,也即我们手动赋值信号的位宽小于设计模块中的位宽。

已知a实际位宽为8位,将a位宽改为8位即可。

3、某些信号全部为高阻态,如图所示

这种情况常常出现于名字比较长的信号在例化时的拼写错误。如图所示

实际应该是b,而我们错误的拼写成了c,就会出现高阻。

4、在顶层模块调用时出现类似”tri-state“的三态错误,但自己设计时其他模块并没有inout类型的信号,则在调用后在顶层寄存一次即可。

注:由于一些其他错误需要在特定情况下才能复现,所以暂时无法列举完常见错误,会在之后的时间持续更新,如出现上述没有出现的问题可在评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值