ISE与Modelsim做时序仿真(不必约束管脚)

ISE虽然是入门级软件,没再更新了,但在小工程下我还是很乐意用的,速度快啊~
这篇是关于用ISE做时序仿真(也称门仿真,综合后仿真…)的相应步骤,希望能帮到你噢~~

明确:时序仿真所需要的文件:
1、综合布局布线生成的网络表文件;
2、TSET_BENCH文件
3、元器件库
4、综合布局布线生成的具有延时信息的SDF文件。

第一部分:ISE上获得网络表和SDF文件~

ISE上建立工程写RTL级代码、激励文件等操作,我就不写了~直接上精华!

首先,右击Synthesize-XST,选择Process-Properties,将-iobuf后面的√去掉(原因未知哈哈)。确定后再双击Synthesize-XST进行逻辑综合(将RTL级转化为与、或、非等网表格式)

ISE与Modelsim做时序仿真(不必约束管脚)

ISE与Modelsim做时序仿真(不必约束管脚)
第二步(最重要的!)

右击Implement-Design,选择Process-Properties ==> map Properties ,将√去掉(这样做就可以不用约束管脚了,否则就要约束管脚才能后仿真,太麻烦啦)。确定后再双击Implement-Design列表中的generate post-place & route simulation model~等时间就好啦!!

ISE与Modelsim做时序仿真(不必约束管脚)
这时候ISE中就生成了我们所需要的网表和延时文件了~

点击Simulationa,将behavior改成post-route,在tb文件下方双击simulate post-place & route model~就进入到modelsim中显示波形啦!!
ISE与Modelsim做时序仿真(不必约束管脚)
功能仿真VS时序仿真

功能仿真不包括门延迟和路径延迟,可以理解为理想状态的仿真,功能仿真只对TB激励文件进行仿真,这次代码是简单的cout=a+b,仿真如下:

ISE与Modelsim做时序仿真(不必约束管脚)
经过一顿瞎搞(正经)后,开始了时序仿真,结果出乎意外,延迟太长了。cout只有a=1,b=2(最后一组数据)的值了,之前的数据没了…
ISE与Modelsim做时序仿真(不必约束管脚)
鉴于上述情况不好分析,我把激励文件的时钟周期clk缩短了,再来!
ISE与Modelsim做时序仿真(不必约束管脚)
这下子就清晰啦!注意到红色的“X”表示不定态。
更详细的,从list中得到数据:
ISE与Modelsim做时序仿真(不必约束管脚)
其中左侧是时间,右侧第1,2,3,4列分别是clk,a,b,cout的值。在clk上升沿时,cout并没有立刻变化数值,还存在不定态,不定态的出现原因我还不清楚,下节课问老师了再补上~~

ISE与Modelsim做时序仿真(不必约束管脚)