14Verilog数字集统缓计教程(第 2 版)近年来,FPGA和ASIC的设计在规模和复杂度方面不断取得进展,而对逻辑电路及系统的设计的时间要求却越来越短。这些因素促使设计人员采用高水准的设计工具,如:硬件描述语言(VerilogHDL或VHDL)来进行设计。1.5.2VerilogHDL设计法与传统的电路原理图输入法的比较如1.5.1所述,采用电路原理图输入法进行设计,具有设计的周期长,需要专门的设计工具,需手工布线等缺陷。而采用Verilog输人法时,由于VerilogHDL的标准化,可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并在不同规模的应用时可以较容易地做修改。这不仅是因为用VerilogHDL所完成的设计,其信号位数是很容易改变的,可以很容易地对它进行修改,来适应不同规模的应用;在仿真验证时,仿真测试矢量还可以用同一种描述语言来完成,而且还因为采用VerilogHDL综合器生成的数字逻辑是一种标准的电子设计互换格式(EDIF)文件,独立于所采用的实现工艺。有关工艺参数的描述可以通过VerilogHDL提供的属性包括进去,然后利用不同厂家的布局布线工具,在不同工艺的芯片上实现。采用Verilog输入法最大的优点是其与工艺无关性。这使得工程师在功能设计、逻辑验证阶段,可以不必过多考虑门级及工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。实际上这是利用了计算机的巨大能力在EDA工具的帮助下,把逻辑验证与具体工艺库匹配、布线及时延计算分成不同的阶段来实现从而减轻了人们的烦琐劳动。1.5.3Verilog的标准化与软核的重用Verilog是在1983年由GATEWAY公司首先开发成功的,经过诸多改进,于1995年11月正式被批准为Verilog1EEE1364-1995标准,2001年3月在原标准的基础上经过改进和补充又推出VerilogIEEE1364-2001新标准。2005年10月又推出了Verilog语言的扩展,即SystemVerilog(1EEE1800-2005标准)语言,这使得Verilog语言在综合、仿真验证和IP模块重用等性能方面都有大幅度的提高,更加拓宽了Verilog的发展前录。VerilogHDL的标准化大大加快了VerilogHDL的推广和发展。由于VerilogHDL设计方法的与工艺无关性,因而大大提高了Verilog模型的可重用性。把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的VerilogHDL模型称之为“软核”(SoftCore)。而把由软核构成的器件称为虚拟器件,在新电路的研制过程中,软核和虚拟器件可以很容易地借助EDA综合工具与其他外部逻辑结合为一体。这样,软核和虚拟器件的重用性就可大大缩短设计周期,加快了复杂电路的设计。目前国际上有一个叫作虚拟接口联盟的组织(VirtualSocketlnterfaceAlliance)来协调这方面的工作。1.5.4软核、固核和硬核的概念及其重用在5.1.3节中我们已介绍了软核的概念,下面再介绍一下固核(firmcore)和硬核(hardcore)的概念。把在某一种现场可编程门阵列(FPGA)器件上实现的、经验证是正确的、总门数在5000门以上电路结构编码文件称为“固核"。把在某一种专用集成电路工艺的(ASIC)器
第1章Verilog的基库知识15件上实现的、经验证是正确的、总门数在5000门以上的电路结构版图掩膜称为“硬核”。显而易见,在具体实现手段和工艺技术尚未确定的逻辑设计阶段,软核具有最大的灵活性,很容易借助EDA综合工具与其他外部逻辑结合为一体。当然,由于实现技术的不确定性,有可能要作一些改动以适应相应的工艺。相比之下固核和硬核与其他外部逻辑结合为一体的灵活性要差得多,特别是电路实现工艺技术改变时更是如此:而近年来电路实现工艺技术的发展是相当迅速的,为了逻辑电路设计成果的积累,和更快更好地设计更大规模的电路发展软核的设计和推广软核的重用技术是非常有必要的。新一代的数字逻辑电路设计师必须掌握这方面的知识和技术。Verilog语言以及它的扩展SystemVerilog是设计可重用的IP,即软核、固核、硬核和验证用虚拟核所必须的语言。1.6采用硬件描述语言(VerilogHDL)的设计流程简介1.6.1自顶向下(Top_Down)设计的基本概念现代集成电路制造工艺技术的改进,使得在一个芯片上集成数十万乃至数千万个器件成为可能。但很难设想仅由一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师(Architect)划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师。这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自已所承担的部分,而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。为了提高设计质量,如果其中有一部分模块可由商业渠道得到,用户可以购买它们的知识产权的使用权(IP核的重用),以节省时间和开发经费,图1.3为自向下(Top一Down)的示意图,以设计树的形式绘出。换明棋C图1.3Top._DowD设计思想
16Verilog数字来统银计数核(第2版)自顶向下的设计(即Top_Down设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的基本元件来实现为止。对于设计开发整机电子产品的单位和个人来说,新产品的开发总是从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA技术的发展使得设计师有可能实现真正的自顶向下的设计。1.6.2层次管理的基本概念复杂数字逻辑电路和系统的层次化、结构化设计隐含着对系统硬件设计方案的逐次分解。在设计过程中的任意层次,至少得有一种形式来描述硬件。硬件的描述特别是行为描述通常称为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件结构由这些模块的互联描述,该层次的硬件的行为由这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互联而成。如此下去,完整的硬件设计就可以由图1.3所示的设计树描述。在这个设计树上,节点对应着该层次上基本单元的行为描述,树枝对应着基本单元的结构分解。在不同的层次都可以进行仿真以对设计思想进行验证。EDA工具提供了有效的手段来管理错综复杂的层次,即可以很方便地查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。1.6.3具体模块的设计编译和仿真的过程在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考和各模块的指标分配,并非具体电路的实现,因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时,行为描述往往需要用电路逻辑来实现。这时的模块不仅需要通过仿真加以验证,还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。图1.4所示的流程图简要地说明了模块的编译和测试过程。从图中可以看出,模块设计流程主要由两大主要功能部分组成:(1)设计开发即从编写设计文件→综合到布局布线一电路生成这样一系列步骤。(2)设计验证也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。1.6.4具体工艺器件的优化、映像和布局布线由于各种ASIC和FPGA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应,才能进行优化、映像和布局布线,以及布局布线后准确的仿真验证。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,EDA工具就会自动地根据这一文件选择相应
第1章Verilog基本知识17+HDL电路图设计文件设计文件1电路HDL功能仿真功能仿真+1有有有问题吗有问题吗无确定实现电路的HDL综合具体库名,指定综谷生成的网表类型与物理器件有关优化、布局布线的布线约束等工艺技术文件土布线后门级仿真支有人有问题吗无了电路制造工艺文件或FPGA码流文件函1.4HDL设计流程图的库和模型进行准确的处理,从而大大提高设计效率。小结采用VerilogHDL设计方法比采用电路图输入的方法更有优越性,这就是为什么美国等国家在进入20世纪90年代以后纷纷采用HDL设计方法的原因。在两种符合IEEE标准的硬件描述语言中,VerilogHDL与VHDL相比更加基础、更易学习,掌握HDL设计方法应从学习VerilogHDL设计方法开始。VerilogHDL适用于复杂数字逻辑电路和系统的总体仿真、子系统仿真和具体电路综合等各个设计阶段。由于Top_Down.的设计方法是首先从系统设计入手,从顶层进行功能划分和结构设计。系统的总体仿真是项层进行功能划分的重要环节,这时的设计是与工艺无关的。由于设计的主要仿真和调试过程是在高层次完成的所以能够革期发现结构设计上的错误,避免设计工作的浪费,间时也减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统级划分和管理整个项目,使得几十万门甚至几千万门规模的复杂数字电路的设计成为可能,并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。从底向上的设计在某种意义上讲可以看作上述Top_Down设计的逆过程。虽然设计也是从系统级开始,即从设计树的树根开始对设计进行逐次划分,但划分时首先考虑的是单元是
Verilog数票晚设计教程(弗2版)18否存在,即设计划分过程必须从已经存在的基本单元出发,设计树最末枝上的单元要么是已经制造出的单元,要么是其他项目已开发好的单元或者是可外购得到的单元。自顶向下的设计过程中在每一层次划分时都要对某些目标作优化,Top_Down的设计过程是理想的设计过程,它的缺点是得到的最小单元不标准,制造成本可能很高。从底向上的设计过程全采用标准基本单元,通带比较经济,但有时可能不能满足一些特定的指标要求。复杂数字逻辑电路和系统的设计过程通常是这两种设计方法的结合,设计时需要考虑多个目标的综合平衡。思考题1,什么是硬件描述语言?它的主要作用是什么?2.目前世界上符合IEEE标准的硬件描速语言有哪两种?它门各有什么特点?3.什么情况下需要采用硬件描述语言的设计方法?4.采用硬件描述语言设计方法的优点是什么?有什么缺点?5.简单叙述一下利用EDA工具并采用硬件描述语言(HDL)的设计方法和流程。6.硬件描述语言可以用哪两种方式参与复杂数字电路的设计?7.用硬件描述语言设计的数字系统需要经过哪些步骤才能与具体的电路相对应?8.为什么说用硬件描述语言设计的数字逻辑系统具有最大的灵活性并可以映射到任何工艺的电路上?9.软核是什么?虚拟器件是什么?它们的作用是什么?10.集成电路行业中IP的含义是什么?固核是什么?硬核是什么?与软核相比它们各有什么特点?各适用于什么场合?11.简述Top_Down设计方法和硬件描述语言的关系。12.SystemVerilog与Verilog有什么关系?适用于何种设计?