1、第1章EDA技术概述第1章 EDA技术概述本章简要介绍了EDA技术、EDA工具、FPGA结构原理、EDA的应用情况和发展趋势,其中重点介绍了基于EDA的FPGA开发技术概况。考虑到本章中出现的一些基本概念和名词有可能涉及较多的基础知识和更深入的EDA基础理论,故对本章的学习仅要求读者作一般性的了解,无须深入探讨。因为待学习完本书,并经历了本书配置的必要实践后,许多问题都会自然而然地明白了。不过需要强调,认真学习本章的重要性并不能因此而被低估。1.1 EDA技术现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术(Electronic Design Automation,EDA)。ED
2、A技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言(Hardware Description Language,HDL)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。EDA技术使得设计者的主要工作仅限于利用软件的方式来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步。EDA技术在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGA/CPLD(Field Programmable Gate Array/Complex Programmable L
3、ogic Device)编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术等。因此EDA技术为现代电子理论和设计的表达与实现提供了可能性。正因为EDA技术丰富的内容以及与电子技术各学科领域的相关性,其发展的历程同大规模集成电路设计技术、计算机辅助工程、可编程逻辑器件,以及电子设计技术和工艺的发展是同步的。就过去30年的电子技术的发展历程,可将EDA技术的发展大致
4、分为三个阶段。20世纪70年代,在集成电路制作方面,MOS工艺已得到广泛的应用。可编程逻辑技术及其器件已经问世,计算机作为一种运算工具已在科研领域得到广泛应用。而在后期,CAD的概念已见雏形,这一阶段人们开始利用计算机取代手工劳动,辅助进行集成电路版图编辑、PCB布局布线等工作,这是EDA技术的雏形。20世纪80年代,集成电路设计进入了CMOS(互补场效应管)时代。复杂可编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用;在20世纪80年代末,出现了FPGA;CAE和CAD技术的应用更为广泛,它们在PCB设计方面的原理图输入、自动布局布线及PCB分析、逻辑设计、逻辑仿真、布尔代数综合和
5、化简等方面担任了重要的角色;特别是各种硬件描述语言的出现、应用和标准化方面的重大进步,为电子设计自动化必须解决的电子线路建模、标准文档及仿真测试奠定了基础。20世纪90年代,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得了更加广泛的应用。与此同时,电子技术在通信、计算机及家电产品生产中的市场需求和技术需求,极大地推动了全新的电子设计自动化技术的应用和发展。特别是集成电路设计工艺步入了超深亚微米阶段,百万门以上的大规模可编程逻辑器件的陆续面世,以及基于计算机技术的面向用户的低成本大规模ASIC设计技术的应用,促进了EDA技术的形成。更为重要的是,各EDA公司致力于推出兼容各种硬件实现方案和
6、支持标准硬件描述语言的EDA工具软件,都有效地将EDA技术推向成熟和实用。EDA技术在进入21世纪后,得到了更大的发展,突出表现在以下几个方面。 在FPGA上实现DSP(数字信号处理)应用成为可能,用纯数字逻辑进行DSP模块的设计,使得高速DSP实现成为现实,并有力地推动了软件无线电技术的实用化和发展。基于FPGA的DSP技术,为高速数字信号处理算法提供了实现途径。 嵌入式处理器软核的成熟,使得SOPC(System On a Programmable Chip)步入大规模应用阶段,在单片FPGA中实现一个完备的可随意重构的嵌入式系统成为可能。 在仿真和设计两方面支持标准硬件描述语言的功能强大
7、的EDA软件不断推出。 EDA使得电子领域各学科的界限更加模糊,更加互为包容:模拟与数字、软件与硬件、系统与器件、ASIC与FPGA等。 基于EDA的、用于ASIC设计的标准单元已涵盖大规模电子系统及复杂IP核模块。 软硬IP(Intellectual Property)核在电子行业的产业领域广泛应用。 SOC高效低成本设计技术的成熟。 系统级、行为验证级硬件描述语言(如System C)的出现,使复杂电子系统的设计和验证趋于简单。1.2 EDA技术应用对象一般地,利用EDA技术进行电子系统设计的最终目标,是完成专用集成电路ASIC或印制电路板(PCB)的设计和实现(如图1-1所示)。其中,P
8、CB设计指的是电子系统的印制电路板设计,从电路原理图到PCB上元件的布局、布线、阻抗匹配、信号完整性分析及板级仿真,到最后的电路板机械加工文件生成,这些都需要相应的计算机EDA工具软件辅助设计者来完成,这只是EDA技术应用的其中一个重要方面,但本书限于篇幅不作展开。ASIC作为最终的物理平台,集中容纳了用户通过EDA技术将电子应用系统的既定功能和技术指标具体实现的硬件实体。专用集成电路就是具有专门用途和特定功能的独立集成电路器件,根据这个定义,作为EDA技术最终实现目标的ASIC,可以通过三种途径来完成(如图1-1所示)。1可编程逻辑器件FPGA和CPLD是实现这一途径的主流器件,它们的特点是
9、直接面向用户、具有极大的灵活性和通用性、使用方便、硬件测试和实现快捷、开发效率高、成本低、上市时间短、技术维护简单、工作可靠性好等。FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SOC和ASIC设计,以及对自动设计与自动实现最典型的诠释。由于FPGA和CPLD的开发工具、开发流程和使用方法与ASIC有类似之处,因此,这类器件通常也被称为可编程专用IC或可编程ASIC。图1-1 EDA技术实现目标2半定制或全定制ASIC基于EDA技术的半定制或全定制ASIC,根据它们的实现工艺,可统称为掩模(Mask)ASIC,或直接称ASIC。可编程ASIC与掩模ASIC相比,不同之处在于前
10、者具有面向用户灵活多样的可编程性,即硬件结构的可重构特性。3混合ASIC混合ASIC(不是指数模混合ASIC)主要指既具有面向用户的FPGA可编程功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如CPU、RAM、ROM、硬件加法器、乘法器、锁相环等。1.3 硬件描述语言VHDL硬件描述语言(HDL)是EDA技术的重要组成部分,目前常用的HDL主要有:VHDL、Verilog HDL、SystemVerilog和System C。其中VHDL和Verilog在现在EDA设计中使用最多,也几乎得到所有的主流EDA工具的支持。而SystemVerilog和System C这两种HDL语
11、言还处于完善过程中,主要加强了系统验证方面的功能。VHDL是电子设计主流硬件的描述语言之一,本书将重点介绍它的编程方法和使用技术。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,于1983年由美国国防部(DOD)发起创建,由IEEE(The Institute of Electrical and Electronics Engineers)进一步发展并在1987年作为“IEEE标准1076” (IEEE Std 1076)发布。从此,VHDL成为硬件描述语言的业界标准之一。自IEE
12、E公布了VHDL的标准版本之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL。此后VHDL在电子设计领域得到了广泛应用,并与Verilog一起逐步取代了其他的非标准硬件描述语言。VHDL作为一种规范语言和建模语言,随着它的标准化,出现了一些支持该语言的行为仿真器。由于创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为。但到了20世纪90年代初,人们发现,VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。
13、这种方法显然对于电路自动设计是一个极大的推进。很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本VHDL,即IEEE 1076-1993。现在,VHDL与Verilog一样作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域已成为事实上的通用硬件描述语言。VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力。按照设计目的,VHDL程序可以划分为面
14、向仿真和面向综合两类,而面向综合的VHDL程序分别面向FPGA和ASIC开发两个领域。1.4 EDA技术的优势传统的数字电子系统或IC设计中,手工设计占了很大的比例。设计流程中,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件、设计电路板,最后进行实测与调试。传统数字技术的手工设计方法的缺点是: 复杂电路的设计、调试十分困难。 由于无法进行硬件系统仿真,如果某一过程存在错误,查找和修改十分不便。 设计过程中产生大量文档,不易管理。 对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可
15、移植性差。 只有在设计出样机或生产出芯片后才能进行实测。 所能设计完成的系统规模通常很小,抗干扰能力差,工作速度也很慢。相比之下,EDA技术有很大不同: 用HDL对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。 EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持,如逻辑仿真时的模拟库、逻辑综合时的综合库、版图综合时的版图库、测试综合时的测试库等。这些库都是EDA公司与半导体生产厂商紧密合作、共同开发的。 某些HDL本身也是文档型的语言(如Verilog),
16、极大地简化了设计文档的管理。 EDA技术中最为瞩目的功能,即最具现代电子设计技术特征的功能是日益强大的逻辑设计仿真测试技术。EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作。在完成实际系统的安装后,还能对系统上的目标器件进行所谓边界扫描测试、嵌入式逻辑分析仪的应用。这一切都极大地提高了大规模系统电子设计的自动化程度。 无论传统的应用电子系统设计得如何完美,使用了多么先进的功能器件,都掩盖不了一个无情的事实,即该系统对于设计者来说,没有任何自主知识产权可言。因为系统中的关键性的器件往往并非出自设计者之手,这将导致该系统在许多情况下的
17、应用直接受到限制。基于EDA技术的设计则不同,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权,再无受制于人之虞。 传统的电子设计方法至今没有任何标准规范加以约束,因此,设计效率低、系统性能差、规模小、开发成本高、市场竞争能力小。相比之下,EDA技术的设计语言是标准化的,不会由于设计对象的不同而改变;它的开发工具是规范化的,EDA软件平台支持任何标准化的设计语言;它的设计成果是通用性的,IP核具有规范的接口协议;良好的可移植与可测试性,为系统开发提供了可靠的保证。 从电子设计方法
18、学来看,EDA技术最大的优势就是能将所有设计环节纳入统一的自顶向下的设计方案中。 EDA不但在整个设计流程上充分利用计算机的自动设计能力,在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试。1.5 面向FPGA的EDA开发流程完整地了解利用EDA技术进行设计开发的流程对于正确地选择和使用EDA软件、优化设计项目、提高设计效率十分有益。一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。1.5.1 设计输入图1-2是基于EDA软件的FPGA开发流程框图。以下将分别介绍各设计模块的功能特点
19、。对于目前流行的用于FPGA开发的EDA软件,图1-2的设计流程具有一般性。将电路系统以一定的表达方式输入计算机,是在EDA软件平台上对FPGA/CPLD开发的最初步骤。通常,使用EDA工具的设计输入可分为两种类型。1图形输入图形输入通常包括电路原理图输入、状态图输入和波形图输入等方法。状态图输入方法就是根据电路的控制条件和不同的转换方式,用绘图的方法在EDA软件的状态图编辑器上绘出状态图,然后由EDA编译器和综合器将此状态变化流程图编译综合成电路网表。波形图输入方法则是将待设计的电路看成是一个黑盒子,只需告诉EDA工具该黑盒子电路的输入和输出时序波形图,EDA工具即能据此完成黑盒子电路的设计
20、。原理图输入方法是一种类似于传统电子设计方法的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图由逻辑器件(符号)和连接线构成,图中的逻辑器件可以是EDA软件库中预制的功能模块,如与门、非门、或门、触发器以及各种含74系列器件功能的宏功能块,甚至还有一些类似于IP的宏功能块。2硬件描述语言代码文本输入这种方式与传统的计算机软件语言编辑输入基本一致。就是将使用了某种硬件描述语言的电路设计代码,如VHDL或Verilog的源程序,进行编辑输入。图1-2 FPGA的EDA开发流程1.5.2 综合综合(Synthesis),就其字面含义应该是:把抽象的实体结合成单
21、个或统一的实体。因此,综合就是把某些东西结合到一起,把设计抽象层次中的一种表述转化成另一种表述的过程。在电子设计领域,综合的概念可以表述为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。事实上自上而下的设计过程中的每一步都可称为一个综合环节。现代电子设计过程通常从高层次的行为描述开始,以底层的结构甚至更低层次描述结束,每个综合步骤都是上一层次的转换。(1)从自然语言转换到VHDL语言算法表述,即自然语言综合。(2)从算法表述转换到寄存器传输级(Register Transport Level,RTL)表述,即从行为域到结构域的综合,即行为综合。(3)从RTL级
22、表述转换到逻辑门(包括触发器)的表述,即逻辑综合。(4)从逻辑门表述转换到版图级表述(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对应的FPGA变成具有专用功能的电路器件了。显然,综合器就是能够自动将一种设计表述形式向另一种设计表述形式转换的计算机程序,或协助进行手工转换的程序。它可以将高层次的表述转化为低层次的表述,可以从行为域转化为结构域,可以将高一级抽象的电路描述(如算法级)转化为低一级的电路描述(如门级),并可以用某种特定的“技术”(如CMOS)实现。对设计者而言有两种情况,一是在高抽象层次进
23、行系统设计并利用综合工具将设计转化为低层次的表述,二是直接在低抽象层次上设计系统,这类似于一个程序员用高级语言编程并用编译器将程序编译成机器代码或直接用机器代码进行编程的情况。在前一种情况下,设计者可以将精力主要集中在系统级问题上,而不必关心低级结构设计的细节问题。因此可减少设计和编程所花费的时间和精力,并且减少错误的发生。另一方面,尽管从表面上看,VHDL等硬件描述语言综合器和软件程序编译器都不过是一种“翻译器”,它们都能将高层次的设计表达转化为低层次的表达,但它们却具有许多本质的区别(如图1-3所示)。图1-3 编译器和综合器的功能比较编译器将软件程序翻译成基于某种特定CPU的机器代码,这
24、种代码仅限于这种CPU而不能移植,机器代码不代表硬件结构,更不能改变CPU的结构,只能被动地为其特定的硬件电路所利用。如果脱离了已有的硬件环境(CPU),机器代码将失去意义。此外,编译器作为一种软件的运行,除了某种单一目标器件(即CPU)的硬件结构外,不需要任何与硬件相关的器件库和工艺库参与编译。因而,编译器的工作单纯得多,编译过程基本属于一种一一对应式的、机械转换式的“翻译”行为。综合器则不同,同样是类似的软件代码(如VHDL程序),综合器转化的目标是底层的电路结构网表文件,这种满足源设计程序功能描述的电路结构不依赖于任何特定硬件环境,因此可以独立地存在,并能轻易地被移植到任何通用硬件环境中
25、,如ASIC、FPGA等。换言之,电路网表代表了特定的且可独立存在和具有实际功能的硬件结构,因此具备了随时改变硬件结构的依据。综合的结果具有相对独立性。另一方面,综合器在将硬件描述语言表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性(例如状态机的优化),它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。这就是说,对于相同的VHDL表述,综合器可以用不同的电路结构实现相同的功能。图1-4 HDL综合器运行流程如图1-4所示,与编译器相比,综合器具有更复杂的工作环境。综合器在接受VHDL程序并准备对其综合前,必须获得
26、与最终实现电路硬件设计特征相关的工艺库的信息,以及获得优化综合的诸多约束条件。一般地,约束条件可以分为三种,即设计规则、时间约束、面积约束。通常,时间约束的优先级高于面积约束。设计优化要求:综合器把VHDL源码翻译成通用原理图时,将识别状态机、加法器、乘法器、多路选择器和寄存器等。这些运算功能根据VHDL源码中的符号,如加、减、乘、除,都可用多种方法实现。如加法可实现方案有多种,有的面积小,速度慢;有的面积大,速度快。VHDL行为描述强调的是电路的行为和功能,而不是电路如何实现。而选择电路的实现方案正是综合器的任务。综合器需选择一种能充分满足各项约束条件且成本最低的实现方案。现在的许多综合器还
27、允许设计者指定在做映射优化时综合器应付出多大“努力”。“努力”一般可分为低、中、高三档。需要注意的是,VHDL(也包括Verilog、SystemVerilog)方面的IEEE标准,主要指的是文档的表述、行为建模及其仿真,至于在电子线路的设计方面,VHDL并没有得到全面的标准化支持。这就是说,HDL综合器并不能支持标准VHDL的全集(全部语句程序),而只能支持其子集(即部分语句),并且不同的HDL综合器所支持的VHDL子集也不完全相同。这样一来,对于相同的VHDL源代码,不同的HDL综合器可能综合出在结构和功能上并不完全相同的电路系统。对此,设计者应给予充分注意。对于不同的综合结果,不应对综合
28、器的特性贸然做出评价,而应在设计过程中,尽可能全面了解所使用的综合工具的特性。1.5.3 适配(布线布局)适配器(Fitter)也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、JAM、POF、SOF等格式的文件。适配所选定的目标器件必须属于原综合器指定的目标器件系列。通常,EDA软件中的综合器可由专业的第三方EDA公司提供的,而适配器则需由FPGA/CPLD供应商提供,因为适配器的适配对象直接与器件的结构细节相对应。适配器就是将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、优化、布局布线操
29、作。适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时产生可对目标器件进行编程的文件。1.5.4 仿真在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试,就是所谓的仿真(Simulation)。仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计的正确性,以便排除错误。仿真是EDA设计过程中的重要步骤。图1-2所示的时序与功能门级仿真通常由FPGA公司的EDA开发工具直接提供(当然也可以选用第三方的专业仿真工具),它可以完成两种不同级别的仿真测试。(1)时序仿真。就是接近真实器件时序性能运行特性的仿真。仿真文件中已包含了器件硬件特性参数,因而仿真精度高
30、。但时序仿真的仿真文件必须来自针对具体器件的适配器。综合后所得的EDIF等网表文件通常作为FPGA适配器的输入文件,产生的仿真网表文件中包含了精确的硬件延迟信息。(2)功能仿真。是直接对HDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程。仿真过程不涉及任何具体器件的硬件特性。不经历适配阶段,在设计项目编辑编译(或综合)后即可进入门级仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求。本书主要介绍基于Quartus II的时序仿真工具。如果要使用第三方的(如ModelSim等)仿真工具,则必须编写test ben
31、ch程序来进行仿真,对此读者可参考相关资料。1.5.5 RTL描述RTL(Register Transport Level)的概念最初产生于对某类电路的描述。RTL级描述是以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。这类寄存器或者显式地通过元件具体装配,或者通过推论做隐含的描述。传统概念下的RTL电路的构建特色是由一系列组合电路模块和寄存器模块相间级联而成,即组合电路与时序电路各自独立且级联,而信号的通过有一种逐级传输的特征,故称此类电路为寄存器传输级电路。此后,这个概念进一步泛化,便引申为各种独立的组合电路模块和独立的寄存器模块,但不涉及低层具体逻辑门结构或触发器电路细
32、节(所谓技术级:Technology),来构建描述数字电路的形式都称之为RTL描述。而且即使不包含时序模块,或只有寄存器模块的同类描述形式也都泛称为RTL描述。所以现在所谓的RTL仿真,即功能仿真就是指不涉及电路细节(如门级细节)的RTL模块级构建的系统的仿真;而涉及电路细节和时序性能的时序仿真就称为门级仿真。此概念进入EDA技术领域后,又有了进一步的引申,且向两个不同的方向分化。(1)RTL描述的电路就是“实际存在的电路”,或“真实的电路”的表述。而硬件描述语言HDL中包含可综合与不可综合(主要用于仿真)的语句,用可综合的语句构建的电路描述代码可以通过HDL综合器生成可实现的电路,于是就把一切用可综合的语句表述的,可由综合器生成实际电路的HDL代码形式称为RTL描述。现在许多文献中干脆将RTL当成了可综合的硬件描述语言代码的代名词,即把一个完整的、可综合的HDL代码对电路的表述称为RTL描述(综合出的电路未必包含寄存器)。(2)但另一方面,相对于RTL的传统含义(即由一系列独立的、宏观的组合电路模块和寄存器模块表述的电路系统),更多的情况
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1