630 likes | 740 Views
设计综合和行为仿真. 何宾 2011.09. 设计综合和行为仿真 - 本章概要. 本章详细介绍了设计综合和行为仿真的流程和方 法。 在设计综合部分,介绍了综合的概念、综合属性配置 方法和综合实现,以及 RTL 原理图查看。在行为仿真部 分,介绍了测试向量的生成、行为仿真工具、基于 Modelsim 软件的行为仿真和基于 ISE 仿真器的行为仿真的 实现,同时还介绍了使用波形和 VHDL 语言建立测试向量 的方法。. 设计综合和行为仿真 - 行为综合. 在集成电路设计领域,综合是指设计人员使用高级 设计语言对系统逻辑功能的描述,在一个包含众多结构、
E N D
设计综合和行为仿真 何宾 2011.09
设计综合和行为仿真-本章概要 • 本章详细介绍了设计综合和行为仿真的流程和方 • 法。 • 在设计综合部分,介绍了综合的概念、综合属性配置 • 方法和综合实现,以及RTL原理图查看。在行为仿真部 • 分,介绍了测试向量的生成、行为仿真工具、基于 • Modelsim软件的行为仿真和基于ISE仿真器的行为仿真的 • 实现,同时还介绍了使用波形和VHDL语言建立测试向量 • 的方法。
设计综合和行为仿真-行为综合 • 在集成电路设计领域,综合是指设计人员使用高级 • 设计语言对系统逻辑功能的描述,在一个包含众多结构、 • 功能、性能均已知的逻辑元件的逻辑单元库的支持下,将 • 其转换成使用这些基本的逻辑单元组成的逻辑网络结构实 • 现。这个过程一方面是在保证系统逻辑功能的情况下进行 • 高级设计语言到逻辑网表的转换,另一方面是根据约束条 • 件对逻辑网表进行时序和面积的优化。
设计综合和行为仿真-行为综合 • 行为级综合可以自动将系统直接从行为级描述综合为寄 • 存器传输级描述。 • 行为级综合的输入为系统的行为级描述,输出为寄存 • 器传输级描述的数据通路。 • 行为级综合工具可以让设计者从更加接近系统概念模 • 型的角度来设计系统。同时,行为级综合工具能让设计者 • 对于最终设计电路的面积、性能、功耗以及可测性进行很 • 方便地优化。 • 行为级综合所需要完成的任务从广义上来说可以分为分 • 配、调度以及绑定。
设计综合和行为仿真-行为综合 • 分配包括决定系统实现所需要的各个功能组件的个数 • 以及种类。这些组件以及资源来自采用寄存器传输级描述 • 的元件库,包括诸如运算逻辑单元、加法器、乘法器和多 • 路复用器等。分配同时也决定了系统中总线的数量、宽 • 度、以及类型。
设计综合和行为仿真-行为综合 • 调度为行为级描述中的每个操作指派时间间隙,这也成 • 为控制执行步骤。数据流从一级寄存器流向下一级寄存器 • 并按调度所指定的执行步骤在功能单元上执行。每一个执 • 行步骤的时间长度通常为一个时钟周期,并且在这一个执 • 行步骤中的操作被绑定到特定寄存器传输级描述的组件 • 上。 • 上述这些操作都完成后,系统所完成的功能被分配到 • 各个功能单元模块,变量被存储在各个存储单元,并且不 • 同功能单元之间的互连关系也建立起来了。 • 在实际的PLD设计流程中,逻辑综合将使用硬件逻辑 • 描述语言如Verilog、VHDL等描述的寄存器传输级 • (RTL)描述,转换成使用逻辑单元库中基本逻辑单元描 • 述的门级网表电路。
设计综合和行为仿真-XST综合工具概述 • 当所有的设计完成,并且进行完语法检查后,就可以 • 使用Xilinx的XST工具或Synplify工具进行综合了,综合工 • 具使用HDL代码,然后生成支持的网表格式EDIF或 • NGC,然后Xilinx的实现工具将使用这些网表文件完成随 • 后的处理过程。 • 在ISE的主界面的处理子窗口的synthesis的工具可以完 • 成下面的任务: • 查看综合报告(view Synthesis Report) • 查看RTL原理图(View RTL schematic) • 查看技术原理图(View Technology Schematic) • 检查语法(Check Syntax) • 产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。
设计综合和行为仿真-XST综合工具概述 • 综合工具在对设计的综合过程中,主要执行以 • 下三个步骤: • 1) 语法检查过程,检查设计文件语法是否有错误; • 2) 编译过程,翻译和优化HDL代码,将其转换为综 • 合工具可以识别的元件序列; • 3) 映射过程,将这些可识别的元件序列转换为可识 • 别的目标技术的基本元件;
设计综合和行为仿真-综合选项的设置和综合 • 综合选项能够使设计人员根据设计的要求进行设置 • 来影响综合行为。一种最常使用的综合选项是选择基 • 于面积或者速度,来实现综合优化目标。其它选项包 • 括控制触发器输出的最大扇出以及所希望的设计频率 • 等。
设计综合和行为仿真-综合选项的设置和综合 • 根据下面的步骤进入综合选项设置: • 1. 在源文件(Source)视图中选择stopwatch.vhd文件 • 2. 在处理(Process)视图中,用鼠标右击“Synthesis” • (综合)选项,在出现的菜单中选择“Properties”(属 • 性)。 • 3. 如图8.1所示,确保在属性设置窗口下的“Property • display level”的选项设置为“Advanced”,这允许设计者可 • 以看到所有可用的综合属性设置; • 4. 在图8.1的界面左侧选择“Synthesis Option”标签选 • 项,将“Netlist Hierarchy”属性设置为“Rebuild”,点击 • “OK”按钮。
图8.1 综合属性设置窗口 设计综合和行为仿真-综合选项的设置和综合
设计综合和行为仿真-综合选项的设置和综合 • 准备对设计进行综合,然后生成网表(Netlist)文件, • 下面给出综合的步骤; • 1. 选择stopwatch.vhd • 2. 在“Process”(处理)子窗口中,双击“Synthesis”,开 • 始对设计进行综合。
设计综合和行为仿真-RTL符号查看 • 在综合完成后,XST将生成HDL代码所对应的原 • 理图描述(RTL Schematic)。可以通过RTL原理图查 • 看工具,看到综合后的逻辑连接关系。这里有两种原 • 理图描述: • 1. RTL原理图(RTL Schmatic)是优化前的HDL代 • 码的逻辑; • 2. 技术原理图(Technology Schematic)是HDL综 • 合完成后的设计和目标技术的映射。
设计综合和行为仿真-RTL符号查看 • 通过下面的步骤,查看HDL设计的原理图描述: • 1. 在处理子窗口,点击“+ Synthesize –XST”选 • 项,将其下面的功能分层展开; • 2. 如果出现“Set RTL/Tech Viewer Startup • Mode”(设置RTL/Tech 查看器启动模式)对话框,则选 • 择“Start with the Explored Wizard”。 • 3. 如图8.2的“Create RTL Schemaitc”(创建RTL符 • 号)开始界面,从“Available Element”列表中,选择 • clk_divider和debounce元件,然后点击“Add”按钮将选 • 择的元件移动到“Selected Elements List”列表中。 • 4. 点击“Create Schematic”(创建原理图)按钮。
图8.2 Create RTL Schemaitc开始界面 设计综合和行为仿真-RTL符号查看
图8.3 RTL原理图 设计综合和行为仿真-RTL符号查看 • RTL查看器允许设计者选择设计的一部分作为原理图 • 进行显示。如图8.3所示,当显示原理图时,双击符号, • 进入到原理图和查看不同设计元件和连接性。鼠标右击 • 原理图来查看在原理图查看器中可以执行的各种操作。
设计综合和行为仿真-RTL符号查看 • 当完成综合后,在工程目录下,将存在一个NGC • 文件。对于基于其它综合工具的综合实现可以参考 • XST综合过程和相关综合工具的使用手册。
激励 响应 结果显示平台 测试平台 逻辑设计 图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的输出请求,并检查输出结果的正确性。
第8章 设计综合和行为仿真-行为仿真的实现生成测试向量 • 建立测试平台时,首先应针对DUT的功能定义测试 • 向量;然后根据每一个测试向量的要求分别设计激励生成 • 和响应检测模块,要求激励生成模块能够能在DUT的接口 • 上产生该测试向量所需的信号激励,响应检测模块能够对 • DUT在这种信号激励下的结果输出进行响应和检测;最后 • 将激励生成模块、DUT和响应检测模块相连,组成验证环 • 境,在仿真器上进行仿真,根据响应检测模块的检测报告 • 来判断测试向量是否通过测试。
设计综合和行为仿真-设置仿真工具 • Xilinx的ISE工具提供了集成设计流程,该设计流程支 • 持基于Mentor Graphics公司Modelsim仿真工具和ISE仿真 • 工具,这两种仿真工具均可从工程向导中运行。 • 只有安装Modelsim软件才能使用Modelsim仿真工具, • ModelSim PE和ModelSim SE是Mentor Graphics公司 • ModelSim软件的完全版本。为配合ISE11库的仿真,需要 • 使用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。
设计综合和行为仿真-添加HDL测试平台 • 下面给出添加测试平台文件步骤和过程: • 1. 如果建立一个新的测试平台文件,可选择 • Project→New Source,选择文件类型为VHDL Test Bench • 或Verilog Text Fixture,生成一个仿真文件,可以在这个 • 文件中定义所需要的测试平台及其测试向量。 • 2. 如果添加已经设计完成的测试平台文件,可选择 • Project→Add Source,在该设计中选择测试平台文件 • stopwatch_tb.vhd。
设计综合和行为仿真-添加HDL测试平台 • 3. 点击“Open”按钮。 • 4. 检查该文件的“Association”属性选择为 • “Simulation”。 • 5. 点击“OK”按钮。 • ISE会自动识别顶层设计文件并将其与测试文件进行 • 关联。
设计综合和行为仿真--基于Modelsim行为仿真实现设计综合和行为仿真--基于Modelsim行为仿真实现 • 下面所介绍的行为仿真是基于前面的秒表设计完成,并 • 完成了设计综合。为了实现对该设计的行为仿真,需要下 • 面的文件:设计文件,测试平台(Testbench)文件和 • Xinlinx仿真库。 • 1、设计文件:VHDL、Verilog或原理图文件。 • 2、Testbench文件:仿真设计过程中需要一个测试平台 • 文件作为仿真激励源。 • 3、Xinlinx仿真库:当在设计中涉及IP核时,应该创建 • Xinlinx仿真库,库中包含了DCM数字时钟管理和核产生 • 器(CORE Generator)元件。
设计综合和行为仿真--基于Modelsim行为仿真实现设计综合和行为仿真--基于Modelsim行为仿真实现 • 如果在工程中已经添加了一个测试平台文件,那么就 • 可以用ModelSim完成行为仿真,ISE与ModelSim已经完全 • 一体化,ISE能使用ModelSim创建工作路径,编译源文 • 件,下载设计文件,并进行仿真。下面给出ISE的工程调 • 用ModelSim仿真的步骤: • 1. 在Source Tab选项卡中,右键单击器件名,如 • xc3s700A-4fg484,选择Properties(属性)选项; • 2. 在Project Properties(工程属性)对话框的仿真器域 • (Simulator field)中选择所使用的ModelSim类型,并和 • 所使用的HDL语言进行关联。
设计综合和行为仿真--基于Modelsim行为仿真实现设计综合和行为仿真--基于Modelsim行为仿真实现 • 如果在工程中已经添加了一个测试平台文件,那么就 • 可以用ModelSim完成行为仿真,ISE与ModelSim已经完全 • 一体化,ISE能使用ModelSim创建工作路径,编译源文 • 件,下载设计文件,并进行仿真。使用ISE软件或 • ModelSim软件,仿真结果是相同的。
设计综合和行为仿真 --定位仿真程序 • 在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;
设计综合和行为仿真--设置仿真属性 • 在ISE中可以设置包括网表属性的多个ModelSim仿真 • 属性,下面给出设置行为仿真属性的步骤: • 1. 在Source Tab选项卡中,选择stopwatch_tb(Testbench • 测试文件); • 2. 在Processes tab选项卡中,单击+旁边的ModelSim • Simulator展开程序目录层次; • 3. 右键单击Simulate Behavioral Model,选择Properties • (属性); • 4. 在Process Properties对话框中,见图8.6 设置Property • display level为Advanced这个全局性的设置,可看到所有可 • 用的属性;
设计综合和行为仿真--设置仿真属性 • 5、将仿真运行时间改为2000ns,单击OK; • 通过上面步骤完成仿真属性设置。
设计综合和行为仿真--运行仿真 • 仿真属性设置完成后,就可以准备运行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;
设计综合和行为仿真--添加信号分割 • 在ModelSim中,可以在波形窗口中添加分割,使得更容 • 易区分不同的信号,下面给出在窗口中添加DCM信号分 • 割窗口的步骤: • 1、右键单击波形窗口信号部分的任意位置,如果需 • 要可先将窗口最大化; • 2、选择Insert Divider; • 3、在Divider Name框中输入DCM Signals; • 4、单击OK; • 5、将新建的信号拖到CLKIN_IN信号上方;
设计综合和行为仿真--添加信号分割 • 新增信号的波形还未给出,这是因为ModelSim还未 • 记录这些信号的数据。在默认情况下,只有重新经过 • 仿真后,ModelSim才会记录新添加到波形窗口中的信 • 号。当波形窗口添加新信号后,需要重新进行仿真。
图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重 • 新加载此文件。
设计综合和行为仿真--基于ISim行为仿真实现 • 如果在工程中已经生成了一个测试平台文件,那么就 • 可以在ISim中进行行为仿真。ISE能创建工作路径,编译 • 源文件,下载设计文件,并根据仿真属性进行仿真。下面 • 给出了使用ISE仿真器进行仿真的步骤: • 1、在Source Tab选项卡中,右键单击器件名,如 • xc3s700A-4fg484; • 2、选择Properties(属性)选项; • 3、在Project Properties(工程属性)对话框的Simulator • field中选择ISim(VHDL/Verilog);
设计综合和行为仿真--定位仿真程序 • 在仿真过程中能够使用ISim仿真器对设计进行仿真, • 并定位ISE仿真程序。下面给出定位仿真程序的步骤: • 1、在Source Tab选项卡中的Source for区域选择 • Simulation(仿真),然后在下拉框中选择Behavioral(行 • 为); • 2、选择Testbench测试文件(stopwatch_tb); • 3、在Processes tab选项卡中,单击+旁边的ISim • Simulator展开程序目录层次;
设计综合和行为仿真--定位仿真程序 • 下面是可使用的仿真过程: • 1、Check Syntax:这个过程检查测试平台文件中的语 • 法错误; • 2、Simulate Behavioral Model:这一过程开始设计仿 • 真;
设计综合和行为仿真--设置仿真属性 • 在ISE中可以设置包括网表属性的多个ISE仿真器的仿真 • 属性。下面给出设置行为仿真属性的步骤: • 1、在Source Tab选项卡中,选择测试平台文件 • (stopwatch_tb); • 2、在Processes tab选项卡中,单击+旁边的ISim • Simulator展开程序目录层次; • 3、右键单击Simulate Behavioral Model(仿真行为模 • 型); • 4、选择Process Properties(处理属性);图8.11 行为 • 仿真属性设置