第一讲_HDL语言概述.ppt
第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系HDL 硬件描述语言硬件描述语言第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系教学目标教学目标了解集成电路的现状和发展趋势掌握Verilog HDL的词法、语法、语句掌握可综合程序的编写方法掌握仿真程序的编写方法掌握复杂数字电路的设计方法第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系教学方式及考核教学方式及考核考核规则 实验 30%期末考试 70%第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系主要参考书主要参考书Verilog HDL数字设计与综合(第二版)-夏宇闻译,电子工业出版社复杂数字逻辑系统的Verilog HDL设计技术和方法-夏宇闻编,高等教育出版社第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系第第 一讲一讲 Verilog硬件描述语言概述硬件描述语言概述 内容:v数字系统概述v硬件描述语言历史vVHDL与VerilogHDL比较v有关HDL的几个重要基本概念vVerilogHDL的设计流程v常用仿真和综合工具vVerilogHDL入门第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系数字系统概述数字系统概述v常见数字系统:常见数字系统:微处理机系统、数字信号处理系统、数字通信系统、数字编解码和加解密电路、数字多功能智能接口等。目前数字系统单片等效逻辑门总数达到几百甚至几千万门的已较常见。存储器v数字系统的组成数字系统的组成:数字系统通常由输入电路、输出电路、控制电路、数字处理电路和存储器组成。控制电路数字处理电路输入电路输出电路第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系数字系统实现方法数字系统实现方法v通用集成电路。如:74系列,4000系列等,电路体积大、重量大、功耗大、可靠性低。(70、80年代主流)v专 用 集 成 电 路 ASIC(Application Specific IntegratedCircuits),如:Modem,MP3decoder等。(90年代盛行,现在大规模产品中继续使用)v可编程逻辑阵列(ProgrammableLogicDevice)。如:Xilinx的spartan系列,Altera的Cyclone系列。(现在逐步蚕食ASIC的低端市场,并将成为一种主流方法)v通用微处理器、DSP。如8051单片机、ARM32位MCU,TMS320C5x系列DSP等。(80年代,现在仍为一种主流方法)v混合使用各种器件,发挥各自的优势。(发展趋势)第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系怎样设计如此复杂的系统怎样设计如此复杂的系统?传统的设计方法:-查用器件手册;-选用合适的微处理器和电路芯片;-设计面包板和线路板;-调试;-定型;-设计复杂的系统(几十万门以上)极其困难。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系 怎样设计如此复杂的系统怎样设计如此复杂的系统?现代的设计方法:-选用合适的EDA仿真工具;-选用合适电路图输入和HDL编辑工具;-逐个编写可综合HDL模块;-逐个编写HDL测试模块;-逐个做VerilogHDL电路逻辑访真;-编写VerilogHDL总测试模块;-做系统电路逻辑总仿真;第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系 怎样设计如此复杂的系统怎样设计如此复杂的系统?现代的设计方法(续前):-选用合适的基本逻辑元件库和宏库-租用或购买必要的IP核;-选用合适的综合器;-进行综合得到门级电路结构;-布局布线,得到时延文件;-后仿真;-定型,FPGA编码或ASIC投片第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系数字系统的自顶向下模块化设计数字系统的自顶向下模块化设计自顶向下自顶向下(Top-Down)Top-Down)设计的基本概念设计的基本概念集成电路制造工艺技术的改进,可以在一个芯片上集成数十乃至数百万个器件,这个设计不可能由一个设计师独立设计。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系 自顶向下的设计(即TOP_DOWN设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的元件来实现为止。对于设计开发整机电子产品的来说,新产品的开发总是从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA技术的发展使得设计师有可能实现真正的自顶向下的设计。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系 TOP_DOWN设计思想思想第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系层次管理的基本概念层次管理的基本概念复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设计方案的逐次分解。在设计过程中的任意层次,硬件至少有一种描述形式。硬件的描述特别是行为描述通常称为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件结构由这些模块的互连描述,该层次的硬件的行为由这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互连而成。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系具体模块的设计编译和仿真的过程具体模块的设计编译和仿真的过程在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现。因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时行为描述往往需要用电路逻辑来实现,这时的模块不仅需要通过仿真加以验证,还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。模块设计流程主要由两大主要功能部分组成流程主要由两大主要功能部分组成:1)设计开发:即从编写设计文件-综合到布局布线-投片生成这样一系列步骤。2)设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系用用EDA设设计计数数字字系系统统的的流流程程 HDL 设 计 文 件 HDL 功 能 仿 真 HDL 综合 优化、布局布线布线后门级仿真 电 路 功 能 仿 真电 路 图 设计文件 电路制造工艺文件 或FPGA码流文件有 问 题没问题有问题没问题有 问 题没 问 题与实现逻辑的物理器 件有关的工艺技术文 件确定实现电路的具体库名第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系对应具体工艺器件的优化、映象、和布局布线对应具体工艺器件的优化、映象、和布局布线由于各种ASIC和FPFA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应才能进行准确的优化、映象、和布局布线。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理从而大大提高设计效率。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系硬件描述语言硬件描述语言HDLHDL硬件描述语言(HDL)是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化(在下面简称为EDA)工具进行仿真,再自动综合到门级电路,再用ASIC或FPGA实现其功能。这种称之为高层次设计(High-Level-Design)的方法已被广泛采用。据统计,在美国硅谷目前约有90以上的ASIC和FPGA已采用硬件描述语言方法进行设计。VHDL和VerilogHDL语言先后成为IEEE标准。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系硬件描述语言硬件描述语言历史历史vVHDL于1980年开始在美国国防部的指导下开发,完成于1983年,并于1987年成为IEEE的标准。当初开发这种语言,是出于美国国防部采购电子设备的需要。v通过VHDL,供应商要把自己生产的集成电路芯片的行为描述出来。如果有必要让其他厂商生产代用品,他们只需照着VHDL文档,设计出行为与其相同的芯片。vVerilogHDL是由(GDA)GatewayDesignAutomation公司大约在1983年左右开发的。其架构同VHDL相似,主要被用来进行硬件仿真。由于是由公司内工程师开发的,更注重实用性,Verilog要比VHDL简洁得多。vVerilogHDL于1995年成为IEEE标准,称IEEEStd13641995。v2001年,IEEEStd1364-2001诞生。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系HDLHDL不是硬件设计语言不是硬件设计语言 vVHDL和Verilog都不是为了设计硬件而开发的,当初制订HDL语言标准的时候,并没有考虑这些代码如何用硬件来实现。因此,有些代码写起来简单,实现起来却可能非常复杂,或者就不可能实现。vHDL是Hardware Description Language的缩写,正式中文名称是“硬件描述语言”。也就是说,HDL并不是“硬件设计语言(Hardware Design Language)”。v明确VHDL和Veriglog并非是硬件设计语言,就理解不能随心所欲地写仅仅符合语法的HDL代码来设计硬件电路。设计硬件电路的HDL必须满足可综合条件。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系为什么要用硬件描述语言来设计?为什么要用硬件描述语言来设计?使用HDL语言设计具有如下优点:v能形式化地抽象表示电路的结构和行为,便于人和计算机理解;v支持逻辑设计中不同层次和领域的描述;v可以借用类似计算机软件高级语言的方法简化电路的描述;v具有电路仿真与验证机制以保证设计的正确性;v支持电路描述由高层到低层的综合转换;v硬件描述与实现工艺无关;v便于文档管理,易于理解和设计重用。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系VHDL与与Verilog HDL比较比较相对相对VHDL,Verilog HDL特点:特点:v 较多的第三方工具的支持v语法结构比VHDL简单v学习起来比VHDL容易v仿真工具使用简便v测试激励模块容易编写第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系Verilog HDL特点特点1vVerilog HDL是一种用于数字逻辑电路描述的语言,主要用于逻辑电路的建模、仿真和设计。v用Verilog HDL描述的电路设计就是该电路的 Verilog HDL模型。vVerilog HDL 既是一种行为描述的语言也是一种结构描述的语言。既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。vVerilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系Verilog HDL特点特点2v 语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别语言本身提供了各种层次抽象的表述,可以用详细程度有很大差别的的多层次模块组合来描述一个电路系统。的的多层次模块组合来描述一个电路系统。v系统级(system):用高级语言结构实现设计模块行为的模型。(主要用于仿真)v算法级(algorithmic):用高级语言结构实现设计算法行为的模型。(部分可综合)vRTL级(Register Transfer Level):描述数据在寄存器之间流动和处理这些数据行为的模型。(可综合)v门级(gate-level):描述逻辑门以及逻辑门之间连接的模型。v开关级(switch-level):描述器件中三极管和存储器件以及它们之间连接的模型。vVerilog 语言的这种多抽象级别的描述能力,使我们可以在数字系统设计的各个阶段都使用同一种语言。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系行为级行为级module muxtwo(out,a,b,sl);input a,b,sl;output out;reg out;always(sl or a or b)if(!sl)out=a;else out=b;endmoduleabslout第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系门级门级modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;notu1(ns1,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#2u4(out,sela,selb);endmoduleoutabslselbselansl第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系Verilog HDL特点特点3v一个复杂电路的完整Verilog HDL模型是由若个 Verilog HDL 模块构成的,每个模块又由若干个子模块构成,便于模块化设计。vVerilog HDL可以精确地建立信号的模型。这是因为在Verilog HDL中,提供了延迟和输出强度的原语来建立精确程度很高的信号模型。vVerilog HDL作为一种高级的硬件描述编程语言,有着类似C语言的风格。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似,提供了各种算术运算符、逻辑运算符、位运算符。如果读者已经掌握C语言编程的基础,那么学习 Verilog HDL并不困难,我们只要对Verilog HDL某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系Verilog HDL 的应用方面的应用方面uASIC和FPGA设计师可用它来编写可综合的代码。u描述系统的结构,做高层次的仿真。u验证工程师编写各种层次的测试模块对具体电路设计工程师所设计的模块进行全面细致的验证。u库模型的设计:可以用于描述ASIC和FPGA的基本单元(Cell)部件,也可以描述复杂的宏单元(MacroCell)。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系有关有关VerilogVerilog HDL HDL的几个重要基本概念的几个重要基本概念逻辑综合逻辑综合:通过工具将HDL模块的行为描述转换成门级电路,并优化电路结构。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系逻辑综合流程逻辑综合流程第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系可综合的VerilogHDL模型算法级(AlgorithmLevel)-部分可综合寄存器传输级(RegisterTransferLevel)-完全可综合门级(GateLevel)-完全可综合开关级(SwitchLevel)-用于基本逻辑器件仿真模型的建库第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系综合的要点在综合之前,VerilogHDL源代码的风格必须经过严格检查,仅仅符合语法不一定能综合;不同的综合工具性能有差别,支持的VerilogHDL源代码的语法集合和风格也略有差别。综合工具必须在已知基本逻辑单元库的前提下,才能进行综合。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系有关有关VerilogVerilog HDL HDL的几个重要基本概念的几个重要基本概念u寄存器传输级寄存器传输级Verilog HDL模块模块:也可称为RTL(Verilog)HDL模块。它是符合特定标准和风格的描述状态转移和变化的VerilogHDL模块。能用综合器把它转换为门级逻辑。uVerilog HDL测试模块测试模块:用VerilogHDL描述的模块,可以用来产生测试信号序列并可以接收被测试模块的信号,用于验证所设计的模块是否能正常运行,往往不可综合成具体门级电路。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系仿真流程仿真流程第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系布局布线布局布线v把用综合器自动生成的门级网表(EDIF)通过运行一个自动操作的布局布线工具,使用某种FPGA或ASIC工艺库器件实现门级网表中电路,并加以连接的过程。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系VerilogVerilog HDL HDL 的设计流程的设计流程技术指标:技术指标:用文字表示用算法表示用高级行为的Verilog模块表示RTL/RTL/功能级:功能级:用可综合的Verilog模块表示门级门级/结构级:结构级:用实例引用的Verilog模块表示版图布局版图布局/物理级:物理级:用几何形状来表示 功能(前)仿真系统描述逻辑综合系统仿真后仿真布局布线门级仿真RTL级设计第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系VerilogVerilog HDL HDL 的设计流程的设计流程v系统仿真:系统仿真:验证系统功能和模块分割的合理性v前仿真:前仿真:即 RTL级仿真,检查有关RTL级模块设计是否正确。v逻辑综合:逻辑综合:把RTL级模块转换成门级电路。v门级仿真:门级仿真:对门级电路做验证,检查门的互连逻辑功能是否正确。v布局布线:布局布线:将门级电路在FPGA或ASIC上具体实现。v布局布线后仿真:布局布线后仿真:加上器件和互联线延时的仿真,与真实的电路最接近的验证。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系常用仿真和综合工具常用仿真和综合工具常用的仿真工具:常用的仿真工具:常用的仿真工具:常用的仿真工具:-VerilogVerilog-XL-XL -NC-NC-VerilogVerilog -ModelSimModelSim -VeriBestVeriBest -ViewLogicViewLogic -.常用的综合工具:常用的综合工具:常用的综合工具:常用的综合工具:-SynplifySynplify -Exemplar -Exemplar -Synopsys Express -Synopsys Express -Synopsys Designer -Synopsys Designer -.-.第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系VerilogVerilog HDL HDL入门入门目的目的:v通过简单的例子了解通过简单的例子了解VerilogVerilog模块的基本构成模块的基本构成v了解了解VerilogVerilog模块的组成要素模块的组成要素v了解了解VerilogVerilog模块的仿真测试模块的仿真测试第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系简单的简单的 VerilogVerilog HDL HDL 模块模块1 1v下面先介绍几个简单的Verilog HDL程序,然后从中分析Verilog HDL程序的特性。例例1.1:1.1:module adder(count,sum,a,b,cin);input 2:0 a,b;input cin;output count;output 2:0 sum;assign count,sum=a+b+cin;endmodule 这个例子描述了一个三位的加法器。从例子中可以看出整个Verilog HDL程序是嵌套在 module 和 endmodule 声明语句里的。模块名第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系简单的简单的 VerilogVerilog HDL HDL 模块模块2 2例例1.21.2:module compare(equal,a,b);output equal;/声明输出信号equal input 1:0 a,b;/声明输入信号a,b assign equal=(a=b)?1:0;/*如果两个输入信号相等,输出为1。否则为0*/endmodule这 个 程 序 描 述 了 一 个 比 较 器.在 这 个 程 序 中,/*.*/和/.表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。模块的输入输出端口名逻辑功能的数据流描述第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系简单的简单的 VerilogVerilog HDL HDL 模块模块3 3例例1.31.3:modulemux2(out,a,b,sl);inputa,b,sl;outputout;notu1(ns1,sl);andu2(sela,a,nsl);andu3(selb,b,sl);oru4(out,sela,selb);endmodule例中not、and、or是verilog内建逻辑门器件。程序通过调用实例元件来实现其功能。逻辑功能的门级结构描述abslselbselansl第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系简单的简单的 VerilogVerilog HDL HDL 模块模块4 4例例2.1.42.1.4:module trist1(out,in,enable);output out;input in,enable;mytri tri_inst(out,in,enable);endmodule module mytri(out,in,enable);output out;reg out;input in,enable;always(in or enable)if(enable)out=in;else out=1bz;endmodule子模块。通过这种结构性模块构造可构成大型模块。上层模块三态门逻辑功能的行为描述。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系VerilogVerilog HDL HDL 简单模块小结简单模块小结通过上面的例子可以看到通过上面的例子可以看到:vVerilog HDL程序是由模块构成的,模块是可以进行层次嵌套。v每个模块要进行端口定义,并说明输入输出口,然后对模块的功能进行逻辑描述。v逻辑描述方法有:门级结构描述、数据流描述、行为描述。vVerilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分写多行。v除了endmodule语句外,每个语句和数据定义的最后必须有分号。v可以用/*.*/和/.对Verilog HDL程序的任何部分作注释。一个好的,有使用价值的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系模块的结构 Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成的:一)描述接口;二)描述逻辑功能,即定义输入是如何影响输出的。下面举例说明:第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系模块的结构从上面的例子可以看出:-Verilog模块结构完全嵌在module和endmodule声明语句之间;-每个Verilog程序包括四个主要部分:端口定义、端口说明、内部信号声明、功能定义。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系模块的组成要素模块的组成要素模块定义module(portlist)时序特性timigspecifications端口说明Portdeclarations输入input双向inout输出output数据类型说明Datatypedeclarations线网类型net参数parameter寄存器类型register电路功能描述Circuitfunctionality子程序subprograms任务task函数function系统任务和函数Systemtask&function编译指令Compilerdirectives连续赋值Continuousassignment赋值语句assign过程块Proceduralblocks过程块语句initialblockalwaysblock模块实例instantiation第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系模块模块的仿真的仿真测试测试如何检查模块功能是否正确?如何检查模块功能是否正确?v需要有测试激励信号输入到被测模块。v需要测试被测模块的各种输出信号(功能仿真)。v需要将功能和行为描述的Verilog模块转换为门级电路互连的电路结构(综合)。v需要对已经转换为门级电路结构的逻辑进行测试(门级电路仿真)。v需要对布局布线后的电路结构进行测试。(布局布线后仿真)。第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系模块模块的仿真的仿真测试平台(测试平台(testbenchtestbench)被测模块被测模块激激励励和和控控制信号制信号输输出出响响应应和验证和验证第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系仿真仿真测试模块测试模块测试模块常见的形式:测试模块常见的形式:moduletestbench;/测试平台无输入输出端口reg;/被测模块输入/输出变量类型定义wire;initialbegin;end/产生测试信号always#delaybegin;endTestedmdm(.in1(ina),.in2(inb),.out1(outa),.out2(outb);/被测模块的实例引用initialbegin.;.;.end/记录输出和响应endmodule第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系如何描述激励信号如何描述激励信号module test_mux2;/module test_mux2;/无输入输出端口regA,B,Sel;wireOut;/引用多路器实例,作为被测模块mux2m(Out,A,B,Sel);/加入激励信号,即产生输入a、b、selinitialbeginA=0;B=1;Sel=0;#10B=0;#10B=1;Sel=1;#10A=1;#10$stop;endendmodule语句间延时仿真暂停系统任务absel040103020第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系如何观察被测模块的信号如何观察被测模块的信号v在initial块中,用系统任务$time和$monitor观察模块响应。v$time返回当前的仿真时刻。v$monitor只要在其变量列表中有某一个或某几个变量值发生变化,便在仿真单位时间结束时显示其变量列表中所有变量的值。例:例:initial begin$monitor($time,“Out=%b A=%b B=%b Sel=%b”,Out,A,B,Sel);end第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系moduletest_mux2;/无输入输出端口regA,B,Sel;wireOut;mux2m(Out,A,B,Sel);initialbeginA=0;B=1;Sel=0;#10B=0;#10B=1;Sel=1;#10A=1;#10$stop;endinitialbegin$monitor($time,“Out=%b,A=%b,B=%b,Sel=%b,Out,A,B,Sel);endendmodule输出:0Out=0A=0B=1Sel=010Out=0A=0B=0Sel=020Out=1A=0B=1Sel=130Out=1A=1B=1Sel=140Out=1A=1B=1Sel=1第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系moduletest_compare;reg1:0a,b;/测试激励信号a,bwireequal;comparec(equal,a,b);initialbegina=2b00;b=2b00;#10a=2b01;#10b=2b01;#10a=2b10;#10b=2b10;#10a=2b11;endinitialbegin$monitor($time,“a=%b,b=%b,equal=%b”,a,b,equal);endendmodule第一讲第一讲 VerilogVerilog硬件描述语言概述硬件描述语言概述西安邮电学院通信工程系moduletest_adder;reg2:0A,B;regCIN;wire2:0SUM;wireCOUNT;addera1(.count(COUNT),.a(A),.b(B),.cin(CIN),.sum(SUM);initialbeginA=3b000;B=3b000;CIN=0;#10A=3b001;B=3b001;#10A=3b101;B=3b001;#10A=3b101;B=3b010;CIN=1;#10A=3b101;B=3b101;endinitialbegin$monitor($time,A=%b,B=%b,CIN=%b,SUM=%b,COUNT=%b,A,B,CIN,SUM,COUNT);endendmodule