前言
有备份习惯的人都会在遇到一些问题时,把备份前后的内容进行比较,用以了解改动的地方是否为该问题的导致因素。
在仿真上,除了比较仿真激励代码外,直接比较仿真结果也是一种需要。
~Show Time~
创建参考源
先准备创建一个用于比较的参考源,相应使用的参考代码文末获取,Modelsim进入相应的路径
cd e:/Soft_File/Sim_File/compare
接着编译,并添加仿真信号至窗口显示,并同步将仿真结果存在“gold.wlf” 的文件中
vlib work
vlog *.v
vsim -wlf gold.wlf test_sm
add wave *
run 750 ns
运行完之后直接退出即可,准备创建测试源2
quit -sim
产生测试源
更改test_sm.v的文件内容,原本的’hbb换成’hac
保存好代码后,重新在Modelsim内编译
vlog test_sm.v
vsim test_sm
add wave *
run 750 ns
这个源就不用保存了,在仿真的界面准备导入刚刚存好的glod.wlf进行比较即可。
比较差异
在工具栏找比较的向导,Tools > Waveform Compare > Comparison Wizard
出现的界面选好参考源,默认采用当前仿真的测试源进行比较,也可以自行指定测试源;
点Next,在该界面选择要比较的形式,可以是全部信号,也可以是顶层端口,或者自定义,这时注意看窗口,会发现多了gold以及cmpare;
选第一个“Compare All Signals”后,Next,可以看到Wave窗口添加了比较的信号,此时图标颜色也明显做了黄蓝的区分
再Next,出现比较的按钮,点击Compute…,Wave界面的信号会出现红色的信息,即波形差异结果,点击Finish关掉向导窗口,准备后面的观察。
结果查看
找到第一个红色区,然后点击比较结果旁边的“+”,把信号展开,相应的时序差异一目了然
其他区域同样的操作可查看对比结果,在工具栏有这几个跳转的图标,可以自己体验下…..(选中某行的对比信号,然后按Tab键或者Shift+Tab键个人感觉好用些)
除了看波形外,还可以直接看数据,工具栏View > List
这时候List界面是空的,需要将compare界面的test_sm拖到List中显示
拖动滚轴,差异的地方会是高亮黄色,点对应的变量,相应列会高亮绿色;
保存结果
可以将比较的结果以报告的形式保存,Tools > Waveform Compare > Differences > Write Report
默认以compare.txt的文件存于当前运行路径下
还可以保存比较的差异与规则,后面直接调用即可进行相同的比较操作;
先保存差异信息,Tools > Waveform Compare > Difference > Save ,默认以compare.dif的文件存于当前运行路径下
再保存对应的比较规则,Tools > Waveform Compare > Rules > Save ,默认以compare.rul的文件存于当前运行路径下
然后就可以关闭比较界面,Tools > Waveform Compare > End Comparison ,准备重载结果查看下操作了。
重载结果
此时的gold源是已经关掉了,因而重载前需要再将该文件打开
接着就可以正式重载结果了,Tools > Waveform Compare > Reload
默认已经填好了上边存好的两个文件,点OK即可重现刚刚的结果~
退出所有操作….
quit -sim
#附注:可以命令关闭gold源文件
dataset close gold
结束
本篇到此结束,关于ModelSim的仿真之路也到此结束,拖着写,也终于结束了该工具的总体使用,接下来就是你们自行发挥各种组合操作了!
没有回复内容