600 likes | 706 Views
EDA 原理及应用. 何宾 2008.10. 第 8 章. 第八章. 设计综合和行为仿真- - 主要内容. 本章详细介绍了设计综合和行为仿真的流程和法。 在设计综合部分,介绍了综合的概念、综合属性配置方法和综合实现,以及 RTL 原理图查看。在行为仿真部分,介绍了测试向量的生成、行为仿真工具、基于 Modelsim 软件的行为仿真和基于 ISE 仿真器的行为仿真的实现,同时还介绍了使用波形和 VHDL 语言建立测试向量的方法。. 第八章. ●. 设计综合和行为仿真 - 行为综合.
E N D
EDA原理及应用 何宾 2008.10
第8章 第八章 设计综合和行为仿真--主要内容 本章详细介绍了设计综合和行为仿真的流程和法。 在设计综合部分,介绍了综合的概念、综合属性配置方法和综合实现,以及RTL原理图查看。在行为仿真部分,介绍了测试向量的生成、行为仿真工具、基于Modelsim软件的行为仿真和基于ISE仿真器的行为仿真的实现,同时还介绍了使用波形和VHDL语言建立测试向量的方法。
第八章 ● 设计综合和行为仿真-行为综合 在集成电路设计领域,综合是指设计人员使用高级设计语言对系统逻辑功能的描述,在一个包含众多结构、功能、性能均已知的逻辑元件的逻辑单元库的支持下,将其转换成使用这些基本的逻辑单元组成的逻辑网络结构实现。这个过程一方面是在保证系统逻辑功能的情况下进行高级设计语言到逻辑网表的转换,另一方面是根据约束条件对逻辑网表进行时序和面积的优化。
第八章 ● 设计综合和行为仿真-行为综合 行为级综合可以自动将系统直接从行为级描述综合为寄存器传输级描述。 行为级综合的输入为系统的行为级描述,输出为寄存器传输级描述的数据通路。 行为级综合工具可以让设计者从更加接近系统概念模型的角度来设计系统。同时,行为级综合工具能让设计者对于最终设计电路的面积、性能、功耗以及可测性进行很方便地优化。 行为级综合所需要完成的任务从广义上来说可以分为分配、调度以及绑定。
第八章 ● 设计综合和行为仿真-行为综合 分配包括决定系统实现所需要的各个功能组件的个数以及种类。这些组件以及资源来自采用寄存器传输级描述的元件库,包括诸如运算逻辑单元、加法器、乘法器和多路复用器等。分配同时也决定了系统中总线的数量、宽度、以及类型。
第八章 ● 设计综合和行为仿真-行为综合 调度为行为级描述中的每个操作指派时间间隙,这也成为控制执行步骤。数据流从一级寄存器流向下一级寄存器并按调度所指定的执行步骤在功能单元上执行。每一个执行步骤的时间长度通常为一个时钟周期,并且在这一个执行步骤中的操作被绑定到特定寄存器传输级描述的组件上。上述这些操作都完成后,系统所完成的功能被分配到各个功能单元模块,变量被存储在各个存储单元,并且不同功能单元之间的互连关系也建立起来了。 在实际的PLD设计流程中,逻辑综合将使用硬件逻辑描述语言如Verilog、VHDL等描述的寄存器传输级(RTL)描述,转换成使用逻辑单元库中基本逻辑单元描述的门级网表电路。
第八章 ● 设计综合和行为仿真-基于XST的综合 当所有的设计完成,并且进行完语法检查后,就可以使用Xilinx的XST工具或Synplify工具进行综合了,综合工具使用HDL代码,然后生成支持的网表格式EDIF或NGC,然后Xilinx的实现工具将使用这些网表文件完成随后的处理过程。 综合工具在对设计的综合过程中,主要执行以下三个步骤: 1、语法检查过程,检查设计文件语法是否有错误; 2、编译过程,翻译和优化HDL代码,将其转换为综合工具可以识别的元件序列; 3、映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件;
第八章 ● 设计综合和行为仿真-基于XST的综合 在ISE的主界面的处理子窗口的synthesis的工具可以完成下面的任务:查看综合报告(view Synthesis Report)、查看RTL原理图(View RTL schematic)、查看技术原理图(View Technology Schematic)、检查语法(Check Syntax)和产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。
第八章 ● 设计综合和行为仿真--约束及设计综合的实现 XST支持用户约束文件格式(UCF,User Constraint File),该文件主要是用于综合和时序的约束。这种文件格式叫Xilinx的约束文件(XCF,Xilinx Constraint File)。下面介绍该设计中所用到的用户文件的生成和插入设计的步骤: 1、在ISE主界面,选择Project->Add source,选择stopwatch.xcf文件,并打开; 2、stopwatch.xcf文件作为用户文档添加到用户的设计文件中; 3、打开该文件,下面是对于该设计的约束描述: NET "CLK" TNM_NET = "CLK_GROUP";
第八章 设计综合和行为仿真--约束及设计综合的实现 ● TIMESPEC "TS_CLK" = PERIOD "CLK_GROUP" 20 ns; //时序约束 BEGIN MODEL stopwatch //以下是管脚约束 NET "clk" LOC = "E12"; NET "sf_d<7>" LOC = "Y15"; NET "sf_d<6>" LOC = "AB16"; NET "sf_d<5>" LOC = "Y16";
第八章 ● 设计综合和行为仿真--约束及设计综合的实现 NET "sf_d<4>" LOC = "AA12"; NET "sf_d<3>" LOC = "AB12"; NET "sf_d<2>" LOC = "AB17"; NET "sf_d<1>" LOC = "AB18"; NET "sf_d<0>" LOC = "Y13"; END;
第八章 设计综合和行为仿真--约束及设计综合的实现 ● 4、关闭该文件; 5、在工程管理窗口,选择stopwatch.vhd文件。在处理子窗口,选择Synthesis,并单击鼠标的右键选择Properity属性; 6、在Synthesis Options标签下,单击Synthesis Constraints File属性域,输入stopwatch.xcf; 7、选中写时序检查(Write Timing Contraints)选项,单击OK; 8、选中stopwatch.vhd文件,并在处理子窗口用鼠标双击Synthesize选项; 通过上面的步骤,完成对约束文件的配置过程。
第八章 ● 设计综合和行为仿真-RTL符号的查看 在综合完成后,XST将产生RTL的原理图(RTL Schematic)。可以通过RTL原理图查看工具,看到综合后的逻辑连接关系。 RTL原理图(RTL Schmatic)是优化前的HDL代码的逻辑; 技术原理图(Technology Schematic)是HDL综合完成后的设计和目标技术的映射。
第八章 ● 设计综合和行为仿真-RTL符号的查看 通过下面的步骤,查看RTL对HDL设计的描述过程: 在处理子窗口,点击+ Synthesize –XST选项,将其下面的功能分层展开; 双击 View RTL Schematic 或View Technology Schematic选择。如图6.11,RTL的查看工具将显示出HDL的顶层设计的符号描述; 双击该图标,可以更进一步的看到底层模块的连接关系。
第八章 ● 设计综合和行为仿真-RTL符号的查看
第八章 激励 响应 结果显示平台 测试平台 逻辑设计 图8.2 测试平台的作用 ● 设计综合和行为仿真-行为仿真的实现 生成测试向量 VHDL还可以描述变化的测试信号。描述测试信号的变化和测试过程的模块叫做测试平台(Testbench),它可以对任何一个Verilog/VHDL模块进行动态的全面测试。通过对被测试模块的输出信号的测试,可以验证逻辑系统的设计和结构,并对发现的问题及时修改。 测试平台是为逻辑设计仿真而编写的代码,它能直接与逻辑设计接口。如图8.2所示,通过向逻辑设计施加激励,检测被测模块的输出信号。
第八章 设计综合和行为仿真-行为仿真的实现 ● 生成测试向量 测试平台通常使用VHDL、Verilog、e或者Open Vera编写,同时还能调用外部的文件和C函数。测试平台可以使用同逻辑设计不同的描述语言,仿真器通常提供支持不同描述语言的混合仿真功能。
第八章 设计综合和行为仿真-行为仿真的实现 ● 生成测试向量 硬件描述语言如Verilog和VHDL等,都提供了两种基本的建模方式:行为级和寄存器传输级。寄存器传输级是对硬件逻辑进行可综合性的描述,使用的是VHDL语言中可综合逻辑设计激励响应测试平台结果显示平台的描述部分。 寄存器传输级代码可以由逻辑综合工具直接转换成门级电路。 行为级描述是对硬件逻辑更为灵活和抽象的描述,描述的重点在于硬件逻辑的功能,通常不考虑时序问题。行为级代码通常不能被逻辑综合工具转换成门级电路。 测试平台以行为级描述为主,不使用寄存器传输级的描述形式。
第八章 响应检测 激励生成 被测单元 图8.3 测试平台构成 设计综合和行为仿真-行为仿真的实现 ● 生成测试向量 测试平台主要由两个组件构成:激励生成和响应检测。 它们同被测单元(DUT, Device Under Test)的关系如图8.3所示。
第八章 设计综合和行为仿真-行为仿真的实现 ● 生成测试向量 DUT是待测的逻辑电路。通常,DUT是使用硬件逻辑描述语言HDL编写的寄存器传输级电路。 激励生成模块的主要功能是根据DUT输入接口的信号时序,对DUT产生信号激励,将测试信号向量输入到DUT中。响应检测模块根据DUT输入接口的信号时序,响应DUT的输出请求,并检查输出结果的正确性。
第八章 设计综合和行为仿真-行为仿真的实现 ● 生成测试向量 建立测试平台时,首先应针对DUT的功能定义测试向量;然后根据每一个测试向量的要求分别设计激励生成和响应检测模块,要求激励生成模块能够能在DUT的接口上产生该测试向量所需的信号激励,响应检测模块能够对DUT在这种信号激励下的结果输出进行响应和检测;最后将激励生成模块、DUT和响应检测模块相连,组成验证环境,在仿真器上进行仿真,根据响应检测模块的检测报告来判断测试向量是否通过测试。
第八章 ● 设计综合和行为仿真-设置仿真工具 Xilinx的ISE工具提供了集成设计流程,该设计流程支持基于Mentor Graphics公司Modelsim仿真工具和ISE仿真工具,这两种仿真工具均可从工程向导中运行。 只有安装Modelsim软件才能使用Modelsim仿真工具,ModelSim PE和ModelSim SE是Mentor Graphics公司ModelSim软件的完全版本。为配合ISE9.2库的仿真,需要使用ModelSim6.0或更高版本。ModelSim XE是基于ModelSim PE的ModelSim Xinlinx版本。 当安装ISE软件时,ISE仿真工具就自动安装完成,所以不需要进行额外安装。
第八章 设计综合和行为仿真-配置Xilinx仿真库 ● 当设计中有需要例化的Xilinx基本元件、Core生成器元件和其它IP核时,必须要使用Xilinx的仿真库才能对这样的设计进行仿真。这些仿真库保存了每一个元件的模型。这些模型描述了每一个元件的功能,为仿真工具提供了仿真时所需要的信息。 Modelsim软件使用modelsim.ini文件确定编译库的位置。比如,将UNISIM库编译到c:\lib\UNISIM路径下,在该文件中必须有下面的映射描述:UNISIM=C:\lib\UNISIM。
第八章 设计综合和行为仿真-建立波形测试向量 ● 这一部分介绍通过波形编辑器产生测试向量的过程。可以通过波形编辑器,以图形的方式输入激励信号,生成VHDL或Verilog 测试平台。 下面的过程给出了为子模块创建测试平台波形的步骤(当然波形编辑器也能为顶层设计生成一个激励源)。下面给出通过波形编辑器创建一个测试平台波形文件的步骤:
第八章 ● 设计综合和行为仿真-建立波形测试向量 1、在Source Tab选项卡中,选择time_cnt; 2、选择Project → New Source; 3、在New Source向导中, 选择源类型为Test Bench Waveform.; 4、输入time_cnt_tb,单击Next; 需要注意的是,在选项对话框中, 文件time_cnt 为默认的源文件,这是因为在Source Tab选项卡中,选择了time_cnt;单击Next,单击Finish; 5、在ISE中打开波形编辑器。显示初始化时序对话框,可以设定仿真时间参数。时钟为高和低区域决定了时钟周期。输入建立时间决定了输入有效起始时间,输出有效延迟定义了时钟有效后输出有效的起始时间;
第八章 设计综合和行为仿真-建立波形测试向量 ● 6、初始化时序对话框,如下输入: Clock Time High: 10 Clock Time Low: 10 Input Setup Time: 5 Output Valid Delay: 5 7、在全局时钟部分选择GSR (FPGA) 8、将初始化的测试平台(TestBench)长度改为3000,单击Finish。 通过上面的步骤,完成建立测试向量的过程。
第八章 ● 设计综合和行为仿真-波形测试向量的应用 在波形编辑器中,可以应用过渡带(High/Low),其宽度由Input setup delay 和the Output valid delay决定。对该测试产生如下激励输入: 1、单击CE在110 ns时为高 2、单击CLR在150 ns时为高 3、单击CLR在230 ns时为低 4、单击保存:新的测试平台波形源(time_cnt_tb.tbw)自动加入到工程中 5、在Source Tab选项卡中,选择time_cnt_tb.tbw图8.10 在波形编辑器中生成激励信号 6、双击Generate Self-Checking Test Bench
第八章 图8.10 在波形编辑器中生成激励信号 ● 设计综合和行为仿真-波形测试向量的应用 一个包含输出数据和自检码的测试平台产生并添加到工程中,创建的测试平台文件可用于与仿真后的数据比较
第八章 ● 设计综合和行为仿真--基于Modelsim行为仿真实现 下面所介绍的行为仿真是基于前面的秒表设计完成,并完成了设计综合。为了实现对该设计的行为仿真,需要下面的文件:设计文件,测试平台(Testbench)文件和Xinlinx仿真库。 1、设计文件:VHDL、Verilog或原理图文件。 2、Testbench文件:仿真设计过程中需要一个测试平台文件作为仿真激励源。 3、Xinlinx仿真库:当在设计中涉及IP核时,应该创建Xinlinx仿真库,库中包含了DCM数字时钟管理和核产生器(CORE Generator)元件。
第八章 设计综合和行为仿真--添加HDL测试文件 ● 下面给出添加测试平台文件步骤和过程: 1、如果建立一个新的测试平台文件,可选择Project→New Source,选择文件类型为VHDL Test Bench或Verilog Text Fixture,生成一个仿真文件,可以在这个文件中定义所需要的测试平台及其测试向量。 2、如果添加已经设计完成的测试平台文件,可选择Project→Add Source,在该设计中选择测试平台文件 stopwatch_tb.vhd。并在文件类型对话框中选择VHDL Test Bench File/ Verilog Text Fixture File。ISE会自动识别顶层设计文件并将其与测试文件进行关联。
第八章 ● 设计综合和行为仿真--添加HDL测试文件 如果在工程中已经添加了一个测试平台文件,那么就可以用ModelSim完成行为仿真,ISE与ModelSim已经完全一体化,ISE能使用ModelSim创建工作路径,编译源文件,下载设计文件,并进行仿真。使用ISE软件或ModelSim软件,仿真结果是相同的。
第八章 设计综合和行为仿真 --添加HDL测试文件 ● 下面给出ISE的工程向导调用ModelSim仿真的步骤: 1、在Source Tab选项卡中,右键单击器件名,如xc3s700A-4fg484,选择Properties(属性)选项; 2、在Project Properties(工程属性)对话框的仿真器域(Simulator field)中选择所使用的ModelSim类型,并和所使用的VHDL语言进行关联。
第八章 设计综合和行为仿真--定位仿真程序 ● 在ISE的仿真过程中能够使用ModelSim软件对设计进行仿真,下面给出定位ModelSim仿真程序的步骤: 1、在Source Tab选项卡中,选择行为仿真(Behavioral Simulation); 2、选择Testbench测试文件(stopwatch_tb); 3、在Processes tab选项卡中,单击+旁边的ModelSim Simulator展开程序目录层次; 如果没有ModelSim仿真程序,那么有可能是在Project Properties(工程属性)对话框没有将ModelSim选为仿真器,或者是Project Navigator无法找到modelsim.exe文件。
第八章 ● 设计综合和行为仿真 --定位仿真程序 下面给出设置ModelSim单元的步骤 1、选择 Edit→Preferences; 2、单击+展开ISE preferences; 3、单击Integrated Tools; 4、在右栏中, Model Tech Simulator下,定位modelsim.exe文件。如:c:\modeltech_xe \win32xoem \modelsim.exe; 下面给出可用的仿真过程的步骤: 1、 Simulate Behavioral Model:这一过程开始设计仿真; 2、产生一个自检的HDL Testbench:这个过程产生一个相当于测试平台波形(TBW)文件的自检HDL Testbench文件,并加入到工程中。也可以通过这一过程来更新现有的自检测试波形文件。
第八章 ● 设计综合和行为仿真--设置仿真属性 在ISE中可以设置包括网表属性的多个ModelSim仿真属性,下面给出设置行为仿真属性的步骤: 1、在Source Tab选项卡中,选择Testbench测试文件(stopwatch_tb); 2、在Processes tab选项卡中,单击+旁边的ModelSim Simulator展开程序目录层次; 3、右键单击Simulate Behavioral Model,选择属性 (Properties); 4、 在Process Properties对话框中,见图8.4 设置Property display level为Advanced这个全局性的设置,可看到所有可用的属性; 5、将仿真运行时间改为2000ns,单击OK;
第八章 图8.4 仿真属性的设置 设计综合和行为仿真--设置仿真属性 ●
第八章 设计综合和行为仿真--运行仿真 ● 仿真属性设置完成后,就可以准备运行ModelSim仿真软件。双击Simulate Behavioral Model,启动行为仿真。 ModelSim仿真工具可以创建工作目录,编译源文件,添加设计,并进行指定时间的仿真模拟过程。 该设计的工作频率为100赫兹,因此需要设定足够的时间长度来仿真。第一次复位后,输出过渡的SF_D和LCD_E控制信号在大约33毫秒。这就是为什么计数器不在短时间的仿真中使用,只有通过对DCM信号监测来验证计数器工作是否正常。
第八章 ● 设计综合和行为仿真--添加信号 为了观察仿真过程中的内部信号,必须将这些信号添加入到波形窗口中。ISE会自动将顶层端口信号加入到波形窗口,其它信号在基于被选结构的信号窗口中显示,可以通过两种基本方法将其它信号加入仿真波形窗口: 1、从Signal/Object window中拖动到信号波形窗口; 2、在Signal/Object window中选择信号,选择Add → Wave → Selected Signals; 下面介绍将DCM信号加入到波形窗口中的步骤(如果使用的是ModelSim6.0或更高版本,在默认状态下,所有窗口均是docked,可选择undock图标来取消):
第八章 ● 设计综合和行为仿真--添加信号 1、在Structure/Instance窗口中,单击+展开uut目录层次。图8.5为Verilog的Structure /Instance窗口。当然原理图或是VHDL的Structure/Instance窗口可能有所不同; 2、在Structure/Instance窗口中选择dcm1,那么在Signal/Object窗口中的信号列表将被更新; 3、单击并将Signal/Object窗口中的CLKIN_IN信号拖动到波形窗口中; 4、在Signal/Object窗口中,选择下列信号:RST_IN CLKFX_OUT、CLK0_OUT、LOCKED_OUT; 5、在Signal/Object窗口中右键单击; 6、选择Add to Wave → Selected Signals;
第八章 图8.5 VerilogStructure /Instance窗口 设计综合和行为仿真--添加信号 ●
第八章 ● 设计综合和行为仿真--添加信号分割 在ModelSim中,可以在波形窗口中添加分割,使得更容易区分不同的信号,下面给出在窗口中添加DCM信号分割窗口的步骤: 1、右键单击波形窗口信号部分的任意位置,如果需要可先将窗口最大化; 2、选择Insert Divider; 3、在Divider Name框中输入DCM Signals; 4、单击OK; 5、将新建的信号拖到CLKIN_IN信号上方;
第八章 ● 设计综合和行为仿真--添加信号分割 新增信号的波形还未给出,这是因为ModelSim还未记录这些信号的数据。在默认情况下,只有重新经过仿真后,ModelSim才会记录新添加到波形窗口中的信号。当波形窗口添加新信号后,需要重新进行仿真。
第八章 图8.6 添加分割信号后仿真波形 设计综合和行为仿真--添加信号分割 ●
第八章 图8.7 重新仿真对话框 设计综合和行为仿真--重新仿真 ● 为了在ModelSim中重新完成仿真过程,需要执行以下操作步骤: 1、单击Restart Simulation图标; 2、在Restart对话框中,单击 Restart; 3、在ModelSim命令行中,输入run 2000ns,按下Enter键; 仿真运行2000ns,仿真结束后,在波形窗口中可见DCM新波形。
第八章 ● 设计综合和行为仿真--分析信号 通过分析DCM信号来验证计数器工作是否正常。 CLK0_OUT信号需为50MHz,CLKFX_OUT需为26MHz。只在LOCKED_OUT信号为高时,DCM输出信号有效。所以只在LOCKED_OUT信号为高时,才能分析DCM信号。ModelSim中可通过光标来测量信号之间的距离。下面给出测量CLK0_OUT信号的步骤: 1、选择Add → Wave → Cursor,定位两个光标(Cursors); 2、在LOCKED_OUT信号为高后,单击拖拽CLK0_OUT信号的第一个上升沿; 3、单击拖拽第二个光标; 4、单击Find Next Transition图标两次将光标移到CLK0_OUT信号的下一个上升沿;
第八章 ● 设计综合和行为仿真--分析信号 5、可观察波形底部两个光标之间的距离。测量值为20000ps(50MHz),即为测试平台的输入频率,也是DCM的CLK0信号输出; 6、同样使用上述方式测量CLKFX_OUT。测量值为38462ps,约为26MHz; 通过上面步骤,完成对CLK0_OUT信号的测量和分析。
第八章 设计综合和行为仿真--保存仿真 ● ModelSim可保存列表中的所有信号,也可保存波形窗口中经过重新仿真后的新增信号。下面给出保存信号的步骤: 1、在波形窗口中,选择File → Save as; 2、在保存类型对话框中,将默认的wave.do重新命名为dcm_signal.do; 3、单击Save; 在重新启动仿真之后,在波形窗口中选择File → Load重新加载此文件。
第八章 ● 设计综合和行为仿真 --基于ISE行为仿真实现 如果在工程中已经生成了一个测试平台文件,那么就可以在ISE中进行行为仿真。ISE能创建工作路径,编译源文件,下载设计文件,并根据仿真属性进行仿真。下面给出了使用ISE仿真器进行仿真的步骤: 1、在Source Tab选项卡中,右键单击器件名,如xc3s700A-4fg484; 2、选择Properties(属性)选项; 3、在Project Properties(工程属性)对话框的Simulator field中选择ISE Simulator; 通过上面的步骤完成对ISE仿真工作的属性设置。
第八章 设计综合和行为仿真--定位仿真程序 ● 在仿真过程中能够使用ISE仿真器对设计进行仿真,并定位ISE仿真程序。下面给出定位仿真程序的步骤: 1、在Source Tab选项卡中,选择Behavioral Simulation; 2、选择Testbench测试文件(stopwatch_tb); 3、在Processes tab选项卡中,单击+旁边的ISE Simulator展开程序目录层次;
第八章 ● 设计综合和行为仿真--定位仿真程序 下面是可使用的仿真过程: 1、Check Syntax:这个过程检查测试平台文件中的语法错误; 2、Simulate Behavioral Model:这一过程开始设计仿真; 3、产生一个自检的HDL Testbench:这个过程产生一个相当于测 试平台波形(TBW)文件的自检HDL Testbench文件,并加入到工程中。也可以通过这一过程来更新现有的自检测试平台文件。