和系统的语言。数字电路系统的设计者利用这种语言可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后利用验证,再把其中需要变为具体物理电路的模块组合经由自动综合工具转换到门级电路网表。接下去再用专用的门级模型(原语元件或UDP)来代替具体基本元件。因其逻辑功能和延时特性与真实的物理元件完全一致,所以在仿真工具的支持下能验证复杂数字系统物理结构的正确性,使投片的成功率达到100%。目前,这种称之为高层次设计(High-Level-Design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA已采用Verilog硬件描述语言方法进行设计。
硬件描述语言的发展至今已有近三十年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证 和综合等。最近十多年来,用综合工具把可综合风格的HDL模块自动转换为具体电路发展非常迅速,大大地提高了复杂数字系统的设计生产率。在美国和日本等先进电子工业国,Verilog语言已成为设计数字系统的基础。
Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。它允许设计者用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。据有关文献报道,目前在美国使用Verilog HDL进行设计的工程师大约有10多万人,全美国有200多所大学教授用 Verilog 硬件描述语言的设计方法。在我国地区几乎所有著名大学的电子和计算机工程系都讲授Verilog有关的课程。
Verilog HDL和VHDL都是用于逻辑设计的硬件描述语言,并且都已成为IEEE标准。VHDL是在1987年成为IEEE标准,Verilog HDL则在1995年才正式成为IEEE标准。之所以VHDL比Verilog HDL早成为IEEE标准,这是因为VHDL是由美方组织开发的,而Verilog HDL 则是从一个普通的民间公司的私有财产转化而来,基于Verilog HDL的优越性,才成为的IEEE标准,因而有更强的生命力。
tegerated Circuit的缩写词,意为甚高速集成电路,故VHDL其准确的中文译名为甚高速集成电路的硬件描述语言。
电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的行为和结构、支持逻辑设计中层次与范围的描述、可借用高级语言的精巧结构来简化电路行为的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。
但是Verilog HDL和VHDL又各有其自己的特点。由于Verilog HDL早在1983年就已推出,至今已有二十多年的应用历史,因而Verilog HDL拥有更广泛的设计群体,成熟的资源也远比VHDL丰富。与VHDL相比Verilog HDL的最大优点是:它是一种非常容易掌握的硬件描述语言,只要有
C语言的编程基础,通过二十学时的学习,再加上一段实际操作,一般同学可在二至三个月内掌握这种设计方法的基本技术。而掌握VHDL设计技术就比较困难。这是因为VHDL不很直观,需要有Ada编程基础,一般认为至少需要半年以上的专业培训,才能掌握VHDL的基本设计技术。2005年SystemVerilog IEEE1800-2005标准公布以后,集成电路设计界普遍认为Verilog HDL 将在十年内全面取代VHDL成为ASIC设计行业包揽设计、测试和验证功能的的唯一语言。下面图2所示的是Verilog HDL和VHDL建模能力的比较图,供读者参考:
2001年公布的VerilogIEEE1364- 2001标准和2005年公布的SystemVerilog IEEE1800-2005标准,不但使Verilog的可综合性能和系统仿真性能方面有大幅度的提高,而且在IP的重用方面(包括设计和验证模块的重用)也有重大的突破。因此Verilog HDL不但作为学习HDL设计方法的入门和基础是比较合适的,而且对于ASIC设计专业人员而言,也是必须掌握的基本技术。学习掌握Verilog HDL建模、仿真、综合、重用和验证技术不仅可以使同学们对数字电路设计技术有更进一步的了解,而且可以为以后学习高级的行为综合、物理综合、IP设计和复杂系统设计和验证打下坚实的基础。
近十多年以来,EDA界一直对在数字逻辑设计中究竟采用哪一种硬件描述语言争论不休。近两三年来,美国、日本和我国省电子设计界的情况已经清楚地表明,在高层次数字系统设计领域,Verilog 已经取得压倒性的优势;在中国,近10年来,Verilog应用的比率已有显著的增加。根据笔者了解,国内大多数集成电路设计公司都采用Verilog HDL。Verilog是专门为复杂数字系统的设计仿真而开发的,本身就非常适合复杂数字逻辑电路和系统的仿真和综合。由于Verilog 在其门级描述的底层,也就是在
晶体管开关的描述方面比VHDL有强得多得功能,所以即使是VHDL的设计环境,在底层实质上也是由Verilog HDL描述的器件库所支持的。1998年通过的Verilog HDL新标准,把Verilog HDL-A并入Verilog HDL新标准,使其不仅支持数字逻辑电路的描述还支持模拟电路的描述,因此在混合信号的电路系统的设计中,它也有很广泛的应用。在深亚微米ASIC和高密度FPGA已成为电子设计主流的今天,Verilog的发展前景是非常远大的。2001年3月,Verilog IEEE1364-2001标准的公布,以及2005年10月SystemVerilog IEEE 1800-2005 标准的公布,使得Verilog语言在综合、仿真验证和IP模块重用等性能方面都有大幅度的提高,更加拓宽了Verilog的发展前景。
寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)设计,而SystemVerilog是Verilog语言的扩展和延伸,更适用于可重用的可综合IP和可重用的验证用IP设计,以及特大型(千万门级以上)基于IP的系统级设计和验证。
几十年前,当时所做的复杂数字逻辑电路及系统的设计规模比较小也比较简单,其中所用到的FPGA或ASIC设计工作往往只能采用厂家提供的专用电路图输入工具来进行。为了满足设计性能指标,工程师往往需要花好几天或更长的时间进行艰苦的手工布线。工程师还得非常熟悉所选器件的内部结构和外部引线特点,才能达到设计要求。这种低水平的设计方法大大延长了设计周期。
芯片中去,并在不同规模的应用时可以较容易地作修改。这不仅是因为用Verilog HDL所完成的设计,它的信号位数是很容易改变的,可以很容易地对它进行修改,来适应不同规模的应用,在仿真验证时,仿真测试矢量还可以用同一种描述语言来完成,而且还因为采用Verilog HDL综合器生成的数字逻辑是一种标准的电子设计互换格式(EDIF)文件,独立于所采用的实现工艺。有关工艺参数的描述可以通过 Verilog HDL提供的属性包括进去,然后利用不同厂家的布局布线工具,在不同工艺的芯片上实现。
EDA工具的帮助下,把逻辑验证与具体工艺库匹配、布线及时延计算分成不同的阶段来实现从而减轻了人们的繁琐劳动。
我们把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”(Soft Core)。而把由软核构成的器件称为虚拟器件,在新电路的研制过程中,软核和虚拟器件可以很容易地借助EDA综合工具与外部逻辑结合为一体。这样,软核和虚拟器件的重用性就可大大缩短设计周期,加快了复杂电路的设计。
在具体实现手段和工艺技术尚未确定的逻辑设计阶段,软核具有最大的灵活性,它可以很容易地借助EDA综合工具与外部逻辑结合为一体。当然,由于实现技术的不确定性,有可能要作一些改动以适应相应的工艺。相比之下固核和硬核与外部逻辑结合为一体的灵活性要差得多,特别是电路实现工艺技术改变时更是如此。而近年来电路实现工艺技术的发展是相当迅速的,为了逻辑电路设计成果的积累,和更快更好地设计更大规模的电路,发展软核的设计和推广软核的重用技术是非常有必要的。我们新一代的数字逻辑电路设计师必须掌握这方面的知识和技术。Verilog语言以及它的扩展SystemVerilog 是设计可重用的IP,即软核、固核、硬核和验证用虚拟核所必须的语言。
自顶向下的设计(即TOP_DOWN设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的基本元件来实现为止。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师(Architect)划分为若干个可操作的模块,编制出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师。这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。为了提高设计质量,如果其中有一部分模块可由商业渠道得到,我们可以购买它们的知识产权的使用权(IP核的重用),以节省时间和开发经费,。图3为自顶向下的示意图,以设计树的形式绘出。
在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现。因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时,行为描述往往需要用电路逻辑来实现。这时的模块不仅需要通过仿真加以验证,还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。下面的流程图简要地说明了模块的编译和测试过程:
由于TOP_DOWN的设计方法是首先从系统设计入手,从顶层进行功能划分和结构设计。系统的总体仿真是顶层进行功能划分的重要环节,这时的设计是与工艺无关的。由于设计的主要仿真和调试过程是在高层次完成的所以能够早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统级划分和管理整个项目,使得几十万门甚至几千万门规模的复杂数字电路的设计成为可能,并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。
从底向上的设计在某种意义上讲可以看作上述TOP_DOWN设计的逆过程。虽然设计也是从系统级开。