1)如果需要跟踪信号,可以使用dataflow,直观,缺点是后仿太慢!
http://www.cnblogs.com/asus119/archive/2011/04/01/2002525.html
ModelSim SE6..2b还有一个很好用的功能。就是可以看整个文件所形成的数据流程,各个模块之间的逻辑联系。具体方法是在仿真后执行命令 view datalflow 就可以打开dataflow文件,在dataflow的窗口菜单中点击add中的view all nets就可以观察到各个模块之间的逻辑联系,模块一般都为initial模块、always模块、assign模块等等。点击中一个模块,则这个模块变 为红色。这时候在view菜单下点击show wave就可以在窗口下方弹出wave窗口,不同的是这个wave窗口所显示的信号变量仅为点击中的模块所包括的信号变量,这时候也可以点击仿真run –all小图标来仿真有关这个模块的输入输出关系。
2)偶尔看到这个网页,介绍一些tips,感觉OK
http://wiki.fpganotes.com/doku.php/ise:sim:modelsim_tips
ModelSim Tips
Verilog FSM state name
Verilog写的状态机在仿真时状态名是数字。如果能使用状态名来调试就会方便许多。
使用virtual function。太长,方法请参考这里
ModelSim的系统设置
ModelSim的设置信息一个是modelsim.ini,另一个在注册表[HKEY_CURRENT_USER\Software\Model Technology Incorporated\ModelSim]路径下
如果要使用两个自己编译的库
众所周知,ModelSim PE/SE是要编译Xilinx库的。如果既想要ISE8.1的库,又想要ISE8.2的库,直接编译两次会使ModelSim的lib极其混乱。
解决方案就是,保留三个modelsim.ini文件,一个8.1的,一个8.2的,一个原始的。8.1的和8.2的很好理解,什么时候要用就复制到Modelsim安装目录下去;原始的为了以后还要编译别的版本而保留。
保存所有信号记录
log -r /*
可以将所有信号的翻转情况记录下来,如果需要在Wave窗口再添加信号,就不用restart,添加信号,然后再重新run了。
View VCD Files
Run command in ModelSim console:
vcd2wlf xx.vcd xx.wlf
Then use File –> Open to open the wlf file.
waveform compare
比较两个wlf文件。
Tools -> Waveform Compare -> Comparision Wizard
dataflow hierarchy
在dataflow窗口显示出某个信号所在的hierarchy。
Dataflow窗口 -> Tools -> Options -> Show Hierarchy
udo file
将某个添加了除顶层端口信号的wave的do文件保存下来,以便下一次开启时不用重新添加信号和restart。此方法是我觉得最简单的调试方法。
Wave窗口 -> File -> Save -> Format -> x.do
打开do文件并将有用的内容复制到ISE工程目录下的.udo文件中,以后每次做仿真都可以不用再添加信号了。
如果更改了源代码需要重新compile,也不需要将ModelSim关掉,只需要按向上键,执行一次xx.fdo或者xx.tdo文件即可,因为fdo和tdo文件都会自动调用udo。
Change Directory
改变当前目录,可以使用File菜单下的Change Directory,也可以在Transcript窗口中直接输入cd命令。
只不过cd命令不认windows中的反斜杠,会以为这是一个转义符。解决方法当然有很多,比如手动把所有的\都改成/。
更方便的方法是在这个用到\的路径两边加上花括号,比如:
cd {F:\Project}
ModelSim仿真结果不正确
如果仿真出现在某些机器上是正确的,某些机器上不正确,或者没有出现想象中的结果又没有找到错误所在,可以尝试关掉优化选项。即在vsim命令中加 -novopt 属性。 参考:AR24776,AR24293
常用快捷键
- F4: Wave缩小至全图
- F5: 缩小
- F6: 放大
- Ctrl + 鼠标左键按住后拖动 : 放大局部