1、1第7章 仿真测试工具和综合工具 7.1 数字集成电路设计流程简介 7.2 测试和仿真工具7.3 综合工具7.4 测试和综合举例 本章小结2在EDA技术高度发达的今天,没有一个设计工程师队伍能够用人工方法有效、全面、正确地设计和管理含有几百万个门的现代集成电路。利用EDA工具,工程师可以从概念、算法、协议等开始设计电子系统,7.1 数字集成电路设计流程简介数字集成电路设计流程简介3大量工作可以通过计算机完成,并可以将电子产品从系统规划、电路设计、性能分析到封装、版图的整个过程在计算机上自动完成。这样做有利于缩短设计周期、提高设计正确性、降低设计成本、保证产品性能,尤其是可增加一次投片的成功率,
2、因此这种方法在大规模集成电路设计中已经普遍被采用。利用EDA工具进行集成电路设计需要遵循一定的设计流程,这样才能保证设计任务高效率地完成。数字集成电路设计方法的典型流程如图7.1-1所示。下面分别介绍各个设计阶段的主要任务。4图7.1-1 集成电路设计的典型流程57.1.1 设计规范设计规范设计流程从已写出的设计规范开始。设计规范文件是一个包含功能、定时、硅片面积、功耗、可测性、故障覆盖率以及其它的设计准则的详细说明书。设计规范描述了项目完成的功能,确定了设计的总体方案,以平衡各个方面的因素,对整个项目有一个初步的规划。在系统设计阶段,根据对设计面积、功耗、I/O和IP使用等情况的估算,确定所
3、使用的芯片工艺和设计工具。有了设计规范,就可以进行设计划分。67.1.2 设计划分设计划分设计划分过程就是把一个复杂设计逐渐划分成较小而且较为简单的功能单元。这样一个过程通常被称为自顶向下的设计方法,或者是分层设计法。HDL可以为需要进行划分、综合和验证的大型复杂系统提供一个通用框架,它支持具有混合抽象级别的自顶向下设计,可以将大型设计中的各部分链接在一起,来进行整个设计的功能和性能验证。77.1.3 设计输入设计输入设计输入是指将设计划分阶段定义好的模块借助一定的设计输入手段转换为EDA工具能接受的信息格式。目前主要的设计输入手段有高级硬件描述语言HDL(Verilog HDL/VHDL)和
4、原理图等。HDL语言支持不同层次的描述,不依赖于各个厂家的工艺器件,便于修改。逻辑输入工具的功能是把逻辑图、状态机、真值表输入到计算机中,并进行语法、可综合性检查等。目前主流工具有Cadence公司的Composer、Synopsys公司的Leda以及UltraEdit、Vim等第三方编辑工具。8Leda是可编程的语法和设计规范检查工具,它能够对全芯片的VHDL和Verilog HDL描述或者对两者的混合描述进行检查,加速SoC的设计流程。Leda预先将IEEE可综合规范、可仿真规范、可测性规范和设计复用规范进行了集成,以提高设计者分析代码的能力。UltraEdit是一款功能强大的文本编辑器,
5、可以编辑文字以及多种格式的代码,内建英文单词检查、C+及VB 指令突显,可同时编辑多个文件,而且即使开启很大的文件,速度也不会慢。它是一个使用广泛的编辑器,但它并不直接支持HDL。9读者可以通过官方网站的链接下载Verilog HDL/VHDL的语法文件,并把下载的文件复制到WordFile.txt文件中(在UltraEdit的安装目录下),一般加在最后。这样就可以使用UltraEdit编辑HDL源代码了。107.1.4 仿真仿真设计输入后,经HDL编译器检查没有语法错误后,就可以对设计进行验证了。这里的验证是指通过仿真软件验证其功能是否符合制定的设计规范,这一阶段的验证常被称为功能仿真或行为
6、仿真。布局布线后,提取有关的器件延迟、连线延迟等时序参数(这些信息在反标注文件中)。在此基础上进行的仿真称为后仿真,也称时序仿真,它是接近真实器件运行的仿真。11仿真的结果取决于设计描述是否准确反映了设计的物理实现。仿真器不是一个静态工具,需要Stimulus(激励)和Response(输出)。Stimulus由模拟设计工作环境的Testbench 产生,Response为仿真的输出,由设计者确定输出的有效性。目前,仿真工具比较多,其中Cadence公司的NC-Verilog HDL、Synopsys公司的VCS和Mentor公司的ModelSim都是业界广泛使用的仿真工具。127.1.5 综
7、合综合利用综合器对HDL代码进行综合优化处理,生成门级描述的网表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。综合实际上是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计描述(如HDL文件、原理图等)变换成满足要求的电路设计方案,该方案必须同时满足预期的功能和约束条件。13对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的电路结构与综合器的性能有关。这个阶段产生目标FPGA的标准单元网
8、表和数据库,供布局布线使用。网表中包含了目标器件中的逻辑元件和互连信息。在传统的IC设计流程中,前端综合或时序分析时没有精确的线和CELL延迟信息,这样就容易造成布局前后的时序不收敛。随着工艺的进步,线延迟占主导地位,时序收敛问题越来越严重。根本的解决方法是将前后端的设计流程整合起来。14物理综合就针对的是这种情况。物理综合解决0.18 m以下工艺技术的IC设计环境,将综合、布局、布线集成于一体,让RTL设计者可以在最短的时间内得到性能最高的电路。通过集成综合算法、布局算法和布线算法,在RTL到GDS-的设计流程中,提供可以确保IC设计的性能预估性和时序收敛性。目前常用的逻辑综合工具有Syno
9、psys公司的Synplify和Design Compiler、Physical Compiler,Cadence公司的RTL Compiler等。157.1.6 适配布线适配布线适配布线就是按照特定的工艺要求和约束条件利用适配器进行布局布线,最后生成版图。对于芯片设计来讲,这个过程通常分为3步。布局规划:主要是标准单元、I/O Pad和宏单元的布局。I/O Pad预先给出了位置,而宏单元则根据时序要求进行摆放,标准单元则给出了一定的区域由工具自动摆放。布局规划后,芯片的大小、Core的面积、Row的形式、电源及地线的Ring和Strip就都确定下来了。时钟树生成(lock Tree Synt
10、hesis,CTS)。布局布线。16适配完成后,会产生多项设计结果。适配报告:包括芯片内部资源的利用情况、设计的布尔方程描述情况等。适配后的仿真模型。器件编程文件:根据适配后的仿真模型,可以进行适配后的时序仿真。因为此时已经得到器件的实际硬件特性(如时延特性等),所以此仿真结果能比较精确地预期未来芯片的实际性能。在FPGA设计中各个厂家都提供了相应的布局布线工具,例如Altera公司的Quartus,Xilinx公司的ISE等。在芯片设计领域,有Cadence公司提供的SoC Encounter和Synopsys公司的Astro等布局布线工具。177.1.7 时序分析时序分析时序分析的目的是检
11、查设计中是否有时序上的违规。同步电路的分析采用静态时序分析实现,异步电路的分析则需要运行特殊仿真激励确认。仿真工具可以用前仿真所用的工具。静态时序分析(STA)的功能是根据设计规范的要求检查所有可能路径的时序,不需要通过仿真或测试向量就可以有效地覆盖门级网表中的每一条路径,在同步电路设计中快速地找出时序上的异常。18可以识别的时序故障包括:建立/保持和恢复/移除检查(包括反向建立/保持),最小和最大跳变,时钟脉冲宽度和时钟畸变,门级时钟的瞬时脉冲检测,总线竞争与总线悬浮错误,不受约束的逻辑通道,计算经过导通晶体管、传输门和双向锁存的延迟,自动对关键路径、约束性冲突、异步时钟域和某些瓶颈逻辑进行
12、识别与分类。PrimeTime是Synopsys公司开发的进行静态时序分析的工具,它可以进行精确的RC延迟计算、先进的建模和时序验收。对于大型多时钟的设计,比如综合出的逻辑电路、嵌入式存储器和微处理器核的设计,Prime Time起到了关键性的作用。19动态时序分析主要是指门级(或对版图参数提取结果)的仿真,它主要应用在异步逻辑、多周期路径、错误路径的验证中。随着设计向65 nm以下的工艺发展,只用静态分析工具将无法精确验证串扰等动态效应。通过动态时序分析与静态时序分析相结合可以验证时序逻辑的建立/保持时间,并利用动态技术来解决串扰效应、动态模拟时钟网络等问题。207.1.8 物理验证物理验证
13、物理验证通常包括设计规则检测(DRC)、版图与原理图对照(LVS)和信号完整性分析(SI)等。其中DRC用来检查版图设计是否满足工艺线能够加工的最小线宽、最小图形间距、金属宽度、栅和有源区交叠的最小长度等。如果版图设计违反设计规则,那么极有可能导致芯片在加工的过程中成为废品。LVS则用来保证版图设计与其电路设计的匹配,保证它们的一致性。如果不一致,就需要修改版图设计。SI用来分析和调整芯片设计的一致性,避免串扰噪声、串扰延迟以及电迁移等问题。21目前主要的物理验证工具有Mentor公司的Calibre、Cadence公司的Dracula和Diva以及Synopsys公司的Hercules。此外
14、,各大厂商也推出了针对信号完整性分析的工具。227.1.9 设计结束设计结束在所有设计约束都已满足,也达到了定时约束条件的情况下,就会发出最终设计结束的信号。这时可用于制造集成电路的掩膜集就准备好了。掩膜集的描述是由几何数据(通常为GDS-格式)构成的,这些数据决定了集成电路制造过程中光掩膜步骤的顺序。将适配器布局布线后形成的器件编程文件通过下载工具载入到具体的FPGA或CPLD芯片中,可以方便地实现设计要求。如果是大批量产品的开发则通过更换相应的厂家综合库,便可以转由ASIC实现。23用HDL描述完一个硬件系统后要进行仿真验证,而如果想在计算机终端看到硬件描述语言的输出,则需要通过硬件描述语
15、言的仿真器来完成。常用的HDL仿真器很多,例如VCS、NC、Verilog HDL-XL、ModelSim、ActiveHDL等。7.2 测试和仿真工具测试和仿真工具24根据所使用的编程语言的不同,可以将仿真器分为Verilog HDL语言仿真器和VHDL语言仿真器;根据工作方式的不同,可以分为事件驱动(event-driven)仿真器和时钟驱动(cycle-driven)仿真器;等等。这些工具中,有的侧重于IC设计,如NC、VCS等;有的侧重于FPGA/CPLD的设计,如ModelSim和ActiveHDL等。ModelSim仿真器在FPGA/CPLD设计中应用广泛,这是因为ModelSim
16、的出品公司为各种FPGA/CPLD厂家提供了OEM版本的ModelSim工具。ModelSim仿真器可以用于仿真Verilog HDL语言,也可以用于仿真VHDL语言,同时也支持两种语言的混合仿真。25NC(根据使用语言的不同,分为NC-Verilog和NC-VHDL)和VCS分别由知名的EDA工具厂商Cadence和Synopsys公司提供,在IC设计中应用广泛。根据设计阶段的不同,仿真可以分为RTL行为级仿真、逻辑综合后门级仿真和时序仿真三大类型。在仿真的后两个阶段,除了Verilog HDL源代码外还需要添加两个文件,即工艺厂商提供的库单元文件和延时反标文件。267.2.1 ModelS
17、im的使用的使用Mentor公司的ModelSim是一种常用的HDL语言仿真软件,能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog HDL混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核。个性化的图形界面和用户接口,为用户加快纠错提供了强有力的手段。27ModelSim的主要特点是:RTL和门级优化,本地编译结构,编译仿真速度快,跨平台、跨版本仿真;单内核VHDL和Verilog HDL混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal
18、 Spy、虚拟对象Virtual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;C和Tcl/Tk接口,C调试;对SystemC直接支持,和HDL任意混合;支持System Verilog的设计功能;全面支持System Verilog、SystemC这样的系统级描述语言。28ModelSim分为SE、PE、LE和OEM等几个版本,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如大家都关心的仿真
19、速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和Linux混合平台,提供全面、完善以及高性能的验证功能,全面支持业界广泛的标准。29ModelSim采用用户图形界面操作模式,有许多窗口,如Main窗口、Workplace窗口、Objects窗口、Wave窗口、Dataflow窗口、List窗口、Source窗口和Watch窗口。图7.2-1为Mode
20、lSim的使用界面。主(Main)窗口:是ModelSim唯一的控制窗口,也是控制命令的输入窗口。窗口中显示了ModelSim执行仿真的动作以及相应的信息。结构(Workplace)窗口:该窗口按层次关系列出了工程中所有模块之间的关系。在结构窗口中选择固定模块,在信号窗口中会相应地显示这一模块信号的信息。30图7.2-1 ModelSim使用界面31 信号(Objects)窗口:显示被选中模块的信号、信号类型以及信号值。波形(Wave)窗口:显示仿真的结果波形。数据流(Dataflow)窗口:用于追踪数据流,并以层次化、图形化的方式显示结果。列表(List)窗口:以表格的形式显示仿真数据。源代
21、码(Source)窗口:显示工程中的相应源代码。观察(Watch)窗口:用于实时监测变量在仿真中的变化情况。32ModelSim有三种仿真流程,即基本仿真流程(Basic Simulation Flow)、工程仿真流程(Project Simulation Flow)和多库仿真流程(Multi-library Simulation)。在较复杂的设计中,推荐使用工程仿真流程,这种流程更容易管理和维护设计中遇到的各种类型的文件,事实上工程仿真流程包含了基本仿真流程和多库仿真流程的核心内容。本节主要介绍工程仿真流程。ModelSim工程仿真流程包括建立库、建立工程、将设计文档(包括源文件和测试文件)
22、加入到工程中并编译、仿真、调试。331建立并映射库建立并映射库建立并映射库有两种方法。第一种方法:在ModelSim中选择File/New/Library菜单命令,在弹出的对话框中填入库名称,点击OK按钮就完成了库的建立和映射。第二种方法:在ModelSim提示符下运行命令:vlib work2vmap work work234第一条命令实现的是建立新库,第二条命令实现的是映射新库。其中work2代表的是新建的工作库。运行完毕后即完成了库的建立和映射操作。运行完vlib命令后会产生work库目录,目录里存放有_info文件,用于记录各种库中的各种模块。运行完vmap会将ModelSim安装目录
23、下的ModelSim.ini复制到当前的工作目录中并将库和目录对应起来,在Library中增加了work=work2语句。352新建工程项目新建工程项目选择File/New/Project菜单命令,新建一个工程。在Project Name中输入工程名,在Project Location下的对话框中输入保存该工程所有文件的文件夹的路径名。Default Library Name对话框使用默认设置work即可。363输入源代码输入源代码选择Main窗口的File/New/Source/Verilog HDL菜单命令,出现源代码编辑窗口,将源代码输入并保存。源代码文件shiftregist.v如下:
24、module shiftregist(data_out,clk,rst_n,load,data_load,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft);parameter shiftregist_width=4;output shiftregist_width-1:0 data_out;input shiftregist_width-1:0 data_load;37input load,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftle
25、ft;reg shiftregist_width-1:0 data_out;always(posedge clk or negedge rst_n)if(!rst_n)data_out=0;else if(load)data_out=data_load;else if(ctr_shiftright)38 data_out=data_shiftright,data_outshiftregist_width-1:1;else if(ctr_shiftleft)data_out=data_outshiftregist_width-2:0,data_shiftleft;else data_out提示符
26、下,输入“run 500”,仿真器会再进行另外500 ns的仿真,共计仿真了600 ns。在主菜单、波形窗口或源代码窗口的工具条上单击run-all图标,仿真连续运行,直到被中断或在代码中遇到诸如Verilog HDL中的$stop语句等,暂停仿真。若单击break图标,则终止仿真运行。51在Main窗口中,单击Simulate/End Simulation选项,即可结束仿真。5211调试调试ModelSim的调试手段很多,主要包括在代码中设置断点、步进调试;观察Wave窗口,测量时间;通过Dataflow窗口,分析物理连接;通过Memory窗口,观察设计中存储器的数值;统计测试代码覆盖率;波
27、形比较。Wave窗口、Dataflow窗口和List窗口是常用的分析手段。531)使用Wave窗口观察设计波形是调试设计的一种方法,加载仿真后,就可以使用Wave窗口了。通过View/Wave菜单命令打开Wave窗口,如图7.2-3所示。在Wave窗口中可以采用多种手段进行调试,如向Wave窗口添加项目,对波形显示的图像缩放,在Wave窗口中使用游标,设置断点,存储Wave窗口格式,将当前的仿真结果存储到波形记录格式文件(WLF)中等。54在Wave窗口中,游标用于指示仿真的时间位置。当ModelSim首次画波形时,自动地将一个游标放在0时刻的位置。使用游标可以测量时间间隔,也可以查找信号跳变
28、的位置。在Wave窗口中单击任何位置,游标将重新回到鼠标单击的位置。可以对游标进行添加、命名、锁定和删除等操作。对波形信号可以进行设置断点操作。断点调试主要是为了观察待定的数据变化。在Wave窗口中,对信号设置断点十分方便:选中要设置断点的变量,单击鼠标右键,选择“Insert Breakpoint”选项,就完成了断点的设置。当选中的变量波形值发生变化时,仿真自动暂停。55图7.2-3 Wave窗口56要养成保存波形文件的良好习惯,以便进行项目的检查和对比。ModelSim中可以保存的波形文件大致有以下三种。(1)Format文件。在Wave窗口的主菜单中选择File/Save命令保存wave
29、 format(波形格式),在新打开的窗口中填入DO文件(仿真脚本文件)的存储路径E:/shiftregist/wave.do,单击OK按钮完成文件存储。57如果需要加载该文件,则在打开的Wave窗口中选择“File Open Format”,然后在Open Format窗口中选择wave.do文件,单击Open按钮打开该文件。ModelSim将恢复该窗口的信号和游标的前一次状态。(2)WLF文件(Datasets)。ModelSim仿真结果也可以存储到一个波形格式记录文件中,用于以后浏览和与当前仿真结果的比较。通常使用术语“Datasets”表示已创建并可重加载的WLF文件。58可在主菜单中
30、选择“File/Datasets/Save as”命令,在打开的Save as对话框中输入要保存的波形文件名称,点击OK按钮就完成了波形文件的保存。若使用File/Datasets/Open命令,在弹出的Open Dataset对话框中的Browse中输入Datasets的路径,则可打开已保存的波形文件。(3)VCD文件。VCD文件是IEEE 1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。它是一种EDA工具普遍支持的通用的波形信息记录文件。如何使用Verilog HDL中的系统函数来生成VCD文件请参考第5章。592)使用Dataflow窗口Dataflow窗口能够
31、对VHDL信号或者Verilog HDL的线网型变量进行图示化追踪,在界面中驱动信号或驱动线网变量的进程显示在左边,反之被驱动信号显示在右边。双击Wave窗口中需要追踪的信号即可打开Dataflow窗口,如图7.2-4所示。60图7.2-4 Dataflow窗口61Dataflow窗口有以下四个功能:(1)观察设计的连续性。可以检查设计的物理连接性,可以逐个单元地观测所关注的信号、互联网络或寄存器的输入/输出情况。(2)追踪事件:跟踪一个非预期输出的事件,使用嵌入波形观察器,可以由一个信号的跳变回溯追踪,查到事件源头。62(3)追踪未知态:该功能是工程师比较青睐的,在Dataflow窗口中使用
32、Trace/ChaseX功能,会不断往驱动级追踪不定态传递的源头。当选择ChaseX,图形界面不再变化时,就是不定态的源头了。之后就可以根据Dataflow窗口的结果,去定位源代码产生不定态的语句,并加以改正。(4)显示层次结构:可以使用层次化实例显示设计的连通性。633)使用List窗口List窗口以表格化的方式显示数据,可以方便地通过搜索特殊值或者特定条件的数据,简化分析数据的过程。选择菜单中的View/List命令打开List窗口,如图7.2-5所示。List窗口的左边显示的是仿真的时间点,右边显示的是每个时间点对应的变量值。64图7.2-5 List窗口65当要搜索特定的数值时,可在L
33、ist窗口中选择Edit/Search选项,在弹出的List Signal Search对话框中选择Search Type下的Search for Signal Value项,并输入想要搜索的数值。这种方式可以很方便地查找仿真中的特殊值,还可以确定特殊值在什么时间点发生,并以此时间点在Wave窗口中定位相应的波形。除此之外还可以设置条件搜索,方法是在Search Type下的Search for Expression中点击后面的Builder建立搜索条件。条件可以是信号、事件、边沿等。66与Wave窗口一样,List窗口可以保存数据的列表格式和列表内容。在List窗口中选择File/Save菜
34、单命令,在弹出的Save Format对话框中输入所保存列表的名称,点击保存即可。数据列表也是一个后缀名为.do的可执行脚本文件,通过命令do file_name.do可以打开列表文件。在File/Write List选项下选择一种格式,可完成对列表内容的保存。列表内容文件是.lst格式的文件,要查看文件内容可通过记事本打开该文件。6712ModeSim常用交互命令常用交互命令ModelSim图形化界面提供了多种指令,既可以是单步指令,通过在主窗口的命令窗口中输入命令;也可以构成批处理文件(如DO文件),用来控制编辑、编译和仿真流程。下面介绍ModelSim中用于仿真的一些常用指令,其它指令可
35、参考ModelSim说明书或帮助。681)run指令指令格式:run 其中,参数timesteps(时间步长)和time_unit(时间单位)是可选项,time_unit可以是fs(10-15s)、ps(10-12s)、ns(10-9s)、ms(10-6s)、sec(s)等几种。例如:“run”表示运行;“run 1000”表示运行1000个默认的时间单元(ps);“run 3500ns”表示运行3500 ns;“run-continue”表示继续运行;“run-all”表示运行全程。692)force指令指令格式:force ,其中,参数item_name不能默认,它可以是端口信号,也可以是
36、内部信号,而且还支持通配符号,但只能匹配一个;参数value也不能默认,其类型必须与item_name一致;time是可选项,支持时间单元。例如:“force clr 1 100”表示经历100个默认时间单元延迟后为clr赋值1;“force clr 1,0 1000”表示为clr赋值1后,经历1000个默认时间单元延迟后为clr赋值0。703)force-repeat指令指令格式:force ,-repeat 指令功能:每隔一定的周期(period)重复一定的force指令。该指令常用来产生时钟信号。例如:“force clk 0 0,1 30-repeat 100”(-repeat指令可以
37、用-r替代)表示强制clk从0时间单元开始,起始电平为0,结束电平为1,忽略时间(即0电平保持时间)为30个默认时间单元,周期为100个默认时间单元,占空比为(100-30)/100=70%。714)force-cancel指令指令格式:force-cancel 指令功能:执行period周期时间后取消force指令。例如:“force clk 0 0,1 30-repeat 60-cancel 1000”表示强制clk从0时间单元开始,直到1000个时间单元结束。725)view指令指令格式:view窗口名指令功能:打开ModelSim窗口。例如:“view source”表示打开源代码窗口
38、;“view wave”表示打开波形窗口;“view dataflow”表示打开数据流窗口。7313DO文件文件创建DO文件就像在文本文件中输入命令行一样简单,当然也可以将主窗口的复本保存为DO文件。在ModelSim中创建一个DO文件,在该DO文件中向波形窗口添加信号,并给这些信号提供激励,而后进行仿真。74选择File/New/Source/Do菜单命令,创建一个DO文件。在窗口中输入以下命令:vlib workvmap workvlog shiftregist.v testbench_shiftregist.vvsim shiftregist.v add wave/testbench_s
39、hiftregist.v/*run 2000view dataflow75将以上文件保存为shiftregist.do文件,每次使用命令do shiftregist.do即可自动执行想要的仿真动作。shiftregist.do的功能:新建work库,将work库映射到当前工作目录,编译shiftregist.v、testbench_shiftregist.v文件(默认编译到work库下),仿真work库中名为testbench_shiftregist的模块将testbench_shiftregist的所有信号加入到波形图中。完成计数器仿真批处理文件的编辑后,以“shiftregist.do”为
40、文件名将其保存在与计数器设计文件相同的文件夹中,并通过ModelSim编译。76在ModelSim的命令窗口中执行“shiftregist.do”命令,可完成对移位寄存器的仿真。777.2.2 NC-Verilog的使用的使用Cadence NC-Verilog 是业界优秀的Verilog HDL仿真器,提供了高性能、高容量的事务/信号视窗和集成的覆盖率分析,并支持Verilog HDL 2001特性。NC-Verilog 完全兼容Incisive一体化平台(unified platform),使得用户能够很容易实现纳米(nanometer)工艺集成电路上系统设计的数字化验证。NC-Veril
41、og 为Verilog HDL设计提供了业界优秀的仿真性能,它使用独特的本地Incisive一体化仿真器编译架构,从Verilog HDL直接生成高效的机器码用于高速执行。78一体化的NC-Verilog 仿真和调试环境,很容易管理多个设计的运行和分析设计与测试平台。它的事务/波形视窗和原理图追踪器能迅速追踪设计行为到源代码。NC-Verilog是全编译仿真器,它直接将Verilog HDL代码编译为机器码执行。其过程为:利用ncvlog命令来编译Verilog HDL源文件,按照编译指导(compile directive)检查语义及语法,产生中间数据;ncelab(描述)按照设计指示构造设
42、计的数据结构,建立信号连接,产生可执行代码和中间数据;ncsim(仿真)启动仿真核,核调入设计的数据结构,构造事件序列,调度并执行事件的机器码。791工作模式的选择工作模式的选择运行NC-Verilog的命令是nclaunch。第一次运行的时候,需要用户选择工作模式。这里可供选择的主要是Multiple Step和Single Step,请选择Multiple模式,此模式对应的仿真流程是ncvlog(编译)、ncelab(描述)、ncsim(仿真)三步。两种工作模式的详细说明可见参考手册。图7.2-6为NC-Verilog的启动界面。80图7.2-6 NC-Verilog的启动界面812建立工
43、作环境建立工作环境作为编译仿真工具,最核心的是源代码部分,由于NC-Verilog的源文件编辑界面效果不佳,这里建议使用其它支持VHDL/Verilog HDL语言的工具编写代码,在确保没有语法错误后再导入到NC-Verilog中进行编译。选择File/Set Design Directory菜单命令,在弹出的对话框中设置如下选项。82 Design Directory:一般是项目所在的目录,即启动NCLaunch 时所在的目录。Library Mapping File:点击“Create cds.lib File”按钮,会弹出一个“Create a cds.lib file”对话框,其中的文
44、件名是“cds.lib”,选择“Save”,此时在弹出的对话框中选择“Include Default Libraries”,将会在当前项目目录下建立INCA_lib 文件夹用来保存整个设计中全部的库信息。Work Library:在建立了cds.lib 之后将出现worklib 的默认选项,无需更改。83需要说明的是,当完成上述环境设置之后,在工作平台的右上方将出现“Error:Unable to find an hdl.var file to load in”的警告,暂时无需关注此警告,在进行任意文件编译之后软件将自动生成hdl.var 文件,重新载入工作目录后(File/Set Desig
45、n Directory)警告将消失。843编译编译用鼠标左键选择NCLaunch界面左窗口中的源文件drink_machine.v和test_drink_machine.v。若有多个设计文件,可以按住Ctrl键的同时选择。第一次编译时选择Tool/Verilog HDL Compiler菜单项,以后可以直接点击工具栏中的vlog按钮。应特别注意的是,在编译成功第一个文件后应重新载入工作目录(File/Set Design Directory),以确保警告消失。854载入设计文件载入设计文件用鼠标左键选择NCLaunch界面右窗口中工作目录(worklib)下的顶层实体worklib/count
46、er_tb/module(必须提醒的是:如果右边的worklib 前面没有出现“+”,则请首先检查右边工作平台上对应的的工作路径,确定工作路径已经转换到了和左边一致的目录下),然后选择Tool/Elaborator菜单命令,在弹出的对话框里选中“Access visibility”的Read属性,然后确定。载入设计文件后的NCLaunch界面如图7.2-7所示。86图7.2-7 载入设计文件875仿真仿真用鼠标左键选择NCLaunch界面右窗口中Snapshots下的顶层实体(snapshots/worklib.shiftregist_tb:module)。然后选择Tool/Simulator
47、菜单命令,在弹出的对话框中单击“确定”按钮,将弹出仿真器窗口。弹出的默认窗口有两个,点击Design Browser/SimVision窗口工具栏中的波形按钮,开启波形仿真窗口。展开Design Browser/SimVision窗口左边浏览器中的Simulator,在右边的列表中选择希望观察的信号。然后,点击鼠标右键选择send to Waveform Windows。88根据实际波形的需要,在 Waveform/SimVision 窗口内把时间显示单位换成s、ns或ps,然后开始仿真,有两种方法:(1)选择Simulation/Run或者直接点击工具栏中的“开始”按钮,开始波形仿真。如果加
48、入了新的信号,需要重新仿真,点击复位,再次仿真。(2)在Console窗口直接输入命令使仿真一段时间,如输入run 2000 ns。89仿真验证在整个项目的过程中有着重要的意义,科学合理的仿真方法和仿真技巧可以达到事半功倍的效果;反之,如果只是一味地进行理论分析而不会利用多种工具的优点,则可能会使实际项目寸步难行。设计者在设计过程中应时刻仿真验证自己的设计。一个系统由很多模块构成,建议每个模块完成后都进行完整的仿真测试,不要等到整个系统完成了再仿真。这样可以缩短整个设计的周期,提高设计效率。90逻辑综合是前端电路模块设计的重要步骤之一。逻辑综合是在标准单元库和特定设计约束的基础上,把设计的高层
49、次描述转换成优化的门级网表的过程。Design Compiler是Synopsys公司用于电路逻辑综合的核心工具,7.3 综综 合合 工工 具具91它可以方便地将HDL语言描述的电路转换到基于工艺库的门级网表,它是ASIC设计领域使用较多的逻辑综合工具之一。FPGA逻辑综合领域存在着多种逻辑综合工具,其中Synplify以其逻辑综合速度快、逻辑综合效果好而备受关注,成为FPGA设计逻辑综合的常用工具。927.3.1 Synplify的使用的使用Synplify、Synplify Pro和Synplify Premier是Synplicity公司(Synopsys公司于2008年收购了Synpl
50、icity公司)提供的专门针对FPGA和CPLD实现的逻辑综合工具,Synplicity的工具涵盖了可编程逻辑器件(FPGAs、PLDs和CPLDs)的综合、验证、调试、物理综合及原型验证等领域。Synplify Pro是高性能的FPGA综合工具,为复杂可编程逻辑设计提供了优秀的HDL综合解决方案:包含的BEST算法可对设计进行整体优化;93自动对关键路径做Retiming,可以提高性能25%以上;支持VHDL和Verilog HDL的混合设计输入,并支持网表*.edn文件的输入;增强了对System Verilog的支持;Pipeline功能提高了乘法器和ROM的性能;有限状态机优化器可以自
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。