HDL简介-转贴

HDL简介
硬件描述语言HDL设计电路的方法(概述)
在这个章节中,我打算介绍以下内容
·电路设计的古典方法
·应用EDA设计电路的方法
·HDL设计电路的步骤
·HDL的历史发展和分类


在一切开始之前,我想先提个问题--我们设计的是什么?
·集成电路设计的最终目标-芯片
集成电路设计如今的焦点就是设计硅集成电路。所有过程的目的是把实现一定功能的电子元器件以及器件之间的连通导线一起制作在小面积的硅片上。因此,我们要在接触这个概念之初就要明确,IC(集成电路)设计的最终目标是要的到用于制作芯片上的光学掩模版的图形,这是批量生产芯片时候要用的版图,是集成电路各种功能的最终的、物理学上表现形式。
掩模图纸是和具体生产线和生产工艺有关的,就好如同机器码会因为具体机器类型的不同而会改变。所以即使功能完全相同的芯片可能对应着存在多种不同的掩模版版图。例如1u的版图,2u的版图,或者是1u生产线A的版图,1u生产线B的版图--这四种版图基本没有可能出现重复。哪怕你是把它放大或者缩小,1u和2u工艺要求下的版图绝对不会是这种简单的几何尺寸x2的对应关系。
·集成电路设计的可维护文档

实际上我们利用HDL进行的电路设计,很大可能将不是完整的集成电路设计。如同汇编语言与机器码的区别相似,我们日常进行的IC设计通常是与实际生产工艺无关的HDL,我们注重的是因此而得到的一系列可以维护的成品。
在这方面,跟计算机编程是相同的。我们可能要保留源代码,编译之后的文件(电路原理图),但是不会刻意去保留那些对应的汇编指令(逻辑门电路),而且绝对不会去跟踪或者尝试保存机器码(掩模版图)。
在实际某个电子电路可能存在的生存期之内,我们往往需要将其进行修改,增强或者改善其功能。可靠性、可移植性、可维护性等等与工艺无关的那些特性因此成为我们的需要。
除非做全定制方式的电路设计,我们基本不太可能保留最终的掩模版图纸。在我们讨论的范围之内,我们只会保留HDL代码,和门级电路图,因为这些是可读的、并且跟具体生产工艺无关的。
而生产上看到的版图,可能跟设计的电学电路有部分出入。这不是设计人员的马虎造成的,通常是为了产品的可靠性进行必要的修改。这些内容涉及微电子专业领域的半导体知识,有关电路在高频和深微米条件下的寄生和延时效应,暂时不在这里讨论。

(一)电路设计方法的进步
1.1电子电路传统设计理念
传统的数字电子电路设计,可以说开发时间是设计功能的指数函数。模拟信号的集成电路设计起来复杂不可一概而论,但是数字电路的功能无一例外的可以用表示逻辑函数和寄存器表示出来。人们将功能的逻辑图进行逻辑最小化设计,如果有需要,之后还要转换为特定的门(例如统一为与非门,或非门)规格。根据现有的器件进行拼凑,然后再将各模块汇合起来。
这主要造成了以下一些问题,这些问题今天在EDA辅助设计的已经基本解决:
(*)需要统一的元器件。微规模电路多数情况级联n个逻辑功能的芯片和寄存器芯片。而非采用一块专用芯片;而小型工业电路也无非是采用了c51这样的多用途、可编程控制芯片。芯片的利用效率并不高,规模不能做的很大,在频率上表现的能力也有限,多数电路仅适合小批量生产。
(1)在系统硬件设计的后期进行仿真和调试
在传统的硬件设计方法中,仿真和调试通常只能在后期完成系统硬件设计以后才能够进行。因为进行仿真和调试的仪器一般为系统仿真器、逻辑分析仪和示波器等等。因此只有在硬件系统在物理上构成之后才能够进行仿真和调试。系统设计是存在的问题只有在后期才能够发现。这样就对设计人员有相当高的要求。一但考虑不周,系统设计存在一点错误,那么就可能导致重新设计系统,这使得系统设计周期大大增加。
(2)主要设计文件是电原理图
这是针对于那些自行开发芯片的ASIC(APPICATION SPECIFIED IC)设计而说。
在用传统的硬件设计方法对系统进行设计并调整完备之后,所形成的硬件设计文件将会是若干设计电学原理图。在电原理图中相信标注哥哥逻辑元器件的名称和互连关系,这是用户使用和维护系统的依据。对于小型系统而言,这种图纸几十到几百张就行了。但是大系统的图纸可能就是几千或者几十万。这种图纸对于用户或者研究员来说都是戏剧性的难度。
1.2电子电路设计方法的革命性突破
·综合工具的问世
数字电路设计经过迅速的发展,电路复杂程度以传说中的几何速度增长。人们日益增长的功能需求,已经足以让设计者明白使用逻辑图设计布尔函数是非常费力甚至是不划算的。设计者必须手动的为整个电路设计门网络,进行门级最小化。后来人们开发了将布尔函数的文本文件自动转换为特定门(与非,异或门)门级原理图的软件,成功的解决了这方面低效率高成本的问题。这些软件完成的功能性过程,就是现在人们常说的逻辑综合(Logic synthesis)。这一类软件的诞生,标志着EDA辅助设计电子电路系统的开端。
逻辑综合的功能:把boolean函数转换为门,并且实现最小化。
·综合的端倪
HDL诞生的那个年代,设计软件的不设计硬件;设计硬件的不接触软件。为那些专业到家的专才,具体讲述这种综合的实际内容还是比较让人掉头发的;讲这些综合的实际内容恐怕当真是得找秃子讲了。但是相信这个年代许多人已经会某种计算机语言,讲述这些只需要些融会贯通。这个逻辑综合的功能如同计算机语言的编译(compile),电路设计还需要其他的综合,其实现原理到涉及的时候再做具体介绍。逻辑综合的智能化程度仅仅相当与把语言中的函数,从库中调用出来、生成.obj文件(basic 的compile的中间步骤);因为整个电路设计需要其他的综合过程,逻辑综合工程上的完成程度实际远低于计算机编程工具的编译。
各种EDA设计软件先后问世,逐步的 完成了HDL->版图所需要的各种仿真和综合功能。其中比较有代表性的有90年代风靡IT业的Candence ORCAD和MAXPLUS ii。
·抽象的引言
HDL开发软件从用它上说,就是完成综合的工具。综合之前的HDL代码,相当于计算机语言的高级语言代码。综合之后的结果,虽然多少仍然需要下一步综合,但是已经更进一步接近芯片的物理学的实现。这里面穿插着一个重要的工程复杂度的概念--抽象。
所谓语言抽象,就是用语言描述复杂的事物而不去描述事物内部的详细内容。函数、过程是语言中处理复杂性的主要手段。抽象从很大程度上降低了整个系统的复杂程度,更为层次话,从而更易于设计者理解。
计算机高级语言的basic/c语言更接近人类语言,其内容多为调用函数,控制流程等等。 毫无疑问的,对于计算机而言,计算机高级语言是比.exe /.com文件更为‘抽象’,计算机需要‘理解’(HDL中的多步综合/计算机编程的编译)之后才可以执行。对应着HDL设计电路,HDL代码需要3次综合之后才能够投入生产。每次综合都降低了HDL代码的抽象程度,离实际生产就更为接近;同时人们得到的图纸就更为庞大,看到的信息就更为确切和具体。
(二)利用HDL和高级综合工具设计电路设计方法(初步概念)
从电子电路发展到今天,每个芯片包含的晶体管数目几乎按照指数的几何速度增长。对于可能包含几百万乃至几十亿个MOS晶体管的VLSI硅片,老套的设计方法无异于用汤勺去运海水。谁会用ASM去编写一个基于图像的互动式多媒体游戏呢?
编写高级计算机程序,大致过程恐怕大家比搞硬件的都清楚。但是为了说明硬件设计的相关内容,我在此以我的理解说一下程序设计的流程:编写高级语言代码,生成可执行文件,并且通过运行这个程序验证是否满足我们设计的功能,是不是有因为考虑不周而产生的bug。在确定可以完成指定功能的前提下,测试程序的可靠性。最后对代码进行优化,尽可能的提高程序执行的效率。
这些步骤在HDL设计VLSI的过程中都是必须的。以往设计的设计方法,需要有试生产的过程,然后接上设备对其输入、输出进行测试。有了EDA的帮助,我们可以用软件进行模拟试验。
·集成电路自动化设计的流程
③行为/高层次描述-【行为综合】->逻辑功能-【逻辑综合】->②门级描述 『-【布局与布线】->①电学门版图』-【物理综合】->掩模图形
用『』扩起来的内容中有1代电路cad和2代电路cad的分界点。但是从宏观上说,它们只能算综合之中的一个步骤,不与其他的描述和综合构成并列关系。
·设计里面的三种描述和三种综合
所谓的行为描述,实际上是对整个系统的数学模型的描述。一般来说,对系统进行行为级别的描述是在系统设计的初级阶段,通过对系统行为的描述的仿真发现设计中的存在的数学模型的问题。这个阶段的设计旨在检测结构和工作过程是否达到了设计要求。
(1)高层次综合/行为综合:将系统的行为、各个组成部分的功能及其输入输出用HDL描述,然后进行的综合。同时,通过高层此的硬件仿真进行验证。
RTL描述
(2)逻辑综合。通过逻辑工具将逻辑级行为转换为门级描述(门级的结构描述称为网表描述)。此时如果需要,逻辑综合的结果还可以以原理图的方式输出(需要软件支持)。换句话说,逻辑综合的结果相当于在人工设计电路图的,根据系统的要求画出系统的逻辑电学图(完成编译任务,生成.exe文件)。同时还要进行门级逻辑仿真和测试综合。
此后,对逻辑综合结果在门级电路上进行仿真并检查他们之间的时序关系。如果一切正常,那么系统的硬件设计工作到此就基本结束了;如果在这出现问题将返回上一层次寻找和修改相应的错误,并且继续未完成的工作。
如果我们完成了逻辑综合,完成了常规的硬件设计,我们有2种选择来制作实现这种功能的硬件。第一种是利用自动布线工具将网表转换成为相应的ASIC生产工艺(或者人工的参与),制作出生产线上的掩模版版图,作出ASCI芯片。另外一种是把程序转换之后,写入FPGA(现场可编程门阵列),用fpga或者cpld等等可编程器件实现其功能。
(3*)物理综合。(如果电路设计的目的是利用可编程器件实现功能,那么这步将不是必要的)。将网表描述转换成为版图,即完成布图的设计。这式对每个单元确定其几何形状、大小、位置,以及内部的连接关系。
这个标号标志着EDA的3个不同阶段。
①为70年代计算机辅助设计的雏形阶段。这一阶段,电路设计基本还是完全人工参与的,计算机提供的只是计算机平台和绘图工具。如果说它有智能功能,那么就是指它有基于几何图形的版图几何验证。设计人员摆脱了繁复、易错的手工设计版图的方法,大大提高了效率。但是好景不长,这些CAD只适应早期的设计需求。在大规模电路中,它仍然不能足够的缩短设计周期。虽然应用它而产生的错误多数是人员操作的错误,但是它的非智能的缺点随电路规模的发展速度立刻就显现出来。
②是计算辅助设计的真正开端,提供了部分智能的功能。提供了逻辑图输入、逻辑模拟、测试码生成、电路模拟、电路模拟、版图设计、版图验证 等等功能。他不仅仅有全定制电路的版图编辑工具,更有门阵列、标准单元电路的自动布局布线工具。一致性检查、版图参数提取也从此可以通过CAD自动实现。这种CAD当时被誉为CAE(Computer-aided engineering)。这些功能都很大程度上保证了可靠性,美中不足的是,实际生产还需要后模拟。第2代CAD仍然不能后模拟。
③为90年代高级设计自动化的阶段。所有电路设计的各个阶段都可以借助于计算机智能的完成。我们已经能够通过接近人类自然语言的电路描述来设计电路了。这个阶段的标志就是HDL自动化设计工具的诞生。


·自上而下的设计理念
早期经典设计方法,因为其直接从底层器件开始设计电路,往往被称作bottom Up方法。相应的中文名称就是自下而上的设计方法。EDA设计电路的方法,宏观顺序基本与此相反,被称为自上而下的设计方法- Top Down的设计方法。
所谓自上而下的设计方法,就是从系统的总体功能要求出发,自上而下的逐步讲设计内容细化,最后完成硬件整体和具体的设计。在利用HDL的硬件设计方法中,设计者根据抽象的不同层次,自上(最抽象)而下(最具体)的设计硬件。在做Top-Down的正向设计时,

·具体的、自上而下的、设计电子电路的正向设计过程:
行为设计->结构设计->逻辑设计->电路设计->版图设计
与此对应的bottom Up的正向设计,也在实际大规模电路的设计中top-down方法并用:
系统的划分、分解->单元设计->功能块的设计->子系统的设计->系统总成

为什么说是正向设计?因为有逆向设计。逆向设计是从功能到电路的,逐步从需求着手的设计方法;与此对应的,也有从电路到功能的分析方法,如果分析之后加以修改就构成了逆向设计。
逆向设计(Top down)流程:
版图解析(分析出掩模版)->电路图提取(分析出逻辑电路)->功能分析->结构修改->逻辑设计->电路设计->版图设计
逆向设计(Bottom up)流程
版图解析->电路图提取->功能分析->单元设计->功能块设计->子系统设计->系统设计

这里对我们逆向设计涉及的内容做一下说明。
首先,我们不做逆向设计。逆向设计时从芯片中提取电路的一种工业方法。
在VLSI或者ULSI为主流的电子电路设计时代,这种方法仍然是几乎不可能的。97年,一个工业高级chip上就有近40多亿个晶体管。分析掩模版,不仅需要黑盒子测试输入输出的关系,更要使用到x光透视、电子束测量(稍后具体举moccii来说明逆向工程的难度)。X光因为波长的原因,在工艺精度越来越高的ic上,因为衍射作用就基本上就是瞎子;因为射线穿透能力跟波长的长度成正比,更短波长的射线就更是什么也看不到。MOS电路为电压控制电路,可以在很高频率的下工作,已经广泛应用在现代数字电路ic领域。使用电子束的电流、电压测量芯片的分析方法,也随着芯片的层数越来越多、频率越来越高面对前所未有的难度。 高人力、物力的投入也需要数年才能够分析出来大概齐。在90年代,以色列出口了中国一台没有雷达的电子侦察预警机,尽我们全国的国力也是数年才出那么丁点成果。

其次,我们的设计方法一般不会是单一的top-down或者bottom-up。在我们熟悉某个系统的宏观结构和功能之后,常常采用的是宏观上bottom-up、微观上top-down。首先需要进行行为设计,要确定该VLSI芯片的功能,性能、以及芯片允许的面积和成本。接着做结构设计,根据芯片的特点,将其分解为接口清晰,相互关系明确的、尽可能简单的子系统,得到统一的总统结构。这些结构可能包括算术运算单元、控制单元、数据通道、各种算法状态机等等。

现在举例说明。
cpu的设计可以算作大工程,我们知道它分为寄存器、控制器、运算器,我们肯定不可能同步的设计这么大个的系统。首先把它按照功能划分为若干小系统,然后确定他们之间那些子系统需要互相传递数据。当我们明确了cpu并行运算能力之后,把数据传输的位数(16bit)的内部数据线和控制信号线约定为内部通道。之后我们分别设计各个器件,再把这些个器件按照我们约定好的方式连接起来,构成我们的整个系统—cpu。
但是我们绝对不会这么设计其中的功能明确、结构可以明确的子系统。在设计CPU子系统的时候,就会采用top-down的方式设计。我们描述它的功能和接口,描述它的逻辑过程,然后利用HDL自动生成它的逻辑图、电路图。


说了半天了,什么是HDL,hdl编程跟计算机传统编程语言有什么关系么?
在真正开始接触令人激动人心的VHDL编程之前,我打算先来HDL发展历史和分类。

第一篇 VHDL的语言基础
第一章 概述--诞生、发展和分类
在一切开始之前,我想有必要对咱们经常接触的一些名次作些解释。

VHDL,即Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。
1.HDL
HDL,即Hardware Description Language,是电子系统硬件行为描述、结构描述、数据流描述的一种语言。随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计至今都在摸索之中。用HDL设计电子系统有2大不可否认的理由:缩短设计时间、简化日常维护。

从描述方法上分,HDL有2种--GHDL(Graphic Hardware Description Language)和WHDL(Word Hardware Description Language)。Ghdl直观而清晰,在逻辑电路图、状态流程图的电子设计上是经典的方法;当然,GHDL也非常古老。随着计算机语言的发展,文字描述语言(WHDL)已经能够完全取代GHDL。尽管在实际的数字电子设计系统中WHDL和GHDL混合使用,但是一般而言HDL都是普遍泛指WHDL。

HDL所谓”分类”,历来是让人头痛的一件事情。HDL语言的种类繁多,已知的仍然在使用中的有生命力的就有100来种。高等院校、科研单位、EDA公司都有自己的HDL语言。有些是企业标准,有些是IEEE标准。众所周知,市场占有率决定了其标准化的推广程度,所谓标准都跟着大众使用情况走。目前软件和硬件的市场占有率决定了我们通常接触的大抵只会有这两种: VHDL语言、Verilog HDL语言。这两种语言已经成为IEEE标准语言。

这不意味着其他的HDL不常见,也不是说其他的HDL不能自成体系,再继续分类。在其余的HDL语言中富有代表性的常用语言有ABEL,AHDL,硬件C语言 ,它们完全形成了自己独特的语言风格,至今普遍在相当多的系列产品中使用。由于AHDL语言由ALTERA公司尽力的在国际推广,在众多大学、公司有着广泛的用户。在可以说,AHDL语言进行硬件设计的人员比例很高,在相当多的地区的影响和普及程度甚至超过了VHDL和Verlog。


尽管种类繁多,尽管语法、风格和标准各异,但是如果从其前身的语言的角度看来,人们无可争议的将HDL总体分为2类:PASCAL风格和C风格。说道这里,人可以自然想到这两种语体风格。以法国数学家、 物理学家帕斯卡命名的PASCAL,其语体相当严禁、语言自然可读性高。上世纪60年代世界上最有创造力的地方--贝尔实验室制造的C, 完全代表了那个时代开天辟地的风格,集聚了强烈的自由意识和创造性。VHDL属于PASCAL风格,Verlog代表了C风格。

这些风格使HDL在教学上对学生的计算机水平有着不同的要求,对不同程度学生会感到不同的难度;从另一个角度说,无可避免的影响着学者的选择。VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授 VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。

常用HDL简介

VHDL
VHDL实际是出于美国国防部电子系统的要求而产生的一种标准语言。当时美国官方把众多项目委托给承包公司,然后再做工程上的汇总。但是因为承包商各自有一套不同的标准,致使信息交换和维护越发困难。美国政府为了降低研发费用,避免充分设计,促使了国防部为各承包商统一度量衡--统一HDL语言。功能强大、语法严格、可读性好的VHDL就这样呼之欲出。
政府牵头的VHDL研发小组在81年6月成立,提出了一个工业标准HDL。83年第三季度陆续加入了IBM、TI、Intermetrics,研发语言版本和开发软件环境。86年IEEE标准化组织开始工作,为VHDL语言标准讨论了一年有余。87年12月通过标准审核,即STD 1076-1987.

Verilog
Candence是一家 著名的EDA公司,财力雄厚。该公司的Verilog HDL于1983年由Gate Way Design Automatic公司的Phil Moorby首创。他在'84-'85年成功的设计了Verilog-XL仿真器,在86年提出了快速门级的XL算法,使得Verilog HDL语言更加丰富和晚上,从而得到了EDA设计公司的青睐。在89年Candence 收购了Moorby所在的GDA公司,从此Verlog HDL变成了Candence公司的私有财产。成为Candence公司在EDA设计环境上的硬件描述语言。经过Candence公司的不懈努力,Verilog HDL在95年成为了IEEE标准,也是民间公司的第一个hdl语言标准,即Verilog HDL 1364-1995。由于其HDL建立在C的基础之上,使得有C语言基础的设计人员能够较快入门。

一, June 07, 2004 11:42 AM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值