文档库 最新最全的文档下载
当前位置:文档库 › 第2章 Verilog HDL设计方法概述

第2章 Verilog HDL设计方法概述

第2章 Verilog HDL设计方法概述
第2章 Verilog HDL设计方法概述

第二章 Verilog HDL设计方法概述

前言

随着电子设计技术的飞速发展,专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越高。数字通信、工业自动化控制等领域所用的数字电路及系统其复杂程度也越来越高,特别是需要设计具有实时处理能力的信号处理专用集成电路,并把整个电子系统综合到一个芯片上。设计并验证这样复杂的电路及系统已不再是简单的个人劳动,而需要综合许多专家的经验和知识才能够完成。由于电路制造工艺技术进步非常迅速,电路设计能力赶不上技术的进步。在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统设计工作分解为逻辑设计(前端)和电路实现(后端)两个互相独立而又相关的部分。由于逻辑设计的相对独立性就可以把专家们设计的各种常用数字逻辑电路和系统部件(如FFT算法、DCT算法部件)建成宏单元(Megcell)或软核(Soft-Core)库供设计者引用,以减少重复劳动,提高工作效率。电路的实现则可借助于综合工具和布局布线工具(与具体工艺技术有关)来自动地完成。

VHDL和Verilog HDL这两种工业标准的产生顺应了历史的潮流,因而得到了迅速的发展。作为跨世纪的中国大学生应该尽早掌握这种新的设计方法,使我国在复杂数字电路及系统的设计竞争中逐步缩小与美国等先进的工业发达国家的差距。为我国下一个世纪的深亚微米百万门级的复杂数字逻辑电路及系统的设计培养一批技术骨干。

2.1.硬件描述语言HDL(Hardware Description Language)

硬件描述语言(HDL)是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。它可以使数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化(在下面简称为EDA)工具进行仿真,再自动综合到门级电路,再用ASIC或FPGA实现其功能。目前,这种称之为高层次设计(High-Level-Design)的方法已被广泛采用。据统计,在美国硅谷目前约有90%以上的ASIC和FPGA已采用硬件描述语言方法进行设计。

硬件描述语言的发展至今已有二十多年的历史,并成功地应用于设计的各个阶段:仿真、验证、综合等。到80年代时,已出现了上百种硬件描述语言,它们对设计自动化起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域与层次,而且众多的语言使用户无所适从,因此急需一种面向设计的多领域、多层次、并得到普遍认同的标准硬件描述语言。进入80年代后期,硬件描述语言向着标准化的方向发展。最终,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。把硬件描述语言用于自动综合还只有短短的六、七年历史。最近三四年来,用综合工具把可综合风格的HDL模块自动转换为电路发展非常迅速,在美国已成为设计数字电路的主流。本书主要介绍如何来编写可综合风格的Verilog HDL模块,如何借助于Verilog语言对所设计的复杂电路进行全面可靠的测试。

2.2.Verilog HDL的历史

2.2.1.什么是Verilog HDL

Verilog HDL是硬件描述语言的一种,用于数字电子系统设计。它允许设计者用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。据有关文献报道,目前在美国使用Verilog HDL进行设计的工程师大约有60000人,全美国有200多所大学教授用 Verilog 硬件描述语言的设计方法。在我国台湾地区几乎所有著名大学的电子和计算机工程系都讲授Verilog有关的课程。

2.2.2.Verilog HDL的产生及发展

Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司(Cadence Design System)的第一个合伙人。在1984-1985年,Moorby设计出了第一个关于Verilog-XL的仿真器,1986年,他对Verilog HDL的发展又作出了另一个巨大贡献:即提出了用于快速门级仿真的XL算法。

随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立了OVI(Open Verilog International)组织来负责Verilog HDL语言的发展。基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL1364-1995(在本书的附录中有该标准的中文翻译,可供同学参考)。

下面两幅图显示出Verilog的发展历史和将来。

2.3.Verilog HDL和 VHDL的比较

Verilog HDL和VHDL都是用于逻辑设计的硬件描述语言,并且都已成为IEEE标准。VHDL 是在1987年成为IEEE标准,Verilog HDL则在1995年才正式成为IEEE标准。之所以VHDL比Verilog HDL早成为IEEE标准,这是因为VHDL是美国军方组织开发的,而Verilog HDL 则是从一个普通的民间公司的私有财产转化而来,基于Verilog HDL的优越性,才成为的IEEE标准,因而有更强的生命力。

VHDL 其英文全名为VHSIC Hardware Description Language,而VHSIC则是Very High Speed Integerated Circuit的缩写词,意为甚高速集成电路,故VHDL其准确的中文译名为甚高速集成电路的硬件描述语言。

Verilog HDL和VHDL作为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。

但是Verilog HDL和VHDL又各有其自己的特点。由于Verilog HDL早在1983年就已推出,至今已有十三年的应用历史,因而Verilog HDL拥有更广泛的设计群体,成熟的资源也远比VHDL

丰富。与VHDL相比Verilog HDL的最大优点是:它是一种非常容易掌握的硬件描述语言,只要有C语言的编程基础,通过二十学时的学习,再加上一段实际操作,一般同学可在二至三个月内掌握这种设计技术。而掌握VHDL设计技术就比较困难。这是因为VHDL不很直观,需要有Ada编程基础,一般认为至少需要半年以上的专业培训,才能掌握VHDL的基本设计技术。目前版本的Verilog HDL和VHDL在行为级抽象建模的覆盖范围方面也有所不同。一般认为Verilog HDL在系统级抽象方面比VHDL略差一些,而在门级开关电路描述方面比VHDL强得多。下面图1-3是Verilog HDL和VHDL建模能力的比较图示供读者参考:

图 2-3 VerilogHDL 与 VHDL 建模能力的比较

但这两种语言也是在不断的完善过程中,因此Verilog HDL作为学习HDL设计方法的入门和基础是比较合适的。学习掌握Verilog HDL建模、仿真和综合技术不仅可以使同学们对数字电路设计技术有更进一步的了解,而且可以为以后学习高级的系统综合打下坚实的基础。

2.4. Verilog HDL目前的应用情况和适用的设计

几年以来,EDA界一直对在数字逻辑设计中究竟采用哪一种硬件描述语言争论不休,目前的情况是两者不相上下。在美国,在高层逻辑电路设计领域Verilog HDL和VHDL的应用比率是60%和40%,在台湾省各为50%,在中国大陆目前由于Verilog HDL和VHDL的使用才刚刚开始,具体应用比率还没有统计。Verilog HDL是专门为复杂数字逻辑电路和系统的设计仿真而开发的,本身就非常适合复杂数字逻辑电路和系统的仿真和综合。由于Verilog HDL在其门级描述的底层,也就是在晶体管开关的描述方面比VHDL有强得多得功能,所以即使是VHDL的设计环境,在底层实质上也是由Verilog HDL描述的器件库所支持的。另外目前Verilog HDL-A标准还支持模拟电路的描述,1998年即将通过的Verilog HDL新标准,将把Verilog HDL-A并入Verilog HDL新标准,使其不仅支持数字逻辑电路的描述还支持模拟电路的描述,因此在混合信号的电路系统的设计中,它必将会有更广泛的应用。在亚微米和深亚微米ASIC和高密度FPGA已成为电子设计主流的今天,Verilog HDL的发展前景是非常远大的。作者本人的意见是:若要推广采用硬件描述语言的设计方法,则应首先从推广Verilog HDL开始,然后再推广VHDL。

Verilog HDL较为适合系统级(System)、算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)设计,而对于特大型(几百万门级以上)的系统级(System)设计,则VHDL更为适合,由于这两种HDL语言还在不断地发展过程中,它们都会逐步地完善自己。

2.5.采用Verilog HDL设计复杂数字电路的优点

2.5.1传统设计方法--电路原理图输入法

几十年前,当时所做的复杂数字逻辑电路及系统的设计规模比较小也比较简单,其中所用到的FPGA或ASIC设计工作往往只能采用厂家提供的专用电路图输入工具来进行。为了满足设计性能指标,工程师往往需要花好几天或更长的时间进行艰苦的手工布线。工程师还得非常熟悉所选器件的内部结构和外部引线特点,才能达到设计要求。这种低水平的设计方法大大延长了设计周期。

近年来,FPGA和ASIC的设计在规模和复杂度方面不断取得进展,而对逻辑电路及系统的设计的时间要求却越来越短。这些因素促使设计人员采用高水准的设计工具,如:硬件描述语言(Verilog HDL或VHDL)来进行设计。

2.5.2. Verilog HDL设计法与传统的电路原理图输入法的比较

如 2.5.1.所述采用电路原理图输入法进行设计,具有设计的周期长,需要专门的设计工具,需手工布线等缺陷。而采用Verilog HDL输入法时,由于Verilog HDL的标准化,可以很容易地把完成的设计移植到不同的厂家的不同的芯片中去,并在不同规模应用时可以较容易地作修改。这不仅是因为用Verilog HDL所完成的设计,它的信号位数是很容易改变的,可以很容易地对它进行修改,来适应不同规模的应用,在仿真验证时,仿真测试矢量还可以用同一种描述语言来完成,而且还因为采用Verilog HDL综合器生成的数字逻辑是一种标准的电子设计互换格式(EDIF)文件,独立于所采用的实现工艺。有关工艺参数的描述可以通过 Verilog HDL提供的属性包括进去,然后利用不同厂家的布局布线工具,在不同工艺的芯片上实现。

采用Verilog HDL输入法最大的优点是其与工艺无关性。这使得工程师在功能设计、逻辑验证阶段,可以不必过多考虑门级及工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。实际上这是利用了计算机的巨大能力在EDA工具的帮助下,把逻辑验证与具体工艺库匹配、布线及时延计算分成不同的阶段来实现从而减轻了人们的繁琐劳动。

2.5.

3. Verilog HDL的标准化与软核的重用

Verilog HDL是在1983年由GATEWAY公司首先开发成功的,经过诸多改进,于1995年11月正式被批准为IEEE标准1364。

Verilog HDL的标准化大大加快了Verilog HDL的推广和发展。由于Verilog HDL设计方法的与工艺无关性,因而大大提高了Verilog HDL模型的可重用性。我们把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”(Soft Core)。而把由软核构成的器件称为虚拟器件,在新电路的研制过程中,软核和虚拟器件可以很容易地借助EDA综合工具与其它外部逻辑结合为一体。这样,软核和虚拟器件的重用性就可大大缩短设计周期,加快了复杂电路的设计。目前国际上有一个叫作虚拟接口联盟的组织(Virtual Socket Interface Alliance)来协调这方面的工作。

2.5.4.软核、固核和硬核的概念以及它们的重用

上一节中我们已介绍了软核的概念,下面再介绍一下固核(Firm Core)和硬核(Hard Core)的概念。

我们把在某一种现场可编程门阵列(FPGA)器件上实现的,经验证是正确的总门数在5000门以上电路结构编码文件,称之为“固核”。

我们把在某一种专用半导体集成电路工艺的(ASIC)器件上实现的经验证是正确的总门数在5000门以上的电路结构掩膜,称之为“硬核”。

显而易见,在具体实现手段和工艺技术尚未确定的逻辑设计阶段,软核具有最大的灵活性,它可以很容易地借助EDA综合工具与其它外部逻辑结合为一体。当然,由于实现技术的不确定性,有可能要作一些改动以适应相应的工艺。相比之下固核和硬核与其它外部逻辑结合为一体的灵活性要差得多,特别是电路实现工艺技术改变时更是如此。而近年来电路实现工艺技术的发展是相当迅速的,为了逻辑电路设计成果的积累,和更快更好地设计更大规模的电路,发展软核的设计和推广软核的重用技术是非常有必要的。我们新一代的数字逻辑电路设计师必须掌握这方面的知识和技术。

2.6.采用硬件描述语言(Verilog HDL)的设计流程简介

2.6.1.自顶向下(Top-Down)设计的基本概念

现代集成电路制造工艺技术的改进,使得在一个芯片上集成数十乃至数百万个器件成为可能,但我们很难设想仅由一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分为若干个可操作的模块,编制

出相应的模型(行为的或结构的),通过仿真加以验证后,再把这些模块分配给下一层的设计师,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分;而由上一层设计师对其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证。图1-6-1为自顶向下(TOP-DOWN )的示意图,以设计树的形式绘出。

自顶向下的设计(即TOP_DOWN 设计)是从系统级开始,把系统划分为基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA 元件库中的元件来实现为止。

对于设计开发整机电子产品的单位和个人来说,新产品的开发总是从系统设计入手,先进行方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA 技术的发展使得设计师有可能实现真正的自顶向下的设计。

2.6.2.层次管理的基本概念

复杂数字逻辑电路和系统的层次化、结构化设计隐含着硬件设计方案的逐次分解。在设计过程中的任意层次,硬件至少有一种描述形式。硬件的描述特别是行为描述通常称为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件结构由这些模块的互连描述,该层次的硬件的行为由这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互连而成。如此下去,完整的硬件设计就可以由图2-6-1所示的设计树描述。在这个设计树上,节点对应着该层次上基本单元的行为描述,树枝对应着基本单元的结构分解。在不同的层次都可以进行仿真以对设计思想进行验证。EDA 工具提供了有效的手段来管理错综复杂的层次,即可以很方便地查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。

2.6.

3.具体模块的设计编译和仿真的过程

在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现。因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时行为描述 系 统 级 设 计

模 块A 模 块A1 模 块A3 模 块A2 模 块C1 模 块C2

模 块 C

模 块B 模 块B1 模 块B2图2-6-1. TOP_DOWN 设计思想

往往需要用电路逻辑来实现,这时的模块不仅需要通过仿真加以验证,还需进行综合、优化、布线和后仿真。总之具体电路是从底向上逐步实现的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。下面的流程图简要地说明了模块的编译和测试过程:

从上图可以看出,模块设计流程主要由两大主要功能部分组成:

1)设计开发:即从编写设计文件-->综合到布局布线-->投片生成这样一系列步骤。

2)设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返

回设计输入进行修改。

2.6.4.对应具体工艺器件的优化、映象、和布局布线

由于各种ASIC和FPFA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)时,就需要不同的基本单元库与布线延迟模型与之对应才能进行准确的优化、映象、和布局布线。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA 厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺器件和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理从而大大提高设计效率。

2.7.小结

采用Verilog HDL设计方法比采用电路图输入的方法更有优越性,这就是为什么美国等先进工业国家在进入九十年代以后纷纷采用HDL设计方法的原因。在两种符合IEEE标准的硬件描述语言中,Verilog HDL与VHDL相比更加基础、更易学习,掌握HDL设计方法应从学习Verilog HDL 设计方法开始。Verilog HDL可用于复杂数字逻辑电路和系统的总体仿真、子系统仿真和具体电路综合等各个设计阶段。

由于TOP_DOWN的设计方法是首先从系统设计入手,从顶层进行功能划分和结构设计。系统的总体仿真是顶层进行功能划分的重要环节,这时的设计是与工艺无关的。由于设计的主要仿真和调试过程是在高层次完成的所以能够早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统级划分和管理整个项目,使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能,并可减少设计人员,避免不必要的重复设计,提高了设计的一次成功率。

从底向上的设计在某种意义上讲可以看作上述TOP_DOWN设计的逆过程。虽然设计也是从系统级开始,即从设计树的树根开始对设计进行逐次划分,但划分时首先考虑的是单元是否存在,即设计划分过程必须从存在的基本单元出发,设计树最末枝上的单元要么是已经制造出的单元,要么是其它项目已开发好的单元或者是可外购得到的单元。

自顶向下的设计过程中在每一层次划分时都要对某些目标作优化,TOP_DOWN的设计过程是理想的设计过程,它的缺点是得到的最小单元不标准,制造成本可能很高。从底向上的设计过程全采用标准基本单元,通常比较经济,但有时可能不能满足一些特定的指标要求。复杂数字逻辑电路和系统的设计过程通常是这两种设计方法的结合,设计时需要考虑多个目标的综合平衡。

2.8 思考题

1. 什么是硬件描述语言?它的主要作用是什么?

2.目前世界上符合IEEE标准的硬件描述语言有哪两种?它门各有什么特点?

3.什么情况下需要采用硬件描述语言的设计方法?

4.采用硬件描述语言设计方法的优点是什么?有什么缺点?

5.简单叙述一下利用EDA工具并采用硬件描述语言(HDL)的设计方法和流程。

6.硬件描述语言可以用哪两种方式参与复杂数字电路的设计?

7.用硬件描述语言设计的数字系统需要经过哪些步骤才能与具体的电路相对应?

8.为什么说用硬件描述语言设计的数字逻辑系统具有最大的灵活性可以映射到任何工艺的电路

上?

9.软核是什么?虚拟器件是什么?它们的作用是什么?

10.固核是什么?硬核是什么?与软核相比它们各有什么优缺点?

11.简述TOP-DOWN设计方法和硬件描述语言的关系。

相关文档