EDA 第一章 EDA技术概述
§1.1 EDA技术及其发展 § 1.1.1 EDA技术涵义 什么是EDA?Electronic Design Automation 即电子设计自动化。 EDA技术就是以计算机为工作平台,以EDA软件工具为设计工具,以硬件描述语言为系统逻辑描述的主要表达方式,以大规模可编程逻辑器件为实现载体,自动完成用软件方式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的新技术。
二、EDA技术的发展历程 1、早期电子CAD阶段
2、计算机辅助工程设计CAE阶段 与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。
3、电子设计自动化(EDA)阶段 20世纪90年代,可编程逻辑器件迅速发展,出现功能强大的全线EDA工具。具有较强抽象描述能力的硬件描述语言(VHDL、Verilog HDL)及高性能综合工具的使用,使过去单功能电子产品开发转向系统级电子产品开发(即SOC_ System On a Chip:单片系统、或片上系统集成)。
1.1.3 EDA技术的基本特征 1、硬件描述语言设计输入 用硬件描述语言进行电路与系统的设计是当前EDA技术的一个重要特征,硬件描述语言输入是现代EDA系统的主要输入方式。统计资料表明,在硬件语言和原理图两种输入方式中,前者占75%以上,并且这个趋势还在继续增长,与传统的原理图输入设计方法相比较,硬件描述语言更适合规模日益增大的电子系统,它还是进行逻辑综合优化的重要工具。硬件描述语言使得设计者在比较抽象的层次上描述设计的结构和内部特征,其突出优点是:语言的公开可利用性;设计与工艺的无关性;宽范围的描述能力;便于组织大规模系统的设计;便于设计的复用和继承等。
2、“自顶向下”设计方法 现在,电子系统的设计方法发生了很大的变化,过去,电子产品设计的基本思路一直是先选用通用集成电路芯片,再由这些芯片和其他元件自下而上地构成电路、子系统和系统,以此流程,逐步向上递推,直至完成整个系统的设计。这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高,而且还容易出错。
EDA技术为我们提供了一种“自顶向下”的全新设计方法。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调式过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
3、逻辑综合与优化 逻辑综合是20世纪90年代电子学领域兴起的一种新的设计方法,是以系统级设计为核心的高层次设计。逻辑综合是将最新的算法与工程界多年积累的设计经验结合起来,自动地将用真值表、状态图或VHDL硬件描述语言等所描述的数字系统转化为满足设计性能指标要求的逻辑电路,并对电路进行速度、面积等方面的优化。
逻辑综合的特点是将高层次的系统行为设计自动翻译成门级逻辑的电路描述,做到了设计与工艺的相互独立。逻辑综合的作用是根据一个系统的逻辑功能与性能的要求,在一个包含众多结构、功能和性能均已知的逻辑元件的逻辑单元库的支持下,寻找出一个逻辑网络结构最佳的实现方案。逻辑综合的过程主要包含以下两个方面: (1)逻辑结构的生成与优化。 主要是进行逻辑化简与优化,达到尽可能地用较少的元件和连线形成一个逻辑网络结构(逻辑图)、满足系统逻辑功能的要求。
(2)逻辑网络的性能优化。 利用给定的逻辑单元库,对已生成的逻辑网络进行元件配置,进而估算实现该逻辑网络的芯片的性能与成本。性能主要指芯片的速度,成本主要指芯片的面积与功耗。速度与面积或速度与功耗是矛盾的,这一步允许使用者对速度与面积或速度与功耗相矛盾的指标进行性能与成本的折中,以确定合适的元件配置,完成最终的、符合要求的逻辑网络结构。
4、开放性和标准化 开放式的设计环境也称之为框架结构。框架是一种软件平台结构,它在EDA系统中负责协调设计过程和管理设计数据,实现数据与工具的双向流动,为EDA工具提供合适的操作环境。框架结构的核心是可以提供与硬件平台无关的图形用户界面以及工具之间的通信、设计数据和设计流程的管理等,还包括各种与数据库相关的服务项目。
任何一个EDA系统只要建立了一个符合标准的开放式框架结构,就可以接纳其他厂商的EDA工具一起进行设计工作。框架结构的出现,使国际上许多优秀的EDA工具可以合并到一个统一的计算机平台上,成为一个完整的EDA系统,充分发挥每个设计工具的技术优势,实现资源共享。在这种环境下,设计者可以更有效地运用各种工具,提高设计质量和效率。 近年来,随着硬件描述语言等设计数据格式的逐步标准化,不同设计风格和应用的要求导致各具特色的EDA工具被集成在同一个工作站上,从而使EDA框架标准化。新的EDA系统不仅能够实现高层次的自动逻辑综合、版图综合和测试码生成,而且可以使各个仿真器对同一个设计进行协同仿真,从而进一步提高了EDA系统的工作效率和设计的正确性。
5、库 EDA工具必须配有丰富的库(元件图形符号库、元器件模型库、工艺参数库、标准单元库、可复用的电路模块路、IP库等),才能够具有强大的设计能力和较高的设计效率。
在电路设计的每个阶段,EDA系统需要各种不同层次、不同种类的元器件模型库的支持。例如,原理图输入时需要元器件外形库,逻辑仿真时需要逻辑单元的功能模型库,电路仿真时需要模拟单元和器件的模型库,版图生成时需要适应不同层次和不同工艺的底层版图库,测试综合时需要各种测试向量库等。每一种库又按其层次分为不同层次的单元或元素库,例如逻辑仿真的库又按照行为级、寄存器级和门级分别设库。而VHDL语言输入所需要的库则更为庞大和齐全,几乎包括了上述所有库的内容。各种模型库的规模和功能是衡量EDA工具优劣的一个重要标志。
§1.2 EDA技术的实现目标与ASIC设计 § 1.2.1 EDA技术的实现目标 一般地说,利用EDA技术进行电子系统设计,主要有4个应用领域,即印制电路板(PCB)设计、集成电路(IC或ASIC)设计、可编程逻辑器件(FPGA/CPLD)设计以及混合电路设计。 印制电路板的设计是EDA技术的最初实现目标。电子系统大多采用印制电路板的结构,在系统实现过程中,印制电路板设计、装配和测试占据了很大的工作量,印制电路板设计是一个电子系统进行技术实现的重要环节,也是一个很有工艺性、技巧性的工作,利用EDA工具来进行印制电路板的布局布线设计和验证分析是早期EDA技术最基本的应用。
集成电路设计是指通过一系列特定的加工工艺,将晶体管、二极管等有源器件和电阻、电容等无源器件,按照一定的电路互连,“制作”(集成)在一块半导体单晶薄片上,经过封装而形成的具有特定功能的完整电路。集成电路一般要通过“掩膜”来制作,按照实现的工艺,又分为全定制或半定制的集成电路。集成电路设计包括逻辑(或功能)设计、电路设计、版图设计和工艺设计等多个环节。随着大规模和超大规模集成电路的出现,传统的手工设计方法遇到的困难越来越多,为了保证设计的正确性和可靠性,必须采用先进的EDA软件工具来进行集成电路的逻辑设计、电路设计和版图设计。集成电路设计是EDA技术的最终实现目标,也是推动EDA技术推广和发展的一个重要源泉。
可编程逻辑器件(PLD,Programmable Logic Device)是一种由用户根据需要而自行构造逻辑功能的数字集成电路,其特点是直接面向用户,具有极大的灵活性和通用性,使用方便,开发成本低,上市时间短,工作可靠性好。可编程器件目前主要有两大类型:复杂可编程逻辑器件(CPLD,Complex PLD)和现场可编程门阵列(FPGA,Field Programmable Gate Array)。它们的基本方法是借助于EDA软件,用原理图、状态机、布尔表达式、硬件描述语言等方法,生成相应的目标文件,最后用编程器或下载电缆,由目标器件实现。可编程逻辑器件的开发与应用是EDA技术将电子系统设计与硬件实现进行有机融合的一个重要体现。
随着集成电路复杂程度的不断提高,各种不同学科技术、不同模式、不同层次的混合设计方法已被认为是EDA技术所必须支持的方法。不同学科的混合设计方法主要指电子技术与非电学科技术的混合设计方法;不同模式的混合方法主要指模拟电路与数字电路的混合,模拟电路与DSP技术的混合,电路级与器件级的混合方法等;不同层次的混合方法主要指逻辑行为级、寄存器级、门级以及开关级的混合设计方法。目前在各种应用领域,如数字电路、模拟电路、DSP专用集成电路、多芯片模块以及印刷电路系统的设计都需要采用各种混合设计方法。
§ 1.2.2 ASIC的特点与分类 ASIC(Application Specific Integrated Circuit)的概念早在20世纪60年代就有人提出,但由于当时设计自动化程度低,加上工艺基础、市场和应用条件均不具备,因而没有得到适时发展。进入20世纪80年代后,随着半导体集成电路的工艺技术、支持技术、设计技术、测试评价技术的发展,集成度的大大提高,电子整机、电子系统高速更新换代的竞争态势不断加强,为开发周期短、成本低、功能强、可靠性高以及专利性与保密性好的专用集成电路创造了必要而充分的发展条件,并很快形成了用ASIC取代中、小规模集成电路来组成电子系统或整机的技术热潮。
ASIC的出现和发展说明集成电路进入了一个新的阶段。通用的、标准的集成电路已不能完全适应电子系统的急剧变化和更新换代。各个电子系统生产厂家都希望生产出具有自己特色和个性的产品,而只有ASIC产品才能实现这种要求。这也是自20世纪80年代中期以来ASIC得到广泛传播和重视的根本原因。目前ASIC在总的IC市场中的占有率已超过三分之一,在整个逻辑电路市场中的占有率已超过一半。与通用集成电路相比,ASIC在构成电子系统时具有以下几个方面的优越性:
(1)缩小体积、减轻重量、降低功耗。 (2)提高可靠性。用ASIC芯片进行系统集成后,外部连线减少,可靠性明显提高。 (3)易于获得高性能。ASIC针对专门的用途而特别设计,它是系统设计、电路设计和工艺设计的紧密结合,这种一体化的设计有利于得到前所未有的高性能系统。 (4)可增强保密性。电子产品中的ASIC芯片对用户来说相当于一个“黑盒子”。 (5)在大批量应用时,可显著降低系统成本。
ASIC按功能的不同可分为数字ASIC、模拟ASIC、数模混合ASIC和微波ASIC;按使用材料的不同可分为硅ASIC和砷化镓ASIC。一般来说,数字、模拟ASIC主要采用硅材料,微波ASIC主要采用砷化镓材料。砷化镓具有高速、抗辐射能力强、寄生电容小和工作温度范围宽等优点,目前已在移动通信、卫星通信等方面得到广泛应用。但总的说来,由于砷化镓的研究较硅晚了十多年,目前仍是硅ASIC占主导地位。对于硅材料ASIC,按制造工艺的不同还还可进一步将其分为MOS型、双极型和BiCMOS型,其中MOS型ASIC占了整个ASIC市场的70%以上,双极型ASIC约占16%,BiCMOS型ASIC占11%左右。
§ 1.2.3 ASIC的设计方法 目前ASIC已经渗透到各个应用领域,它的品种非常广泛,从高性能的微处理器、数字信号处理器一直到彩电、音箱和电子玩具电路,可谓五花八门。由于品种不同,在性能和价格上会有很大差别,因而实现各种设计的方法和手段也就有所不同。 ASIC的设计按照版图结构及制造方法分,有全定制和半定制两种实现方法,如图1-1所示。全定制是一种手工设计版图的设计方法,设计者需要使用全定制版图设计工具来完成。半定制法是一种约束性设计方法,约束的目的是简化设计,缩短设计周期,降低设计成本,提高设计的正确率。对于数字ASIC设计而言,其半定制法按逻辑实现的方式不同,可再分为门阵列法、标准单元法和可编程逻辑器件法。
图1-1 ASIC实现方法
对于某些性能要求很高、批量较大的芯片,一般采用全定制法设计。例如半导体厂家推出的新的微处理器芯片,为了提高芯片的速度,设计时须采用最佳的随机逻辑网络,且每个单元都必须精心设计,另外还要精心地布局布线,将芯片设计得最紧凑,以节省每一小块面积,降低成本。但是,很多产品的产量不大或者不允许设计时间过长,这时只能牺牲芯片面积或性能,并尽可能采用已有的、规则结构的版图。或者为了争取时间和市场,也可采用半定制法,先用最短的时问设计出芯片,在占领市场的过程中再予以改进,进行二次开发。因此半定制与全定制两种设计方式的优缺点是互补的,设计人员可根据不同的要求选择各种合适的设计方法。下面简要介绍几种常用的设计方法和它们的特点。
1、全定制法 全定制法是一种基于晶体管级的设计方法,它主要针对要求得到最高速度、最低功耗和最省面积的芯片设计。为满足要求,设计者必须使用版图编辑工具从晶体管的版图尺寸、位置及互连线开始亲自设计,以期的得到ASIC芯片的最优性能。
运用全定制法设计芯片,当芯片的功能、性能、面积和成本确定后,设计人员要对芯片结构、逻辑、电路等进行精心的设计,对不同的方案进行反复比较,对单元电路的结构、晶体管的参数要反复地模拟优化。在版图设计时,设计人员要手工设计版图并精心地布局布线,以获得最佳的性能和最小的面积。版图设计完成后,要进行完整的检查、验证,包括设计规则检查、电学规则检查、连接性检查、版图参数提取、电路图提取、版图与电路图一致性检查等。最后,通过后模拟,才能将版图转换成标准格式的版图文件交给厂家制造芯片。
由此可见,采用全定制法可以设计出高速度、低功耗、省面积的芯片,但人工参与的工作量大,设计周期长,设计成本高,而且容易出错,一般只适用于批量很大的通用芯片(如存储器、乘法器等)设计或有特殊性能要求(如高速低功耗芯片)的电路设计。
2、门阵列法 门阵列是最早开发并得到广泛应用的ASIC设计技术,它是在一个芯片上把门阵列排列成阵列形式,严格地讲是把含有若干个器件的单元排列成阵列形式。门阵列设计法又称“母片”法,母片是IC工厂按照一定规格事先生产的半成品芯片。在母片上制作了大量规则排列的单元,这些单元依照要求相互连接在一起即可实现不同的电路要求。母片完成了绝大部分芯片工艺,只留下一层或两层金属铝连线的掩膜需要根据用户电路的不同而定制。典型的门阵列母片结构如图1-2所示。
图1-2 通道型门阵列的母片结构
门阵列法的设计一般是在IC厂家提供的电路单元库基础上进行的逻辑设计,而且门阵列设计软件一般都具有较高的自动化水平,能根据电路的逻辑结构自动调用库单元的版图,自动布局布线。因此,设计者只要掌握很少的集成电路知识,设计过程也很简便,设计制造周期短,设计成本低。但门的利用率不高,芯片面积较大,而且母片上制造好的晶体管都是固定尺寸的,不利于设计高性能的芯片。所以这种方法适用于设计周期短、批量小、成本低、对芯片性能要求不高的芯片设计。一般采用这种方法迅速设计出产品,在占领市场后再用其他方法“再设计”。
3、标准单元法 标准单元设计法以精心设计好的标准单元库为基础。设计时可根据需要选择库中的标准单元构成电路,然后调用这些标准单元的版图,并利用自动布局布线软件完成电路到版图一一对应的最终设计。标准单元库一般应包括以下几方面的内容: (1)逻辑单元符号库:包含各种标准单元的名称、符号、输入输出及控制端,供设计者输入逻辑图时调用。
(2)功能单元库:该库是在单元版图确定后,从中提取分布参数再进行模拟得到标准单元的功能与时序关系,并将此功能描述成逻辑与时序模拟所需要的功能库形式,供逻辑与时序模拟时调用。 (3)拓扑单元库:该库是单元版图主要特征的抽象表达,去掉版图细节,保留版图的高度、宽度及I/O、控制端口的位置。这样用拓扑单元进行布局布线,既保留了单元的主要特征,又大大减少了设计的数据处理量,提高了设计效率。 (4)版图单元库:该库以标准的版图数据格式存放各单元精心设计的版图。
相比于全定制设计法,标准单元法设计的难度和设计周期都小得多,而且也能设计出性能较高、面积较小的芯片。与门阵列法相比,标准单元法设计的电路性能、芯片利用率以及设计的灵活性均比门阵列好,既可用于设计数字ASIC,又可用于设计模拟ASIC。标准单元法存在的问题是,当工艺更新以后,标准单元库要随之更新,这是一项十分繁重的工作。此外,标准单元库的投资较大,而且芯片的制作需要全套的掩膜版和全部工艺过程,因此生产周期及成本均比门阵列高。
4、可编程逻辑器件法 可编程逻辑器件是ASIC的一个重要分支。与前面介绍的几类ASIC不同,它是一种已完成了全部工艺制造、可直接从市场上购得的产品,用户只要对它编程就可实现所需要的电路功能,所以称它为可编程ASIC。前面三种方法设计的ASIC芯片都必须到IC厂家去加工制造才能完成,设计制造周期长,而且一旦有了错误,需重新修改设计和制造,成本和时间要大大增加。采用可编程逻辑器件,设计人员在实验室即可设计和制造出芯片,而且可反复编程,进行电路更新。如果发现错误,则可以随时更改,完全不必关心器件实现的具体工艺,这就大大地方便了设计者。
可编程逻辑器件发展到现在,规模越来越大,功能越来越强,价格越来越便宜,相配套的EDA软件越来越完善,因而深受设计人员的喜爱。目前,在电子系统的开发阶段的硬件验证过程中,一般都采用可编程逻辑器件,以期尽快开发产品,迅速占领市场。等大批量生产时,再根据实际情况转换成前面三种方法中的一种进行“再设计”。
§ 1.2.4 IP核复用技术与SOC设计 电子系统的复杂性越来越高,系统集成芯片(SOC)是目前超大规模集成电路的主流,现行的面向逻辑的集成电路设计方法在超深亚微米(VDSM)集成电路设计中遇到了难以逾越的障碍,基于标淮单元库的传统设计方法己被证明不能胜任SOC的设计,芯片设计涉及的领域不再局限于传统的半导体,而是必须与整机系统结合。因此,基于IP复用(IP Reuse) 的新一代集成电路设计技术越来越显示出其优越性。
1.IP核的基本概念 IP的原来含义是知识产权、著作权等。实际上,IP的概念早已在IC设计中使用,应该说前面介绍的标准单元库中功能单元就是IP的一种形式,因此,在IC设计领域可将其理解为实现某种功能的设计。美国著名的Dataquest咨询公司则将半导体产业的IP定义为用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块。
随着信息技术的飞速发展,用传统的手段来设计高复杂度的系统级芯片,设计周期将变得冗长,设计效率降低。解决这一设计危机的有效方法是复用以前的设计模块,即充分利用已有的或第三方的功能模块作为宏单元,进行系统集成,形成一个完整的系统,这就是集成电路设计复用的概念。这些已有的或由第三方提供的具有知识产权的模块(或内核)称为IP核,它在现代EDA技术和开发中具有十分重要的地位。
可复用的IP核一般分为硬核、固核和软核三种类型。硬核是以版图形式描述的设计模块,它基于一定的设计工艺,不能由设计者进行修改,可有效地保护设计者的知识产权。换句话说,用户得到的硬核仅是产品的功能,而不是产品的设计。由于硬核的布局不能被系统设计者修改,所以也使系统设计的布局布线变得更加困难,特别是在一个系统中集成多个硬件IP核时,系统的布局布线几乎不可能。
固核由RTL描述和可综合的网表组成。与硬核相比,固核可以在系统级重新布局布线,使用者按规定增减部分功能。由于RTL描述和网表对于系统设计者是透明的,这使得固核的知识产权得不到有效的保护。固核的关键路径是固定的,其实现技术不能更改,不同厂家的固核不能互换使用。因此,硬核和固核的一个共同缺陷就是灵活性比较差。
软核是完全用硬件描述语言(VHDL/Verilog HDL)描述出来的IP,它与实现技术无关,可以按使用者的需要进行修改。软核可以在系统设计中重新布局布线,在不同的系统设汁中具有较大的灵活性,可优化性能或面积达到期望的水平。由于每次应用都要重新布局布线,软核的时序不能确定,从而增加了系统设计后测试的难度。
一个IP模块,首先要有功能描述文件,用于说明该IP模块的功能时序要求等,其次还要有设计实现和设计验证两个方面的文件。硬核的实现比较简单,类似于PCB设计中的IC芯片的使用;软核的使用情况较为复杂,实现后的性能与具体的实现方式有关。为保证软核的性能,软核的提供者一般还提供综合描述文件,用于指导软核的综合。固核的使用介于软核和硬核两者之间。
用户在设计一个系统时,可以自行设计各个功能模块,也可以用IP模块来构建。IP核作为一种商品,已经在Internet上广泛销售,而且还有专门的组织——虚拟插座接口协会(VSIA,Virtual Socket Interface Association)来制定关于IP产品的标准与规范。对设计者而言,想要在短时问内开发出新产品,一个比较好的方法就是使用IP核完成设计。
目前,尽管对IP还没有统一的定义,但IP的实际内涵已经有了明确的界定:首先它必须是为了易于重用而按照嵌入式应用专门设计的;其次是必须实现IP模块的优化设计。优化的目标通常可用“四最”来表达,即芯片的面积最小、运算速度最快、功率消耗最低、工艺容差最大。所谓工艺容差大,是指所做的设计可以经受更大的工艺波动,因为IP必须能经受得起成千上万次的使用。
2.基于IP模块的SOC设计 SOC又称为芯片系统,是指将一个完整的系统集成在一个芯片上,简单地说就是用一个芯片实现一个功能完整的系统。一个由微处理器核(CPU核)、数字信号处理器核(DSP核)、存储器核(RAM/ROM核)、模数转换核(A/D、D/A核)以及USB接口核等构成的系统芯片如图1-3所示。
图1-3 系统芯片(SOC)示意图
随着集成电路的规模越来越复杂,而产品的上市时间却要求越来越短,嵌入式设计方法应运而生。这种方法除了继续采用“自顶向下”的设计和综合技术外,其最主要特点是大量知识产权IP模块的复用,这就是基于IP模块的SOC设计方法,如图1-4所示。在系统设计中引入IP模块,就可以使设计者只设计实现系统其他功能的部分以及与IP模块的互连部分,从而简化设计,缩短设计时间。
图1-4 基于IP模块的SOC设计
SOC设计的第一个内容是系统级设计方法。传统的集成电路设计属于硬件设计范畴,很少的软件也是固化到芯片内部的存储器中。在进行SOC系统级设计时,设计者面临的一个新挑战是,不仅要考虑复杂的硬件逻辑设计,而且还要考虑系统的软件设计问题,这就是软硬件协同设计(Software/Hardware Co—Design)技术。软/硬件协同设计要求硬件和软件同时进行设计,并在设计的各个阶段进行模拟验证,减少设计的反复,缩短设计时间。
软/硬件协同设计的流程是:首先用VHDL语言和C语言进行系统描述并进行模拟仿真和系统功能验证;然后再对软/硬件实现进行功能划分,定义实现系统的软件/硬件边界;如无问题,则进行软件和硬件的详细设计;最后进行系统测试。 SOC设计的第二个内容是IP核的设计和使用。IP核的设计不是简单的设计抽取和整理,它涉及设计思路、时序要求和性能要求等。IP核的使用也绝不等同于集成电路设计中的单元库使用,它主要包括IP核的测试、验证、模拟、低功耗等。
SOC设计的第三个内容是超深亚微米集成电路的设计技术。尽管这个课题的提出已经有了相当长的时间,但是研究的思路和方法仍然在面向逻辑的设计思路中徘徊,也许布局规划和时序驱动的方法还能够解决当前大部分的实际问题,但是当我们面对0.13um甚至更细线条的时候,无法保证现在的做法有效,此时就应该从面向逻辑的设计方法转向面向路径的设计方法。深亚微米集成电路设计方法的根本性突破显然是SOC设计方法中最具挑战性的。 亚微米(小于1u到O.5u)和深亚微米(O.5u以下至0.05u) 1微米(u)=干分之一毫米(mm),1纳米(nm)=干分之一微米)
目前,基于IP模块的SOC设计急需解决上述三方面的关键技术问题,即软/硬件协同设计技术、IP核设计及复用技术和超深亚微米集成电路设计技术,而IP核的设计再利用则是保证系统级芯片开发效率和质量的重要手段。
3.SOC的实现 微电子制造工艺的进步为SOC的实现提供了硬件基础,而EDA软件技术的提高则为SOC创造了必要的开发平台。SOC可以采用全定制的方式来实现,即把设计的网表文件提交给半导体厂家流片就可以得到,但采用这种方式的风险性高,费用大,周期长。还有一种就是以可编程片上系统(SOPC,System On a Programmable Chip)的方式来实现,即利用大规模可编程逻辑器件FPGA/CPLD。现在,CPLD和FPGA器件的规模越来越大,速度也越来越快,设计者完全可以在其上通过编程实现各种复杂的设计,不仅能用它们实现一般的逻辑功能,还可以将微处理器、DSP、存储器、标准接口等功能部件全部集成在其中,真正实现System On a Chip。
§ 1.3 硬件描述语言 硬件描述语言(HDL)是相对于一般的计算机软件语言如C、Pascal而言的。HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。设计者可以利用HDL程序来描述所希望的电路系统,规定其结构特征和电路的行为方式,然后利用综合器和适配器将此程序变成能控制FPGA和CPLD内部结构,并实现相应逻辑功能的门级或更底层的结构网表文件和下载文件。硬件描述语言的发展至今已有二十多年的历史,它是EDA技术的重要组成部分,也是EDA技术发展到高级阶段的一个重要标志。
较常用的HDL主要有VHDL、Verilog HDL 、ABEL-HDL、System-Verilog和System C等。而VHDL和Verilog HDL是当前最流行并已成为IEEE工业标准的硬件描述语言,得到了众多EDA公司的支持,在电子工程领域已成为事实上的通用硬件描述语言。专家认为,在21世纪中,VHDL与Verilog语言将承担起几乎全部的数字系统设计任务。
§ 1.3.1 VHDL VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE(The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)之后,各EDA公司相继推出了自己的VHDL设计环境。此后,VHDL在电子设计领域受到了广泛的接受,并逐步取代了原有的非标准HDL。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在公布的最新VHDL标准版本是IEEE 1076-2002。
VHDL主要用于描述数字系统的结构、行为、功能和接口。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件已不成问题。应用VHDL进行工程设计的优点是多方面的,具体如下:
(1)与其他硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL最初是作为一种仿真标准格式出现的,因此VHDL既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言。它有丰富的仿真语句和库函数,设计者可以在系统设计的早期随时对设计进行仿真模拟,查验所设计系统的功能特性,从而对整个工程设计的结构和功能可行性作出决策。
(3)VHDL的行为描述能力和程序结构决定了它具有支持大规模设计和分解已有设计的再利用功能,满足了大规模系统设计要由多人甚至多个开发组共同并行工作来实现的这种市场需求。VHDL中实体的概念、程序包的概念、库的概念为设计的分解和并行工作提供了有力的支持。 (4)对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并自动地将VHDL描述转变成门级网表,生成一个更高效、更高速的电路系统;此外,设计者还可以容易地从综合优化后的电路获得设计信息,返回去更新修改VHDL设计描述,使之更为完善。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的CPLD、FPGA及各种门阵列实现目标。 (6)由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的情况下,只需要改变端口类属参数或函数,就能轻易地改变设计的规模和结构。
§ 1.3.2 Verilog HDL Verilog HDL(以下简称为Verilog)最初有Gateway Design Automation 公司(简称GDA)的Phil Moorby在1983年创建。起初,Verilog仅作为GDA公司的Verilog-XL仿真器的内部语言,用于数字逻辑的建模、仿真和验证。Verilog-XL推出后获得了成功和认可,从而促使Verilog HDL的发展。1989年GDA公司被Cadence公司收购,Verilog语言成为了Cadence公司的私有财产。1990年Cadence公司成立了OVI(Open Verilog International)组织,公开了Verilog语言,并由OVI负责促进Verilog语言的发展。在OVI的努力下,1995年,IEEE制定了Verilog 的第一个国际标准,即IEEE Std 1364-1995,即Verilog1.0。
2001年,IEEE发布了Verilog的第二个标准版本(Verilog2 2001年,IEEE发布了Verilog的第二个标准版本(Verilog2.0),即IEEE Std 1364-2001,简称Verilog-2001标准。由于Cadence公司在集成电路设计领域的影响力和Verilog的易用性,Verilog成为基层电路建模与设计中最流行的硬件描述语言。
Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,因此,它具有很多C语言的优点。从表述形式上来看,Verilog代码简明扼要,使用灵活,且语法规定不是很严谨,很容易上手。Verilog具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。在语言易读性、层次化和结构化设计方面表现出了强大的生命力和应用潜力。因此,Verilog支持各种模式的设计方法:自顶向下与自低向上或混合方法,在面对当今许多电子产品生命周期缩短,需要多次重新设计以融入最新技术、改变工艺等方面,Verilog具有良好的适应性。
用Verilog进行电子系统设计的一个很大的优点是当设计逻辑功能时,设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力;当需要仿真验证时,可以很方便地从电路物理级别、晶体管级、寄存器传输级,乃至行为级等多个层次来作验证。
§ 1.3.3 ABEL-HDL ABEL-HDL是一种最基本的硬件描述语言,它支持各种不同输入方式的HDL,其输入方式即电路系统设计的表达方式,包括布尔方程、高级语言方程、状态图和真值表。ABEL-HDL被广泛用于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,以及上至系统、下至门级的宽口径描述功能,因而适用于各种不同规模的可编程器的设计。如DOS版的ABEL3.0软件可对GAL器件作全方位的逻辑描述和设计,而在诸如Lattice的ISP EXPERT、Data I/O的Synario、Vantis的De-sign-Direct、Xilinx的Foundation和Web-pack等EDA软件中,ABEL-HDL同样可用于更大规模的CPLD/FPGA器件功能设计。
ABEL-HDL还能对所设计的逻辑系统进行功能仿真而无需顾及实际芯片的结构。ABEL-HDL的设计也能通过标准格式设计转换文件转换成其它设计环境,如VHDL、Verilog-HDL等。与VHDL、Verilog-HDL等硬件描述语言相比,ABEL-HDL具有适用面宽(DOS、Windows版及大、中小规模PLD设计)、使用灵活、格式简洁、编译要求宽松等优点,是一种适合于速成的硬件描述语言,比较适合初学者学习。虽然有不少EDA软件支持ABEL-HDL,但提供ABEL-HDL综合器的EDA公司仅Data I/O一家。而且其描述风格一般只用门电路级描述方式,对于复杂电路的设计显得力不从心。
§ 1.3.4 Verilog HDL和VHDL的比较 一般的硬件描述语言可以在三个层次上进行电路描述,其描述层次依次可分为行为级、RTL级和门电路级。VHDL语言的特点决定了它更适用于行为级(也包括RTL级)的描述,有人将它称为行为描述语言;而Verilog属于RTL级硬件描述语言,通常只适于RTL级和更低层次的门电路级描述。 RTL在电子科学中指的是寄存器转换级电路(Register Transfer Level)的缩写尺寸的集成电路
与Verilog语言相比,VHDL语言是一种高级描述语言,适用于电路高级建模,比较适合于FPGA/CPLD目标器件的设计,或间接方式的ASIC设计;而Verilog语言则是一种较低级的描述语言,更易于控制电路资源,因此更适合于直接的集成电路或ASIC设计。 VHDL和Verilog语言的共同特点是:能形式化地抽象表示电路的结构和行为,支持逻辑设计中层次与领域的描述,可借助于高级语言的精巧结构来简化电路的描述,具有电路仿真与验证机制以保证设计的正确性,支持电路描述由高层到低层的综合转换,便于文档管理,易于理解和设计重复利用。
§ 1.4 常用EDA工具 EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机完成电子设计全程自动化,因此,基于计算机环境的EDA软件的支持是必不可少的 。EDA工具大致可以分为如下五个模块: 设计输入编辑器 仿真器 HDL综合器适配器(或布局布线器) 下载器 当然这种分类不是绝对的,现在往把各EDA工具集成在一起,如MAX+PLUSII等。
§ 1.4.1 设计输入编辑器 在各可编程逻辑器件厂商提供的EDA开发工具中一般都含有这类输入编辑器,如Xilinx的Foundation、Altera的MAX+plusII等。 通常专业的EDA工具供应商也提供相应的设计输入工具,这些工具一般与该公司的其他电路设计软件整合,这点体现在原理图输入环境上。如Innovada的eproduct Designer中的原理图输入管理工具DxDesigner(原为ViewDraw),既可作为PCB设计的原理图输入,又可作为IC设计、模拟仿真和FPGA设计的原理输入环境。
由于HDL(包括VHDL、Verilog HDL等)的输入方式是文本格式,所以它的输入实现要比原理图输入简单得多,用普通的文本编辑器即可完成。如果要求HDL输入时有语法色彩提示,可用带语法提示功能的能用文本编辑器,如Ultraedit、Vim、Vemacs等。当然EDA工具中提供的HDL编辑器会更好用些,如Aldec的Active HDL的HDL编辑器。
§ 1.4.2 综合器 综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件结构组件,进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述文件。由此可见,综合器工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用某种网表文件的方式联系起来。显然,综合器是软件描述与硬件实现的一座桥梁。综合器的运行流程如图1-5所示。综合过程就是将电路的高级语言描述转换成低级的、可与CPLD/FPGA或构成ASIC的门阵列基本结构相映射的网表文件。
目前比较著名的EDA综合器有Synopsys公司的DesignCompiler、FPGA Express;Synplicity公司的Synplify;Candence公司的Synergy;MentorGraphics公司的AutologicII;DataI/O公司的Synari-o。 图1-5 VHDL综合器运行流程
§ 1.4.3 仿真器 EDA技术中最为瞩目的和最具现代电子设计技术特征的功能就是日益强大的仿真测试技术。EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后还能对系统上的目标器件进行所谓边界扫描测试。这一切都极大地提高了大规模系统电子设计自动化程度。
与单片机系统开发相比,利用EDA技术对CPLD/FPGA的开发,通常是一种借助于软件方式的纯硬件开发,因此可以通过这种途径进行所谓专用集成电路(ASIC)开发,而最终的ASIC芯片,可以是CPLD/FPGA,也可以是专制的门阵列掩膜芯片,CPLD/FPGA只起到硬件仿真ASIC芯片的作用。而利用计算机进行的单片机系统的开发,主要是软件开发,在这个过程中只需程序编译器就可以了,综合器和适配器是没有必要的,其仿真过程是局部的且比较简单。
按仿真电路描述级别的不同,HDL仿真器可以单独或综合完成以下各仿真步骤: 系统级仿真 行为级仿真 RTL级仿真 门级时序仿真 按仿真是否考虑延时分类,可分为功能仿真和时序仿真,根据输入仿真文件的不同,可以由不同的仿真器完成,也可由同一个仿真器完成。 几乎各个EDA厂商都提供基于Verilog/VHDL的仿真器。常用的仿真器有:ModelSim与Verilog等。
§ 1.4.4 适配器 适配器的功能是将由综合器产生的网表文件配置于指定的目标器件中,产生最终的下载文件,如JEDEC格式的文件。适配所选定的目标器件(CPLD/FPGA芯片)必须属于原综合器指定的目标器件系列。对于一般的可编程模拟器件所对应的EDA软件来说,一般仅需包含一个适配器就可以了,如Lattice公司的PAC-DESIGNER。通常,EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由CPLD/FPGA供应商自己提供,因为适配器的适配对象直接与器件结构相对应。
§ 1.4.5 编程下载 编程下载就是把设计下载到对应的实际器件,实现硬件设计。编程下载软件一般都由可编程逻辑器件的厂商来提供。
§ 1.5 EDA的工程设计流程 基于EDA工具的CPLD/FPGA开发流程如图1-6所示。 图1-6 应用于CPLD/FPGA的EDA开发流程
§ 1.5.1 设计输入 设计开始首先须利用EDA工具的文本或图形编辑器将设计者的设计意图用文本方式(如VHDL、A-BEL-HDL程序)或图型方式(原理图、状态图等)表达出来。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合作准备。在此,对于多数EDA软件来说,最初的设计究竟采用哪一种输入形式是可选的,也可混合使用。
一般原理图输入方式比较容易掌握,直观方便,所画的电路原理图(请注意,这种原理图与利用PROTEL画的原理图有本质的区别)与传统的器件连接方式完全一样,很容易为人接受,而且编辑器中有许多现成的单元器件可资利用,自己也可以根据需要设计元件(元件的功能可用HDL表达,也可仍用原理图表达)。当然最一般化、最具普适性的输入方法是HDL程序的文本方式。这种方式与传统的计算机软件语言编辑输入基本一致。当然,目前有些EDA输入工具可以把图形输入与HDL文本输入的优势结合起来,实现效率更高的输入。
§ 1.5.2 综合 综合是将软件设计与硬件的可实现性挂钩,这是将软件转化为硬件电路的关键步骤。综合器对源文件的综合是针对某一CPLD/FPGA供应商的产品系列的,因此,综合后的结果具有硬件可实现性。在综合后,HDL综合器一般可生成EDIF、XNF或VHDL等格式的网表文件,它们从门级描述了最基本的门电路结构。有的EDA软件,如Synplify,具有为设计者将网表文件画成不同层次的电路图的功能。综合后,可利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。功能仿真仅对设计描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件的硬件特性,如延迟特性。一般的设计,这一层次的仿真也可略去。
§ 1.5.3 适配 综合通过后必须利用CPLD/FPGA布局/布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配完成后,EDA软件将产生针对此项设计的多项结果,主要有: 适配报告,内容包括芯片内资源分配与利用、引脚锁定、设计的布尔方程描述情况等; 时序仿真用网表文件; 下载文件,如JED或POF文件; 适配错误报告等。
§ 1.5.4 时序仿真与功能仿真 在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试,就是所谓的仿真。仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计,排除错误。可以完成两种不同级别的仿真测试: 时序仿真:就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而仿真精度高。但时序仿真的仿真文件必须来自针对具体器件的综合器与适配器。
功能仿真:是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程,仿真过程不涉及任何具体的器件的硬件特性,不经历综合与适配阶段,在设计项目编译后即可进入门级仿真器进行模拟测试。 通常的做法是:首先进行功能仿真,待确认设计文件所表达的功能满足设计要求时,再进行综合、适配和时序仿真,以便把握设计项目在硬件条件下的运行情况。
§ 1.5.5 编程下载 编程下载指将编程数据放到具体的可编程器件中去。如果以上的所有过程,包括编译、综合、布线/适配和行为仿真、功能仿真、时序仿真都没有发现问题,即满足原设计的要求,就可以将适配器产生的配置/下载文件通过CPLD/FPGA编程器或下载电缆载入目标芯片FPGA或CPLD中,对CPLD器件来说是将JED 文件“下载(Down Load)”到CPLD器件中去,对FPGA来说是将数据文件“配置”到FPGA中去。
器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。普通的CPLD器件和一次性编程的FPGA需要专用的编程器完成器件的编程工作,基于SRAM的FPGA可以由EPROM或其他存储体进行配置。在系统的可编程器件(ISP-PLD)则不需要专用的编程器,只要一根下载编程电缆就可以了。 器件在编程完毕之后,可以用编译时产生的文件对器件进行检验、加密等工作。对于具有边界扫描测试能力和在系统编程能力的器件来说,测试起来就更加方便。
§ 1.5.6 硬件测试 最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便在更真实的环境中检验设计的运行情况。
§ 1.6 MAX+plusⅡ集成开发环境 Altera可编程逻辑器件开发软件主要是MAX+PLUS II和Quartus II,其中MAX+PLUS II是Altera公司上一代的PLD开发软件,其发展到10.2版本后,Altera已不再推出新版本,但MAX+PLUS II以方便易用的界面、完备的设计库、优良的性能,至今仍受到设计人员的喜爱,是经典的和大众化的设计工具 。
§ 1.6.1 MAX+PLUSII简介 MAX+PLUSII(Multiple Array and Programming Logic User System)开发工具是Altera公司推出的一种EDA工具,具有灵活高效、使用便捷和易学易用等特点。Altera公司在推出各种CPLD的同时,也在不断地升级相应的开发工具软件,已从早期的第一代A+PLUS、第二代MAX+PLUS发展到第三代MAX+PLUSII和第四代Quartus。使用MAX+PLUSII软件,设计者无需精通器件内部的复杂结构,只需用所熟悉的设计输入工具,如硬件描述语言、原理图等进行输入,MAX+PLUSII自动将设计转换成目标文件下载到器件中去。MAX+PLUSII开发系统具有以下特点:
(1)多平台。MAX+PLUSII软件可以在基于PC机的操作系统如Windows95、Windows98、Windows2000、Windows NT下运行,也可以在Sun SPAC station等工作站上运行。 (2)开放的界面。MAX+PLUSII提供了与其他设计输入、综合和校验工具的接口,接口符合EDIF200/300、LPM、VHDL、Verilog HDL等标准。目前MAX+PLUSII所支持的主流第三方EDA工具主要有Synopsys、Viewlogic、Mentor、Graphics、Cadence、OrCAD、Xilinx等公司的工具。
(3)模块组合式工具软件。MAX+PLUSII具有一个完整的可编程逻辑设计环境,包括设计输入、设计处理、设计校验和下载编程四个模块,设计者可以按设计流程选择工作模块。 (4)与结构无关。MAX+PLUSII开发系统的核心——Compiler(编译器)能够自动完成逻辑综合和优化,它支持Altera的Classic、MAX5000、MAX7000、FLEX8000和FLEX10K等可编程器件系列,提供了一个与结构无关的PLD开发环境
(5)支持硬件描述语言。MAX+PLUSII支持各种HDL设计输入语言,包括VHDL、Verilog HDL和Altera的硬件描述语言AHDL。
§ 1.6.2 软件的安装 MAX+PLUSII软件按使用平台可分为PC机版和工作站版;按使用的对象可分为商业版、基本版和学生版。 商业版:支持全部输入方式和版本发行时的除APEX系列外的所有Altera CPLD器件。商业版运行时需要一个授权码和一个附加的并口硬件狗。 基本版:在商业版的基础上作了一些限制,如不支持VHDL,不能进行功能仿真和时序仿真,不支持某些器件等。基本版不需要并口硬件狗,只需向Altera申请一个基本授权码即可使用。
学生版:支持商业版的全部功能,但可使用的逻辑功能模块受到限制,且只支持几个器件。若要安装学生版,应向Altera公司大学项目部申请学生版授权码。 MAX+PLUSII几种版本的安装方法基本相同,基本安装步骤如下:
将光盘插入光驱,假定光驱号为F:。 选择[开始]/[运行],然后再打开对话框输入:“F:\PC\maxplus2\install”,运行后出现安装对话框,按Next继续。 阅读完授权窗口信息后,选择YES接受协议,再选择适当的安装方式,商业版选择Full\Custom\FLEXlm,基本版或学生版选择BASELINE\E+MAX。 选择安装目录,假设选择的目录为“C:\Maxplus2”,若要改变目录,则按Browse按钮,选好目录后,即可开始安装。 安装成功后,readme文件将自动出现,它包含一些重要信息。
第一次运行MAX+PLUSII,将会出现MAX+PLUSII Manager(管理器)界面,同时会在管理器窗口上出现License Agreement信息,选择其中的“Yes”项。 接着会出现Copy Protection窗口。选择“是(Y)”,将显示如何申请免费版本的授权文件;如果有硬件狗或授权文件,选择“否(N)”选项,并将硬件狗插在计算机并口上。 执行MAX+PLUSII管理器中的菜单命令Option/License Setup,在对话框中输入带路径名的授权文件名,然后单击“OK”。
§ 1.6.3 软件组成 MAX+PLUSII软件采用模块化结构,包括设计输入、项目处理、项目校验和器件编程四个部分,所有这些部分都集成在一个可视化的操作环境下,如图1-7所示。 图1-7 MAX+PLUS Ⅱ软件组成
(1)设计输入 MAX+plusⅡ的设计输入方法有多种,主要包括文本设计输入、原理图输入、波形设计输入等多种方式。另外,还可以利用第三方EDA工具生成的网表文件输入,该软件可接受的网表有EDIF格式、VHDL格式及Verilog格式。MAX+plusⅡ是一种层次设计工具,可根据实际情况灵活地使用最适合每一层次的设计方法。
(2)项目处理 设计处理的任务就是对项目进行编译(Compile),编译实际就是将设计者编写的设计,改为可以用于生产的“语言”。编译器通过读入设计文件并产生用于编程、仿真和定时分析的输出文件来完成编译工作。MAX+plusⅡ提供的编译软件,只需简单的操作,如参数选择、指定功能等,就可进行网表转换、逻辑分割和布线布局。 (3)项目校验 MAX+plusⅡ提供的设计校验过程包括仿真和定时分析,项目编译后,为确保设计无误,要再用专用软件进行仿真。如果发现了错误,则对设计输入进行部分修改直至无误。
(4)器件编程 MAX+plusⅡ通过编程器(Device Programmer)将编译器生成的编程文件编程或配置到Altera CPLD器件中,然后加入实际激励信号进行测试,检查是否达到设计要求。Altera公司器件的编程方法有许多种,可通过编程器、JTAG在系统编程及Altera在线配置等方式进行。
§ 1.6.4 设计流程 使用MAX+plusⅡ进行可编程逻辑器件开发主要包括四个阶段:设计输入、编译处理、验证(包括功能仿真、时序仿真和定时分析)和器件编程,其设计流程图如图1-8所示。 图1-8 MAX+plusⅡ的设计流程
§ 1.7 Quartus II集成开发环境 Quartus II是Altera公司新一代的PLD开发软件,适合大规模FPGA的开发,并且Quartus II可以完成MAX+PLUS II的所有设计任务。Quartus II具有被业界所公认的简单易学、易用和设计环境可视化与集成化的优点。 § 1.7.1 Quartus II简介 Quartus II是Altera提供的FPGA/CPLD开发集成环境,Quartus II在2l世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷,Quartus II提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
Altera的Quartus II提供了完整的多平台设计环境,能满足各种特定设计的需要,而且也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。 Quartus II设计工具完全支持Verilog、VHDL的设计流程,其内部嵌有Verilog、VHDL逻辑综合器。Quartus II也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、DC-FPGA,并能直接调用这些工具。同样,Quartus II具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。此外,Quartus II与MATLAB和DSP Builder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。
Quartus II包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analysis&Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer) 、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool(Tools菜单),在Compiler Tool窗口中运行相应的功能模块。在Compiler Tool窗口中,可以打开相应的功能模块所包含的设置文件或报告文件,或打开其他相关窗口。
此外,Quartus II还包含许多十分有用的LPM(Library 0f Parameterized Modules) 模块,它们是复杂或高级系统构建的重要组成部分,也可在Quartus II中与普通设计文件一起使用。Altera提供的LPM函数均基于Altera器件的结构作了优化设计。在许多实用情况中,必须使用宏功能模块才可以使用一些Altera特定器件的硬件功能。例如各类片上存储器、DSP模块、LVDS驱动器、PLL以及SERDES和DDIO电路模块等。 Quartus II编译器支持的硬件描述语言有VHDL、Verilog、System Verilog及AHDL,AHDL是Altera公司自己设计、制定的硬件描述语言,是一种以结构描述方式为主的硬件描述语言,只有企业标准。
Quartus II允许来自第三方的EDIF、VQM文件输入,并提供了很多EDA软件的接口。Quartus II 支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。Qnattus II拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。对于使用HDL的设计,可以使用Quartus II带有的RTL Viewer观察综合后的RTL图。在进行编译后,可对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真经检测无误后,便可以将下载信息通过Quartus II提供的编程器下载到目标器件中了。
§ 1.7.2 Quartus II 9.0软件的安装 1、系统配置要求 为了使Quartus II 9.0软件的性能达到最佳,Altera公司建议计算机的最低配置如下: (1)CPU为Pentium IV 1.8GHz以上型号,1GB以上系统内存。 (2)大于4.5G安装Quartus II 9.0软件所需的硬盘空间。 (3)Microsoft Windows NT4.0(Service Pack 4以上)、Windows 2000或Windows XP系统。 (4)Microsoft Windows兼容的SVGA显示器。 (5)DVD-ROM驱动器。
(6)至少有一种下面的接口:用于ByteBlaster II或ByteBlast er MV下载电缆的并行接口(LPT接口);用于MasterBlaster通信电缆的串行接口;用于USB-Blaster下载电缆、MasterBlaster通信电缆以及APU(Altera Programming Unit)的USB接口。
2、Quartus II 9.0软件的安装过程 在满足系统配置的PC机上,可以按照下面的步骤安装Quartus II 软件(这里以安装Quartus II 9.0为例)。 (1)插入Quartus II 9.0安装光盘自动运行后,或在资源管理器中双击install.exe文件,出现安装界面。 (2)鼠标点击安装界面中“Install Quartus II and Related Software”按钮,进入安装Quartus II 9.0软件的安装向导界面,如图1-9所示。
图1-9 Quartus II 9.0软件的安装向导界面
(3)点击“Next”,选择所要安装部分:Quartus II 9 (3)点击“Next”,选择所要安装部分:Quartus II 9.0、Modelsim-Altera(功能仿真和HDL测试激励软件,选装)、MegaCore IP Library(知识产权宏功能模块,选装)、Nios II Embedded Processor、Evaluation Edition(Nios II相关软件,选装)。 (4)选择完毕,点击“Next”按钮,阅读安装协议。 (5)点击“Next”,填写个人和公司信息。 (6)点击“Next”,选择安装目录。 (7)点击“Next”,选择程序文件夹。 (8)点击“Next”,选择安装类型:“完全安装”和“自定义安装”,在“自定义安装”中,用户可以仅选择安装自己设计所需的器件系列,以节省磁盘空间。
(9)点击“Next”,进入安装信息总界面。 Quartus II 9.0软件安装完成后,将给出提示界面,并显示是否安装成功的信息,应当仔细阅读所提示的相关信息。
3、Quartus II 9.0软件的授权 安装完Quartus II 9.0软件之后,在首次运行它之前,还必须要有Altera公司提供的授权文件(license.dat)。 首次运行Quartus II 9.0,如果软件不能检测到一个有效的授权文件,会出现如图1-10所示的软件请求授权的选项。该选项给出三种选择:30天试用期、自动从Altera网站请求授权文件、指定一个有授权文件的正确位置(前提是拥有有效的授权文件)。 如果拥有授权文件,则选择第三项,点击“OK”。授权文件设置如图1-11所示。
图1-10 软件请求授权
图1-11 设置授权文件
选择导入授权文件(license文件),操作界面如图1-12所示。 图1-12 导入授权文件
导入授权文件后,用户信息显示如图1-13所示。 图1-13 正确导入授权文件后的画面
§ 1.7.3 Quartus II 9.0图形用户界面介绍 Quartus II 设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统提供全面的设计环境。 Quartus II 软件为设计流程的每个阶段提供Quartus II 图形用户界面、EDA工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。本节介绍Quartus II图形用户界面,图1-13显示了Quartus II 图形用户界面为设计流程每个阶段所提供的功能。
首次启动Quartus II软件时出现的图形用户界面如图1-14所示。Quartus II 9
1. 工程导航区 工程导航区显示了当前工程的绝大部分重要信息,使用户对当前工程的文件层次结构、所有相关文档以及设计单元有一个很清晰的认识。如图1-15所示,工程导航区有三个部分组成: (1)Hierarchy,设计实体的层次结构,它清楚地显示了顶层实体和各调用实体的层次关系。 图1-15 工程导航区
(2)Files,显示所有与当前工程相关联的文件。当把鼠标放在文件夹中的文件上时,软件会自动显示文件所在的绝对地址。用鼠标双击文件,则会在编辑窗口打开该文件。 (3)Design Units,当前工程中使用的所有设计单元。这些单元既包含Quartus II中自带的设计模块(如乘法器、移位寄存器等),也包含用户自己设计的单元模块。
2.状态区 状态区的作用是显示系统状态信息。它由一个显示窗口和一个位于系统环境最下方的状态条组成。图1-16中位于上面的窗口用于显示编译或仿真时的运行状态和进度。位于下方的状态条用于显示每个按钮或菜单的功能描述以及工程编译和波形仿真的进度。此外,当编译器和仿真器都不工作时,状态窗口显示系统处于空闲状态“Idle”。 图1-16 状态区的显示窗口和工作条
3.信息区 信息区用于显示系统在编译和仿真过程中所产生的指示信息。例如,语法信息、编译成功信息等。信息区提供五大类操作标记信息:Extra Info、Info、Warning、Critical Warning以及Error。关于各类信息的描述见表1-1所示。 表1-1 五类操作标记信息 信息类型 信息描述 Extra Info 为设计者提供外部信息,例如外部匹配信息和细节信息 Info 显示编译、仿真过程中产生的操作信息 Warning 显示编译、仿真过程中产生的警告信息 Critical Warning 显示编译、仿真过程中产生的严重警告信息 Error 显示编译、仿真过程中产生的错误信息
警告信息和错误信息不同:当编译仿真或软件构造过程中产生错误信息时,用户的操作不会成功;而当出现警告信息时,操作仍能成功。但是这并不能说明用户的设计文件是完全正确的,尤其在综合和编译过程中更要注意警告信息,因为它可能代表逻辑上的错误或芯片性能不符合设计要求。所以在编译阶段,最好对每个警告信息都进行仔细检查并寻找原因,这样能保证设计的稳定性和正确性。 用户可以通过点击信息区的标签来选择显示相应的信息,也可以通过鼠标右键的弹出菜单选择显示或隐藏某类信息,从而进行个性化定制,如图1-17所示。
图1-17 信息区
为了便于设计人员查阅信息,除了五类操作信息外,Quartus II 9 为了便于设计人员查阅信息,除了五类操作信息外,Quartus II 9.0软件还在信息区中增加了System、Processing、Suppressed三项标签信息,但此三项信息仍属于五大类标记信息。Processing窗口显示所有操作标记信息,即上面提到的五类操作标记信息都会在这个窗口显示。System窗口显示所有与设计过程无关的任务信息,例如,当把一个设计输入文件作为工程的顶层实体时,在System窗口中就会记录下这次任务操作。Suppressed信息显示受Message Suppressed Manager对话框中的规则(由用户设置)限制的Processing信息,当信息符合受限条件时,它将被转移到Suppressed标签中,而Processing和其它所属大类型标签页中则不再显示此条信息。
4.工作区 工作区是用户对输入文件进行设计的空间区域。在工作区中,Quartus II软件将显示设计文件和工具条以方便用户操作,如图1-18所示。 图1-18 工作区
5.快捷命令工具条 快捷命令工具条是由若干个按钮组成的,用鼠标点击按钮,可快速执行相应的操作。当把Quartus II的所有工具条全部拖出显示时,会发现这些工具条中有很多按钮是重复的,这是Quartus II为了方便用户在打开每个工具条时都能进行一些基本操作而做的设计。但是当用户同时打开多个工具条时,会使整个系统环境显得臃肿繁琐,而这种情况在用户只需要不同工具条中的几个简单功能时会显得更为突出。所以Quartus II也为用户提供了个性化的设置功能,用户可以自定义工具条和快捷命令按钮。
自定义工具条可以通过以下步骤进行:点击菜单Tools→Customize→Toolbars,也可在工具条或快捷命令按钮处单击鼠标右键,选择Customize→Toolbars,出现图1-19所示画面,然后就可自行添加或删减工具条。自定义快捷命令按钮的过程是:选择单击菜单Tools→Customize→Commands,或在工具条和快捷命令按钮处单击鼠标右键,选择Customize→Commands,就会出现图1-20所示画面,然后选择不同类别下的快捷命令按钮并用鼠标拖到工具条,即可完成个性化设置。
将鼠标置于工具条按钮图标上方1秒钟左右,各工具条及其按钮的功能将会在弹出标签中显示。另外,在状态窗口下方的状态条也会显示其功能。由于工具条中的快捷命令按钮只是菜单选项的简便操作。 图1-19 自定义工具条
图1-20 自定义快捷命令按钮
6、菜单命令区 Quartus II软件的菜单命令区帮助操作人员方便快捷地操作软件,同时又可根据软件的功能不同,实时动态地改变菜单命令。 菜单命令区主要由File(文件)、Edit(编辑)、View(视图)、Project(工程)、Assignments(资源分配)、Processing(处理操作)、Tools(工具)、Window(窗口)和Help(帮助)菜单组成,如图1-21所示。 图1-21 菜单命令区
§ 1.8 EDA技术发展趋势 随着市场需求的增长,集成工艺水平及计算机自动设计技术的不断提高,促进单片系统,或称系统集成芯片成为IC设计的发展方向。这一发展趋势表现在如下几方面: (1)超大规模集成电路的集成度和工艺水平不断提高,深亚微米(Deep-Submicron) 工艺,如65nm、45nm已经走向成熟,在一个芯片上完成系统级的集成己成为可能。 (2)由于工艺线宽的不断减小,在半导体材料上的许多寄生效应已经不能简单地被忽略。这就对EDA工具提出了更高的要求,同时也使得IC生产线的投资更为巨大。这一变化使得可编程逻辑器件开始进入传统的ASIC市场。
(3)市场对电子产品提出了更高的要求,如必须降低电子系统的成本、减小系统的体积等,从而对系统的集成度不断提出更高的要求。同时,设计的速度也成了一个产品能否成功的关键因素,这促使EDA工具和IP核应用更为广泛。 (4)高性能的EDA工具得到长足的发展,其自动化和智能化程度不断提高,为嵌入式系统设计提供了功能强大的开发环境。 (5)计算机硬件平台性能大幅度提高,为复杂的SOC设计提供了物理基础。
但以往的HDL语言只提供行为级或功能级的描述,无法完成更复杂的系统级的抽象描述。人们正尝试开发一些新的系统级设计语言来完成这一工作,现在已开发出更趋于电路系统行为级的硬件描述语言,如System Verilog、System C及系统级混合仿真工具,可以在同一个开发平台上完成高级语言(如(C/C++等)与标准HDL语言(Verilog HDL、VHDL)或其他更低层次描述模块的混合仿真。虽然用户用高级语言编写的模块只能部分自动转化成HDL描述,但作为一种针对特定应用领域的开发工具,软件供应商已经为常用的功能模块提供了丰富的宏单元库支持,可以方便地构建应用系统,并通过仿真加以优化,最后自动产生HDL代码,进入下一阶段的ASIC实现 。
此外,随着系统开发对EDA技术的目标器件各种性能要求的提高,ASIC和FPGA将更大程度相互融合。这是因为虽然标准逻辑ASIC芯片尺寸小、功能强大、功耗低,但设计复杂,并且有批量生产要求;可编程逻辑器件开发费用低廉,能在现场进行编程但却体积大、功能有限,而且功耗较大。因此,FPGA和ASIC正在走到一起,互相融合,取长补短。由于一些ASIC制造商提供具有可编程逻辑的标准单元,可编程器件制造商重新对标准逻辑单元发生兴趣,而有些公司采取两头并进的方法,从而使市场开始发生变化,在FPGA和ASIC之间正在诞生一种“杂交”产品,以满足成本和上市速度的要求。例如将可编程逻辑器件嵌入标准单元。
尽管将标准单元核与可编程器件集成在一起并不意味着使ASIC更加便宜,或使FPGA降低功耗。但是可使设计人员将两者的优点结合在一起,通过去掉FPGA的一些功能,可减少成本和开发时间并增加灵活性。当然现今也在进行将ASIC嵌入可编程逻辑单元的工作。目前,许多PLD公司开始为ASIC提供FPGA内核。PLD厂商与ASIC制造商结盟,为SOC设计提供嵌入式FPGA模块,使未来的ASIC供应商有机会更快地进入市场,利用嵌入式内核获得更长的市场生命期。
例如在实际应用中使用所谓可编程系统级集成电路(FPSLIC),即将嵌入式FPGA内核与RISC微控制器组合在一起形成新的IC,广泛用于电信、网络、仪器仪表和汽车中的低功耗应用系统中。当然,也有PLD厂商不把CPU的硬核直接嵌入在FPGA中而使用了软IP核,并称之为SOPC(System On Programmable Chip,可编程片上系统) 也可以完成复杂电子系统的设计,只是代价将相应提高。
在新一代的ASIC器件中留有FPGA的空间。如果希望改变设计,或者由于开始的工作中没有条件完成足够的验证测试,稍后也可以根据要求对它编程,这使ASIC设计人员有了一定的再修改的自由度。采用这种小的可编程逻辑内核修改设计问题,很好地降低了设计风险。增加可编程逻辑的另一个原因是,考虑到设计产品的许多性能指标变化太快,特别是通信协议,为已经完成设计并投入应用的IC留有多次可自由更改的功能是十分有价值的事,这在通信领域中的芯片设计方面尤为重要。
可重构计算的概念已逐渐明晰,它试图在通用的计算机体系架构中引入新的计算模式,通过CPU加入可以动态重构的可编程逻辑,为每一个不同应用加载不同的可编程逻辑配置,以优化计算速度,这种模糊软硬件界限的技术,或许将获得长足发展。 现在传统ASIC和FPGA之间的界限正变得模糊。系统级芯片不仅集成RAM和微处理器,也集成FPGA。整个EDA和IC设计工业都朝这个方向发展,这并非是FPGA与ASIC制造商竞争的产物,对于用户来说,意味着有了更多的选择。