赞
踩
iverilog
是一个十分方便的,且 Win/Linux 都可以使用的 verilog 仿真器。但是它的语法要求很不严格,有时候用 iverilog 仿真通过的代码,换个仿真器就出现异常。
for
语句C语言中,for 循环经常会用到 i++
,这样的自增运算,但是 Verilog 不支持。问题是,iverilog 支持。一般其它仿真器会对这个问题报错。
$readmemh
语句在 iverilog 的仿真中,数据文件内容是:
@00
0x12345679
0xa1a2a3a4
0xb1b2b3b4
0xc1c2c3c4
0xd1d2d3d4
0xe1e2e3e4
0xf1f2f3f4
0x9C4A93CE
仿真结果正常。但是拿到 Modelsim 或者 QuestaSim 仿真,读出的数据全是x,即没有读出数据。仿真程序会报 Warning。把十六进制前缀0x
去掉就可以了。
run -all
自动退出图形界面因为以前做仿真,都是使用的 VCS,在 Testbench 里结束仿真用的是$finish
,同样的 Testbench 拿到ModelSim/QuestaSim,点击run -all
就会退出图形界面,这个问题一直没找到原因,因为没什么影响,所以也没有纠结。
最近看了不少项目的源码,发现大家用的都是$stop
,我意识到问题所在了,$finish
会结束整个仿真,那么仿真程序就会退出。因此,点击run -all
会退出图形界面,这是因为执行到了$finish
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。