[转帖]ModelSim+Synplify+Quartus的Altera FPGA的仿真与验证
来源:http://keendawn.blog.163.com/blog/static/88880743200981555632273/
这个人也喜欢海贼王,跟我一样哈,呵呵....
软件要求:ModelSimSE、SynplifyPro、QuartusII
适用人群:初学者
源代码:mux4_to_1.v
工作内容:
1、设计一个多路选择器,利用ModelSimSE做功能仿真;
2、利用SynplifyPro进行综合,生成xxx.vqm文件;
3、利用QuartusII导入xxx.vqm进行自动布局布线,并生成xxx.vo(Verilog
4、利用ModelSimSE做后仿真,看是否满足要求。
注:
1.仿真器(Simulator)是用来仿真电路的波形。
2.综合工具(Synthesizer)的功能是将HDL转换成由电路所组成的Netlist。
3.一般而言,在电路设计的仿真上可分为Pre-Sim和Post-Sim。Pre-Sim是针而Post-Sim则是针对综合过且做完成了AutoPlaceandRoute(APR)的电路进行仿真,以确保所设计的电路实现在FPGA上时,与Pre-Sim的功能一样。
1、前仿真(Pre-Sim)
步骤一:打开ModelSimSE,然后建立一个Project;
※建立Project的方式为点选File→New→Project…;
※设定ProjectName与Projectlocation,按OK即可建立Project。
步骤二:新增设计文档或加入文档。
※新增文档的方式为点选File→New→Source→Verilog,然后对文档进行编辑并储存为xxx.v;
※加入文档的方式为点选File→AddtoProject→File...,然后点选xxx.v;
步骤三:编译(Compile)。
※编译文档的方式为点选Compile→CompileAll,即可编译所有的文档。
※如果编译时发生错误,在显示错误的地方(红字)点两下,即可跳到错误。
步骤四:新增或加入测试平台(Testbench)。
※当设计完电路后,为了确定所设计的电路是否符合要求,我们会写一个测试平台(Testbench);
※新增或加入测试平台,然后编译它。
步骤五:仿真(Simulate)。
※仿真的方式为点选Simulate→Simulate…;
※打开Design里面的work,然后点选mux_4_to_1_tb并Add它,最后按Load即可跳到仿真窗口。
步骤六:加入信号线。
※在窗口上按右键,然后点选Add→AddtoWave;
步骤七:看波形。
※在工具列上按Run,然后就会显示波形;
※慢慢看波形吧,没有波形就没有真相!
以上就是使用ModelSim做Pre-Sim的基本流程,在此要特别强调的是,ModelSim所有的功能并不仅仅于此,如果你想要了解更多的话,一切都要靠自己花时间去问去试,只有努力的人才能有丰富的收获,加油!
2、综合(Synthesis)
步骤一:打开SynplifyPro,然后建立一个Project。
※先点选File,再点选New;
※选择ProjectFile,并设定FileName与FileLocation;
步骤二:加入设计文件。
※点选欲加入的xxx.v,然后按Add,再按OK后就可以将档案加入。
步骤三:选择FPGA的Device与其它相关设定。
※先点选Project,再点选ImplementationOptions。
※在Device的设定如下:Technology为AlteraStratix,Part为EP1S10,Speed为-6,Package为FC780。
※在Options的设定是将FSMCompiler与ResourceSharing打勾。
※在Constraints的设定是将Frequency设定至100Mhz。
※在ImplementationResults的设定是将ResultFileName填入与电路模块相同的名称,而xxx.vgm这个文件会在QuartusII做APR时被使用。然后将下列两个选项打勾(WriteVendorConstraintFile与WriteMappedVerilogNetlist)。
※在TimingReport的设定是将NumberofCriticalPaths与NumberofStart/EndPoints都设为11。
※在Verilog里是将TOPLevelModule填入与电路模块相同的名称,然后将UseVerilog2001打勾。
步骤四:综合(Synthesis)。
※点选RUN→Synthesize,最后出现Done!就是已经综合完毕。
步骤五:检查综合后的电路。
※先点选HDLAnalyst,再点选RTL,最后点选HierarchalView,画面会出现综合后的电路Netlist。
以上就是使用Synplify将HDL程序合成为电路Netlist的基本流程,值得注意的是,当你针对不同要求而设定的Constraints不同时,你就会得到不同的电路Netlist,所要付出的硬件代价也不同,这就需要大家多花点心思来了解其中的奥妙之处。
3、自动布局布线(APR)
步骤一:开启QuartusII,然后建立一个Project。
※先点选File,再点选NewProjectWizard…。
※设定WorkDirectory,ProjectName与Top-LevelEntityName,再按Next。
步骤二:加入设计文件。
※点选Add…,将Synplify合成出来的xxx.vqm加入,再按Next。
步骤三:设定相关的EDATools。
※在ToolType点选Simulation,ToolName点选ModelSim。
※点选Settings,将TimeScale设定为1ns。
步骤四:设定Family。
※设定Family为Stratix,再按Next。
步骤五:设定Device。
※设定Device为EP1S10F780C6,再按Finish,即可完成Project的设定。
步骤六:编译。
※点选Processing→StartCompilation,即可开始编译。
步骤七:完成编译。
※弹出下面窗口即代表编译完毕。
以上就是使用QuartusII对电路Netlist做APR的基本流程,并且利用设定仿真工具所产生的xxx.vo(VerilogOutputFile)与xxx.sdo(StandardDelayOutputFile)做后仿真。
4、后仿真(Post-Sim)
步骤一:启动ModelSim,然后建立一个Project。
※建立Project的方式为点选File→New→Project…。
※设定ProjectName与Projectlocation,按OK即可建立Project。
步骤二:加入设计文档。
※将xxx.vo更改为xxx.v,然后加入。
步骤三:加入组件库文件。
※由于我们是采用Altera的CellLibrary来合成电路,所以合成后的电Netlist里所包括的那些LogicGates与Flip-Flop都是出自于CellLibrary,所以
※我们所选用的Family是Stratix,所以到QuartusII edasim_lib里将Stratix的CellLibrary(stratix_atoms.v)加入。
步骤四:加入测试平台。
※加入Pre-Sim的测试平台,并在测试平台里加上`timescale1ns/100ps。
步骤五:编译。
※编译档案的方式为点选Compile→CompileAll,即可编译所有的档案。
※如果编译时发生错误,在显示错误的地方(红字)点两下,即可跳到错误。
步骤六:仿真。
※仿真文件的方式为点选Simulate→Simulate…。
步骤七:加入要观察的信号。
※在窗口上按右键,然后点选Add→AddtoWave。
步骤八:观察波形。
※慢慢看波形吧,没有波形就没有真相!
步骤九:比对Pre-Sim与Post-Sim。
※很明显地,Post-Sim的输出有不稳定的信号,并且受到延迟时间的影响。