您好,欢迎访问三七文档
第十章EDA设计的仿真和测试主要内容•对仿真的概念进行了简单说明•以Modelsim6.3se版本为例,重点介绍了Modelsim软件的使用方法。10.1仿真简介•仿真是指在软件环境下,验证电路的行为和设计意图是否一致。•简化的仿真验证系统框图如下:TestVector测试向量DUT测试内容Testbench测试模板仿真系统软件、硬件运行比较判断输出、存储结果10.1仿真简介(续1)•仿真与验证主要包括3个方面的内容:第一是仿真系统的组织原则,主要是如何有效的测试目标系统的理论和方法;第二是测试模板与测试向量的设计;最后是仿真工具的使用。•一般来说,仿真分为三种类型,即功能仿真、综合后功能仿真和时序仿真,分别对应于设计输入后、综合完成后、布局布线完成后等步骤,这些步骤也是仿真的切入点。10.1仿真简介(续2)1、功能仿真•功能仿真也称为前仿真,主旨在于验证电路功能是否符合设计要求,其特点是不考虑电路门延时与路径延时,考察重点为电路在理想环境下的行为和设计构想是否一致。•可综合FPGA仿真代码是用RTL级代码语言描述的,功能仿真的输入是设计的RTL代码,也就是HDL源文件与Testbench.。2、综合后仿真•综合后仿真的主旨在于验证综合后的电路结构是否与设计意图相符,是否存在歧义综合结果。•综合后仿真的输入是从综合得到的一般性逻辑网表抽象出的仿真模型和综合产生的延时文件,综合时的延时文件仅仅能估算门延时,而不包含布线延时信息,所以延时信息不十分准确。10.1仿真简介(续3)3、时序仿真•时序仿真也称为布局布线后仿真或者后仿真,是指电路已经映射到特定的工艺环境后,综合考虑电路的路径延时与门延时的影响,验证电路的行为是否能够在一定时序条件下满足设计构想的功能。•时序仿真主要目的在于验证电路是否存在时序违规,其输入为从布局布线抽象出的门级网表、Testbench以及扩展名为SDO的标准延时文件。•一般来说,时序仿真是必选步骤,通过时序仿真能检查设计时序与FPGA的实际运行情况是否一致,确保设计的可靠性和稳定性。10.2Modelsim简介•Modelsim是一种第三方EDA仿真工具。•Modelsim仿真工具是Model公司开发的,它支持Verilog、VHDL以及两者的混合仿真,可以将整个程序分步执行,它在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以查看某一单元或模块的输入输出的连续变化等。•其主要特点是仿真速度快,仿真精度高,而且支持VHDL、VerilogHDL以及两者的混合使用,是目前业界最流行最通用的仿真器之一。10.2.1Modelsim的图形用户界面•Modelsim6.3软件在默认的条件下提供了主窗口、源文件窗口、信号窗口、波形窗口、数据流窗口、进程窗口、存储器窗口、列表窗口等不同窗口,如下图。10.2.1Modelsim的图形用户界面(续1)•主窗口:主窗口main在Modelsim启动时直接打开,是其他窗口运行的基础。•源文件窗口:源文件窗口source主要用来显示和编辑HDL源文件代码。•波形窗口:波形窗口是最常用的窗口之一,主要是用来查看仿真结果。•数据流窗口:数据流窗口Dataflow是一般仿真软件都提供的一个通用窗口,通过该窗口可以跟踪设计中的物理连接、事件的传播,也可以用来跟踪寄存器、网线和进程等,极大的丰富了调试方法并对其进行显示,也可以显示设计中的内部连接。•列表窗口:列表窗口使用表格的形式显示仿真结果。•进程窗口:进程窗口显示了仿真中用到的所有进程列表。•信号窗口Object主要是用来选择需要查看的信号,同时可以在仿真过程中强制某一个信号的值发生变化,也可以通过信号窗口的Edit/Force和Edit/Clock命令将任意信号强制转化成时钟信号。•寄存器窗口Memory可以显示设计中寄存器的内容。使用此窗口可以通过加载源文件或改变存储器内容的方式对设计中的存储器进行初始化,同时窗口中的内容也可以保存成一个存储器文件,以便日后使用。10.2.1Modelsim的图形用户界面(续2)•在Modelsim的主窗口的工具栏中常用快捷键图标的功能如下表:图标名称用途对应菜单对应命令Redo撤消最后一步操作EditRedoFind在当前窗口查找文本EditFindCollapseAll隐藏当前窗口所有的例程EditExpandCollapseAllExpandAll显示当前窗口所有的例程EditExpandExpandAllCompile打开编译对话框编译源文件CompileCompileVcomvlogCompileall编译工程中的所有文件CompileCompileAllvcomvlogSimulate指定设计进行仿真SimulateStartSimulationvsimBreak停止当前仿真SimulateBreakEnvironmentup返回上一层Environmentback返回到前一次选择的内容Environmentforward返回到后一次选择的内容Restart装载设计,将仿真复位到零,重新仿真SimulateRunRestartrestartRunLength设定单步仿真步长SimulateRuntimeOptionsrunRun单步运行当前仿真SimulateRunRunlengthRunlengthContinueRun继续仿真直到仿真结束SimulateRunContinuerun-continueRun-All运行所有仿真到仿真结束SimulateRunRun-AllRun-allShowLanguageTemplates打开一个语言模板SourceShowLanguageTemplates10.2.2Modelsim仿真步骤•Modelsim仿真步骤分为以下5步:(1)建立库;(2)映射库到物理目录;(3)编译源代码,包括所有的HDL代码和Testbench;(4)启动仿真器并加载设计顶层;(5)执行仿真注:本章主要介绍在界面模式下modelsim的使用方法10.2.2Modelsim仿真步骤(续1)1、建立库仿真库是指存储已经编译设计单元(designunits)的目录。Modelsim中仿真库可以分为工作库(Working)和资源库(Resource)两大类。建立仿真库的常用方法有两种:一是在界面模式下,执行主菜单命令File/New/Library,打开CreateaNewLibrary对话框,选择第一项生成一个新库并映射它,如右图图所示。二是在命令行模式下也可以在主窗口执行vlib命令建立新库,语法格式如下:Vliblibrary_name10.2.2Modelsim仿真步骤(续2)2、映射库到物理目录;映射是将已经编译好的设计单元映射为一个库,库路径内的文件应该是已经编译好的。常用操作方法有两种:一是在界面模式下,执行主菜单命令File/New/Library,打开CreateaNewLibrary对话框,选择第二项映射已经编译好的库,单击browse按钮选择所已经编译好的库,如右图所示;第二种方法是命令模式下主窗口执行vmap命令,语法格式如下:Vmaplogical_namedirecetory_path10.2.2Modelsim仿真步骤(续3)3、编译源代码•GUI图像界面模式下编译文件的快捷方式是建立一个工程,在工程中添加所要编译的文件,然后执行主窗口的Compile子菜单中的各种命令或者是右键单击工程中的文件执行Compile的不同命令。•如果编译的是VHDL源文件,其编译顺序由文件的排列顺序决定,如果是Verilog源文件,其编译顺序也是由文件的排列顺序决定,但文件编译的顺序并不重要。10.2.2Modelsim仿真步骤(续4)4、启动仿真器并加载设计顶层(1)执行主菜单中的命令Simulate/StartSimulate打开仿真对话框,指定需要仿真的设计单元,然后点击OK,如图所示10.2.2Modelsim仿真步骤(续5)4、启动仿真器并加载设计顶层(2)在主窗口中出现Object窗口,右键单击Object窗口中的任意信号,选择addtowave/signalsinregion或者是右键选中sim窗口中加载的顶层设计名,选中addtowave,就可以打开波形窗口,并将所有信号都加载到波形窗口当中。如右图所示。10.2.2Modelsim仿真步骤(续6)5、执行仿真执行主菜单命令下的Simulate/Run,选中相应的选项来执行仿真,也可以选中使用等快捷键按钮来进行仿真,仿真结果将会显示在Wave窗口中。10.2.3Modelsim功能仿真在本节中,用一个简单的计数器设计实例来演示功能仿真的具体操作流程,此处使用的QuartusII版本为7.2。步骤如下:1、新建一个名为counter的文件夹,在QuartusII新建一个同名工程,选择合适的器件。在此例中选择的目标芯片为CycloneIIEP2C35F672C6N。2、计数器的HDL源文件可以在Modelsim中编写,也可以在QuartusII中编写或者利用MegaWizard生成的IP核以及直接调用LPM等方式生成。在这里选择利用MegaWizard生成的简单的IP核作演示使用,在定制中生成的IP核的语言选择VHDL。10.2.3Modelsim功能仿真(续1)生成后的IP核如下图所示10.2.3Modelsim功能仿真(续2)3、回到QuartusII主窗口,点击Project选项卡,选择add/RemoveFilesinProject;点击添加刚生成的counter.vhd文件到工程中,添加后如下图所示。至此,HDL源文件创建完毕。10.2.3Modelsim功能仿真(续3)4、编写测试文件Testbench。先建立一个新的工作库如work。Testbench文件可以在Modelsim中新建的VHDL(或verilog)文档编辑页面中进行编辑,同样也可以在QuartusII中新建一个VHDL(或Verilog)空白模板来编写。除了直接编写测试文件,Modelsim还提供了很多Testbench模板,可以直接调用以减少工作量,但前提是设计的顶层HDL源文件已经编译到工作库当中。5、映射库到物理目录,编译源文件。10.2.3Modelsim功能仿真(续4)6、新建一个仿真工程。使用工程可以简化编译和仿真的操作。在Modelsim的主窗口中选择File/New/Project,设置工程名并向工程中添加文件,设置如下二图。设置完成后编译所有文件。10.2.3Modelsim功能仿真(续5)7、启动仿真仿真器加载顶层文件。指定仿真的设计单元为测试文件counter_tb8、执行仿真,仿真结果如下图:10.2.4综合后仿真•综合后仿真的步骤和功能仿真的前面四步相同,从第五步开始,操作如下:1.在工作库work下建立一个工程project_zh,方法和功能仿真中建立prtoject_gn相同;2.工程中需要添加的文件有顶层设计文件counter,测试文件counter_tb和由QuartusII编译生成的网表文件;在QuartusII中编译生成的网表文件方法如下:•选中QuartusII主窗口中的Assignments/EDAtoolssettings在弹出来的对话框如图10.28;•双击对话框中的Simulate弹出下一页对话框如图10.29所示。在toolname中选Modelsim,输出语言为VHDL,Outputdirectory中可以设置文件的输出路径,此处指定为counter文件夹;•点击MoreSetting...,在弹出来的对话框如图10.30,选中Generatenetlistfunctionalsimulateonly,在set后的栏内选中on,点击OK保存;•在QuartusII中编译顶层设计文件ounter.vhd,编译完成后在counter文件中能看到一个名为counter.vho的文件,此文件就是综
本文标题:EDA的仿真和测试
链接地址:https://www.777doc.com/doc-2911051 .html