文章来源:
http://bbs.ednchina.com/BLOG_ARTICLE_271038.HTM
一、前仿真
也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。
二、后仿真
也就是综合后的功能仿真和布局布线后的时序仿真。是指电路已经映射到特定的工艺环境下,综合考虑电路的路径延迟与门延迟的影响,验证电路是否在一定时序条件下满足设计构想的过程,是否存在时序违规。(必做)
三、实例
实现在QII中利用原理图输入法设计一个移位寄存器,命名为lpm_shift,并以lpm_shift.v为顶层文件输出,再写一个名为top_tb.v的testbench文件。
(一)纯粹的功能仿真
进行功能仿真必须的输入文件有:HDL文件;Testbench文件;仿真原型文件(此时添加)或者预编译库文件(仿真后制定)。
1、modelsim se--file--project,输入工程么为func_test,指定工程保存路径为...\func。在文件夹下又建立了source的文件夹专门用来存放输入文件。
2、将lpm_shift.v 和testbench.v拷贝到...\func\source里。
3、add existing file添加source下的文件及仿真原型文件220model.v。
4、在workspace里面选一个文件右键compile-->compile all。
5、启动仿真器,指定顶层设计单元。simulate-->start simulation... 。展开work库,指定testbench确定。
6、查看波形 view-->debug window-->wave,将要观察的信号拖入窗口(或者右击信号add-->add to wave)。
7、在transcript中运行:run 1 ms。查看结果,放大后发现完全没有延时。
(二)综合后功能仿真
进行综合后功能仿真必须的输入文件有:在QII中生成的网表文件;Testbench文件;仿真原型文件(此时添加)或者预编译库文件(仿真后制定)。
1、新建一个工程,将路径保存到...\simulation\psyth,命名为psyth_test。
2、添加所需输入文件到工程(同上)。
在QII中生成网表的方法:device-->eda tools settings-->simulation对话框,toolname:modelsim;output directery:...\psyth\source。
more settings-->generate netlist for functional simulation only--->on,点OK保存,进行全编译。检查...\psyth\source,发现生成一个*.vo文件(网表文件)。(VHDL的输出网表文件时*.vho后缀)
3、Testbench文件继续用top_tb.v。库文件在start simulation对话框下的libraries添加cycloneii_ver
4、查看波形
(三)布局布线后时序仿真
进行布局布线后时序仿真必须的输入文件有:在QII中生成的布局布线后网表文件;延时文件*_v.sdo(verilog)或*_vhd.sdo(vhdl);Testbench文件;仿真原型文件(此时添加)或者预编译库文件(仿真后制定)。
在QII中生成布局布线后网表的方法:重新把generate netlist for functional simulation only改回off。全编译后除了生成网表文件以为还会生成标准延时文件SDF文件。
与综合后功能仿真的不同时需要制定延时文件start simulation\sdf添加*_v.sdo。再选中*_v.sdo点modify....指定apply to region里面,还要写testbench里的例化顶层文件