http://cpld-fpga.spaces.live.com/blog/cns!703E7ADBB8F98B40!336.entry
仿真验证是CPLD/FPGA设计中的重要一环,QuartusII软件本身带有仿真功能,但是无法使用testbench,而且功能相对简单,对于复杂的设计,画波形图显然不是明智的选择,一般选择Mentor Graphics Corporation的modelsim作为仿真工具。
仿真一般分为功能仿真,前仿真与后仿真。根据设计需要,编写完代码(Verilog hdl,Vhdl,system Verilog )后,首先进行功能仿真,验证所写代码是否能完成设计功能;前仿真又称为综合后仿真,即在QuartusII完成综合后,验证设计的功能;后仿真又称为时序仿真活布局布线后仿真,是加入延时后的仿真。对于编译时间较短的小规模设计,一般只进行功能仿真与后仿真。
modelsim有很多版本,ae,pe,le,xe,se等,其中se功能最为强大,见下图:
其中ae版本是altera的定制版本,已经包含了altera元器件的编译库,对于altera公司的器件仿真,使用比较简单。
下面以一个设计实例介绍modelsim的仿真过程,工具版本:QuartusII8.1,Modelsim Altera6.1g p1,设计语言使用verilog。
NativeLink 技术在 Quartus II 软件和其它 EDA 工具之间无缝地传送信息,并允许在 Quartus II 软件中自动运行 EDA 工具,所以有两种方式进行QuartusII 与 modelsim的联合设计仿真:QuartusII 软件直接调用modelsim仿真,这种方式步骤简单,但是不方便调试;QuartusII产生modelsim仿真所需要的.vo,.sdo文件,运用modelsim仿真,这种方式比较麻烦,但是便于调试过程中程序,testbench的更改,一般推荐采用这种方式。
1. QuartusII 软件直接调用modelsim仿真
设置NativeLink
1). QuartusII工具栏,Tools->Options
2). 选择EDA Tool Options
3). 指定Modelsim-Altera的路径,例如:c:\<ModelSim-Altera installation path>\win32aloem (此时如果装在D盘下,会出错,暂时还未解决,不知为何)
4). OK
进行RTL仿真
1). QuartusII工具栏,Assignments->EDA Tool Settings->Setting->Simulation
2). Tool name 选择 Modelsim-Altera,选择 Run gate-level simulation automatically compilation,语言选择Verilog
3). More Setting,Generate netlist for funtion simulation only 设置为ON 或者OFF,如果进行Function simulation,则选择ON,如果是Timing Simulation则选择OFF。
4). 设置testbench
(1). 前提是已经编辑好了testbench文件,注意QuartusII中testbench文件的后缀是.vt,这个的模板可以通过Start->Start Test Bench Template Writer实现,产生的模板文件只是包含了端口映射,端口声明等,具体的功能还是需要设计者自己编写。
(2). 选择Compile test bench,设置testbench的路径及名称等
(3). OK
设置完成,现在进行全编译或者EDA RTL Simulation就可以完成功能仿真,运行全编译就可以完成时序仿真,具体是功能还是时序仿真取决于Generate netlist for funtion simulation only 的设置。
功能仿真,无延迟信息
时序仿真,加入布局布线延迟
需要注意的是,对于这种方式,只有结束了仿真,才算完成了一次全编译过程。
2. modelsim单独完成仿真
由于这篇文章是基于Altera-Modelsim的,Altera工具库已经编译好了,这里不再赘述Modelsim SE如何编译Altera工具库,网络上有很多这方面的文章,不过还是推荐参考QuartusII手册,因为网络上的版本众多,有很多内容陈旧,甚至包含错误。
下面的图表示了基于ModelSim-Altera and Quartus II Software的设计流程,其中的综合后仿真我们不进行。
1). 功能仿真
在Modelsim中进行功能仿真需要testbench(.v)、设计文件(.v)与功能仿真库,对于前两者没有什么特别的,关键是功能仿真库。普通的设计,只是需要testbench与设计文件,不需要设置仿真库等。使用LPM(Library Parameterized Modules)的设计,需要加载lpm Simulation Models(220model.v,for Verilog HDL:<ModelSim-Altera installation directory>\altera\<HDL>\220model\);使用Altera megafunctions的设计,需要加载Altera Megafunction Simulation Models(altera_mf.v,for Verilog HDL:<ModelSim-Altera installation directory>\Altera\<HDL>\altera_mf\),而对于下面的Altera megafunctions还需要atom libraries:
■ altclkbuf
■ altclkctrl
■ altdqs
■ altdq
■ altddio_in
■ altddio_out
■ altddio_bidir
■ altufm_none
■ altufm_parallel
■ altufm_spi
■ altmemmult
■ altremote_updateatom library位置:<Quartus II installation directory>/eda/sim_lib
使用Low-Level Primitive Simulation Models的设计,需要加载altera_primitives.v(for Verilog HDL:<ModelSim-Altera installation directory>\altera\<HDL>\altera)。
功能仿真流程:
(1). 新建一个Project,设置工程名称,路径等;
(2). 添加设计文件与testbench;
(3). 全编译;
(4). 装载文件,点击Simulate->Simulate…,选定顶层文件(testbench),根据设计选择需要加载的库文件;
(5). 仿真,观察波形。
2). 时序仿真
时序仿真中需要用到.vo与.sdo文件,这两个文件需要设置QuartusII软件的Simulation选项,可以参考QuartusII 软件直接调用modelsim仿真,注意设置时,不要选择Run gate-level simulation automatically compilation。对于Altera-Modelsim,仿真库已经编译好了,时序仿真的仿真库位于<ModelSim-Altera installation directory>\altera\verilog\,然后根据使用的不同device选择不同的仿真库。
时序仿真流程:
(1). 新建一个Project,设置工程名称,路径等;
(2). 添加.vo与testbench;
(3). 全编译;
(4). 装载文件,点击Simulate->Simulate…,选定顶层文件(testbench),选择时序仿真库,加载sdo文件;
(5). 仿真,观察波形。
相关链接:http://hi.baidu.com/acai2556/blog/item/0b8f200749c506c47b89478a.html
文章评论(0条评论)
登录后参与讨论