第1章 概 述 1.1 EDA技术及其发展 在计算机技术的推动下,电子技术在20世纪末获得了飞速的发展,现代电子产品几乎渗透于社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时又促使现代电子产品性能的进一步提高,产品更新换代的节奏也越来越快。 电子技术发展的根基是微电子技术的进步,它表现在大规模集成电路加工技术,即半导体工艺技术的发展上。表征半导体工艺水平的线宽已经达到45nm以下,并还在不断地缩小;在硅片单位面积上集成了更多的晶体管;集成电路设计在不断地向超大规模、极低功耗和超高速的方向发展;同时,这些专用集成电路(Application Specific Integrated Circuit,ASIC)的设计成本还在不断降低,而在功能和结构上,现代的集成电路已能实现单片电子系统(System on a Chip,SoC)。 作为现代电子设计技术的核心,EDA(Electronic Design Automation)技术依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言(Hardware Description Language,HDL)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线)以及逻辑优化和仿真测试等功能,直至实现既定性能的电子线路系统。EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。 在现代高新电子产品的设计和生产中,微电子技术和现代电子设计技术是相互促进、相互推动又相互制约的两个技术环节。前者代表了物理层在广度和深度上硬件电路实现的发展,后者则反映了现代先进的电子理论、电子技术、仿真技术、设计工艺和设计技术与最新的计算机软件技术有机的融合和升华。因此严格地说,EDA技术应该是这两者的结合,是这两个技术领域共同孕育的奇葩。 在硬件实现方面,EDA技术融合了大规模集成电路制造技术、IC版图设计技术、ASIC测试和封装技术、FPGA(Field Programmable Gate Array)和CPLD(Complex Programmable Logic Device)编程下载技术、自动测试技术等;在计算机辅助工程方面,EDA融合了计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的设计概念;在现代电子学方面,EDA容纳了更多的内容,如电子线路设计理论、数字信号处理技术、嵌入式系统和计算机设计技术、数字系统建模和优化技术及微波技术等。因此,EDA技术为现代电子理论和设计的表达与实现提供了可能性。在现代技术的所有领域中,许多得以飞速发展的科学技术多属计算机辅助设计,而非自动化设计。显然,最早进入设计自动化的技术领域是电子技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。 由此可以看出,EDA技术已不是某一学科的分支或某种新的技能技术,而是一门综合性学科。它集多学科于一体,又渗透于各学科之中。它打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、软件性能和硬件指标、设计效率和产品性能合二为一,代表了电子设计技术和应用技术的发展方向。 正因为EDA技术丰富的内容以及与电子技术各学科领域的相关性,其发展的历程同大规模集成电路设计技术、计算机辅助工程、可编程逻辑器件以及电子设计技术和工艺的发展是同步的。就过去近30年电子技术的发展历程,大致可以将EDA技术的发展分为3个阶段。 20世纪70年代,在集成电路制作方面双极工艺、MOS工艺已得到广泛的应用;可编程逻辑技术及其器件已经问世,计算机作为一种运算工具已在科研领域得到广泛的应用;而在后期,CAD的概念已见雏形。在这一阶段,人们开始利用计算机取代手工劳动,辅助进行集成电路版图编辑、PCB(印制电路板)布局布线等工作。 20世纪80年代,集成电路设计进入了CMOS(互补场效应管)时代,复杂可编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用;而在80年代末,出现了FPGA,CAE和CAD技术的应用更为广泛,它们在PCB设计方面的原理图输入、自动布局布线及PCB分析,以及逻辑设计、逻辑仿真、逻辑函数化简等方面担任了重要的角色,特别是各种硬件描述语言的出现及其在应用和标准化方面的重大进步,为电子设计自动化必须解决的电路建模、标准文档及仿真测试奠定了坚实的基础。 进入20世纪90年代,随着硬件描述语言的标准化得到进一步的确立,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得了更加广泛的应用。与此同时,电子技术在通信、计算机及家电产品生产中的市场需求和技术需求极大地推动了全新的电子设计自动化技术的应用和发展,特别是集成电路设计工艺步入了超深亚微米阶段,近千万门以上的大规模可编程逻辑器件的陆续面世,以及基于计算机技术的面向用户的低成本大规模ASIC设计技术的应用,促进了EDA技术的形成和发展。更重要的是,各EDA公司致力于推出兼容各种硬件实现方案和支持标准硬件描述语言的EDA工具软件的研究,都有效地将EDA技术推向了成熟。 进入21世纪后,EDA技术得到了更大的发展,突出表现在以下几个方面。 (1)使电子设计成果以自主知识产权(IP)的方式得以明确表达和确认成为可能。 (2)在仿真验证和设计两方面都支持标准硬件描述语言的功能强大的EDA软件不断推出。 (3)电子技术全方位进入EDA时代。除了日益成熟的数字技术外,传统的电路系统设计建模理念发生了重大的变化,如软件无线电技术的崛起、模拟电路系统硬件描述语言的表达和设计的标准化、系统可编程模拟器件的出现、数字信号处理和图像处理的全硬件实现方案的普遍接受以及软硬件技术的进一步融合等。 (4)EDA使得电子技术领域各学科的界限更加模糊、相互包容,如模拟与数字、软件与硬件、系统与器件、ASIC与FPGA、行为与结构等。 (5)更大规模的FPGA和CPLD器件不断推出。 (6)基于EDA工具、用于ASIC设计的标准单元已涵盖大规模电子系统及复杂IP核模块(IP即Intellectual Property,即知识产权的简称,往往指一个公司出售给另一个公司的硬件设计包)。 (7)软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认和广泛的应用。 (8)SoC高效、低成本设计技术的成熟。 (9)系统级、行为验证级硬件描述语言,如SystemVerilog、SystemC等的出现,使复杂电子系统的设计,特别是验证趋于高效和简单。 1.2 EDA技术实现的目标 一般来说,利用EDA技术进行电子系统设计的最后目标是完成专用集成电路(ASIC)或印制电路板(PCB)的设计和实现,如图1-1所示。其中,PCB设计指的是电子系统的印制电路板设计,从电路原理图到PCB上元件的布局、布线、阻抗匹配、信号完整性分析及板级仿真,到最后的电路板机械加工文件生成,这些都需要相应的计算机EDA工具软件辅助设计者来完成,这仅是EDA技术应用的一个重要方面,本书限于篇幅不再展开。ASIC作为最终的物理平台,集中容纳了用户通过EDA技术将电子应用系统的既定功能和技术指标具体实现的硬件实体。 图1-1 EDA技术实现目标 一般而言,专用集成电路就是具有专门用途和特定功能的独立集成电路器件。根据这个定义,作为EDA技术最终实现目标的ASIC可以通过以下3种途径来完成。 1. 可编程逻辑器件FPGA/CPLD FPGA和CPLD是实现ASIC的主流器件,其特点是直接面向用户、具有极大的灵活性和通用性、使用方便、硬件测试和实现快捷、开发效率高、成本低、上市时间短、技术维护简单、工作可靠性好等。FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC和ASIC设计以及自动化设计与自动化实现最典型的诠释。由于FPGA和CPLD的开发工具、开发流程和使用方法与ASIC有类似之处,因此这类器件通常也被称为可编程专用IC或可编程ASIC。 2. 半定制或全定制ASIC 根据实现的工艺,基于EDA设计技术的半定制或全定制ASIC可统称为掩模(Mask)ASIC,或直接称之为ASIC。可编程ASIC与掩模ASIC相比,不同之处在于前者具有面向用户的灵活多样的可编程性。 掩模ASIC大致分为门阵列ASIC、标准单元ASIC和全定制ASIC。 (1)门阵列ASIC。门阵列芯片包括预定制的相连的PMOS和NMOS晶体管行。设计中,用户可以借助EDA工具将原理图或硬件描述语言模型映射为相应门阵列晶体管配置,创建一个指定金属互连路径文件,从而完成门阵列ASIC开发。由于有掩模的创建过程,门阵列有时也称掩模可编程门阵列(MPGA)。但是 MPGA与FPGA完全不同,它不是用户可编程的,也不属于可编程逻辑范畴,而是实际的ASIC;MPGA出现在FPGA之前,而FPGA技术源自MPGA。 (2)标准单元ASIC。目前大部分ASIC是使用库(Library)中不同大小的标准单元设计的,这类芯片一般称做基于单元的集成电路(Cell-Based Integrated Circuits,CBIC)。在设计者一级,库包括不同复杂性的逻辑元件,如SSI逻辑块、MSI逻辑块、数据通道模块、存储器、IP乃至系统级模块。库包含每个逻辑单元在硅片级的完整布局,使用者只需利用EDA软件工具与逻辑块描述打交道即可,完全不必关心深层次电路布局的细节。标准单元布局中,所有扩散、接触点、过孔、多晶通道及金属通道都已完全确定。当该单元用于设计时,通过EDA软件产生的网表文件将单元布局块“粘贴”到芯片布局之上的单元行上。标准单元ASIC设计与FPGA设计的开发流程相近。 (3)全定制芯片。全定制芯片中,在针对特定工艺建立的设计规则下,设计者对于电路的设计有完全的控制权,如线的间隔和晶体管大小的确定。该领域的一个例外是混合信号设计,使用通信电路的ASIC可以定制设计其模拟部分。 3. 混合ASIC 混合ASIC(不是指数模混合ASIC)主要指既具有面向用户的FPGA可编程功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如CPU、RAM、ROM、硬件加法器、乘法器、锁相环等。 1.3 硬件描述语言Verilog HDL 硬件描述语言(HDL)是EDA技术的重要组成部分,目前常用的HDL主要有VHDL、Verilog HDL、SystemVerilog和SystemC。其中,VHDL、Verilog HDL在目前的EDA设计中使用得最多,也得到几乎所有主流EDA工具的支持;而SystemVerilog和SystemC这两种HDL语言还处于完善过程中,主要加强了系统验证方面的功能。本书将重点介绍Verilog HDL的编程方法和使用技术。 Verilog HDL(简称Verilog)由Gateway Design Automation公司(简称GDA)的Phil Moorby在1983年创建,起初仅作为GDA公司的Verilog-XL仿真器的内部语言,用于数字逻辑的建模、仿真和验证。后来,出于商业目的,GDA公司对外发布了其第一个版本——Verilog-XL。出人意料的是,Verilog HDL一经推出,便大获成功,得到业界普遍认可,从而促使Verilog HDL快速地发展起来。1989年GDA公司被Cadence公司收购,Verilog语言也成为了Cadence公司的私有财产。1990年Cadence公司成立了OVI(Open Verilog International)组织,公开了Verilog语言,并由OVI负责促进Verilog语言的发展。在OVI的努力下,1995年IEEE制定了Verilog HDL的第一个国际标准——IEEE Std 1364—1995,即Verilog 1.0。 2001年,IEEE发布了Verilog HDL的第二个标准版本(Verilog 2.0),即IEEE Std 1364—2001,简称为Verilog-2001标准。由于Cadence公司在集成电路设计领域的影响力和Verilog的易用性,Verilog成为基层电路建模与设计中最流行的硬件描述语言。 Verilog的部分语法是参照C语言的语法设立的(但与C有着本质的区别),因此具有很多C语言的优点且不止于此。 ? 从形式表述上来看,Verilog代码简明扼要、使用灵活,且语法规定不是很严谨,很容易上手。 ? 在语言易读性、层次化和结构化设计方面,Verilog表现出了强大的生命力和应用潜力。 ? Verilog具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。 ? Verilog支持各种模式的设计方法:自顶向下、自底向上或混合方法。 ? 在面对当今许多电子产品生命周期缩短、需要多次重新设计以融入最新技术、改变工艺等方面,Verilog具有良好的适应性。 ? 使用Verilog进行电子系统设计的一个很大的优点是当设计逻辑功能时,设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力;当需要仿真验证时,可以很方便地从电路物理级、晶体管级、寄存器传输级乃至行为级等多个层次来进行验证。 1.4 其他常用硬件描述语言 前文提及,当前使用最多、应用最广的主流硬件描述语言除了Verilog,还有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成为硬件描述语言的业界标准之一。自IEEE公布了VHDL的标准版本之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL。此后VHDL在电子设计领域得到了广泛应用,并与Verilog一起逐步取代了其他的非标准硬件描述语言。 作为一种规范语言和建模语言,VHDL逐渐实现了标准化,并出现了一些支持该语言的行为仿真器。创建VHDL的最初目标是用于标准文档的建立和电路功能模拟,其基本想法是在高层次上描述系统和元件的行为;但到了20世纪90年代初,人们发现VHDL不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将VHDL源码自动地转换为文本方式表达的基本逻辑元件连接图,即网表文件。这种方法显然对于电路自动设计是一个极大的推进。很快,电子设计领域便出现了第一个软件设计工具,即VHDL逻辑综合器,它可以把标准VHDL的部分语句描述转换为具体电路实现的网表文件。 1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本VHDL,即IEEE 1076—1993。现在,VHDL与Verilog一样作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域已成为事实上的通用硬件描述语言。 VHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力。与Verilog相比,VHDL具有如下优势。 ? 语法比Verilog严谨,通过EDA工具自动语法检查,可以轻易地排除许多设计中的疏忽。 ? 具有很好的行为级描述能力和一定的系统级描述能力,而Verilog建模时,行为与系统级抽象及相关描述能力不及VHDL。 当然,相对于Verilog来说,VHDL也存在一些不足之处。 ? VHDL代码比较冗长,在相同逻辑功能描述时,Verilog的代码比VHDL少许多。 ? VHDL对数据类型匹配要求过于严格,使用时不是很方便,编程耗时较多,而Verilog支持自动类型转换,初学者容易入门。 ? 对于版图级、管子级这些较为底层的描述级别,VHDL几乎不支持,无法直接进行集成电路底层建模。 下面再来看看另外两种常用的HDL——SystemVerilog和SystemC。 ? SystemVerilog是由Accellera开发(Accellera的前身就是OVI)的一种新的硬件描述语言,其特点如下。 ? SystemVerilog在Verilog-2001的基础上做了扩展,将Verilog语言推向了系统级空间和验证级空间,极大地改进了高密度、基于IP的、总线敏感的芯片设计效率。 ? SystemVerilog主要定位于集成电路的实现和验证流程,并为系统级设计流程提供了强大的链接能力。 ? SystemVerilog改进了Verilog代码的生产率、可读性以及可重用性。 ? SystemVerilog提供了更简约的硬件描述,还为测试平台开发、随机约束的测试平台开发、覆盖驱动的验证以及基于断言的验证提供了广泛的支持。 提示:2005年,IEEE批准了SystemVerilog的语法标准,即IEEE P1800标准。 ? SystemC是C++语言的硬件描述扩展,由OSCI(Open System C Initiative)组织负责发展,主要用于ESL(电子系统级)建模与验证。SystemC并不是一种好的RTL语言(即可综合的、硬件可实现描述性质的语言),而是一种系统级建模语言。将SystemC和SystemVerilog组合起来,能够提供一套从ESL到RTL验证的完整解决方案。SystemC源代码可以使用任何标准C++编译环境进行编译,生成可执行文件;运行可执行文件,可生成VCD格式的波形文件。目前对SystemC的综合还不完善,但已有工具支持,可以通过工具先综合为Verilog HDL,再综合应用于FPGA、ASIC,或者使用系统结构综合工具直接综合。 1.5 HDL综合 顾名思义,综合(Synthesis)就是指把抽象的实体结合成单个或统一的实体,即把某些东西结合到一起,把设计抽象层次中的一种表述转化成另一种表述的过程。在电子设计领域中,综合的概念可以表示为“为了将以行为和功能层次表达的电子系统转换为低层次的、便于具体实现的模块而组合装配的过程”。 事实上设计过程中的每一步都可称为一个综合环节。设计过程通常从高层次的行为描述开始,以底层的结构甚至更低层次的描述结束,每个综合步骤都是上一层次的转换。 (1)从自然语言转换到Verilog语言算法表述,即自然语言综合。 (2)从算法表述转换到寄存器传输级(Register Transport Level,RTL)表述,即从行为域到结构域的综合,即行为综合。 (3)从RTL级表述转换到逻辑门(包括触发器)表述,即逻辑综合。 (4)从逻辑门表述转换到版图级表述(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。有了版图信息,就可以把芯片生产出来了;有了对应的配置文件,就可以使对应的FPGA变成具有专门功能的电路器件了。 显然,综合器就是能够自动将一种设计表述形式向另一种设计表述形式转换的计算机程序,或协助进行手工转换的程序。它可以将高层次的表述转化为低层次的表述,可以从行为域转化为结构域,可以将高一级抽象的电路描述(如算法级)转化为低一级的电路描述(如门级),并可以用某种特定的“技术”(如CMOS)实现。 对设计者而言有两种情况:一是在高抽象层次进行系统设计并利用综合工具将设计转化为低层次的表述;二是直接在低抽象层次上设计系统。这类似于一个程序员使用高级语言编程并用编译器将程序编译成机器代码和直接用机器代码进行编程。在前一种情况下,设计者可以将精力主要集中于系统级问题上,而不必关心低级结构设计的细节问题,因此将减少设计和编程所花费的时间和精力,并且减少错误的发生。 另一方面,尽管从表面上看,Verilog等硬件描述语言综合器和软件程序编译器都不过是一种“翻译器”,它们都能将高层次的设计表述转换为低层次的表述,但两者之间却存在着许多本质的区别,如图1-2所示。 (a)软件语言设计目标流程 (b)硬件语言设计目标流程 图1-2 编译器和综合的功能比较 编译器将软件程序翻译成基于某种特定CPU的机器代码,该代码仅限于这种CPU而不能移植,它并不代表硬件结构,更不能改变CPU的结构,只能被动地为其特定的硬件电路所利用。如果脱离了已有的硬件环境(CPU),机器代码将失去意义。此外,编译器作为一种软件而运行,除了某种单一目标器件,即CPU的硬件结构外,不需要任何与硬件相关的器件库和工艺库参与编译。因而,编译器的工作单纯得多,编译过程基本属于一种一一对应式的、机械转换式的“翻译”行为。 综合器则不同,同样是类似的软件代码(如Verilog程序),综合器转化的目标是底层的电路结构网表文件,这种满足原设计程序功能描述的电路结构不依赖于任何特定硬件环境,因此可以独立地存在,并能轻易地被移植到任何通用硬件环境中,如ASIC、FPGA等。换言之,电路网表代表了特定的且可独立存在、具有实际功能的硬件结构,因此具备了随时改变硬件结构的依据,综合的结果具有相对独立性。另一方面,综合器在将硬件描述语言表述的电路功能转化成具体的电路结构网表过程中,具有明显的能动性(例如状态机的优化),它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。这就是说,对于相同的Verilog表述,综合器可以用不同的电路结构实现相同的功能。 与编译器相比,综合器具有更复杂的工作环境,如图1-3所示。综合器在接收Verilog程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库的信息以及优化综合的诸多约束条件。一般来说,约束条件可以分为3种,即设计规则、时间约束、面积约束。通常时间约束的优先级高于面积约束。设计优化要求:当综合器把Verilog源码翻译成通用原理图时,将识别状态机、加法器、乘法器、多路选择器和寄存器等。这些运算功能根据Verilog源码中的符号(如加、减、乘、除),可以使用多种方法来实现。例如,加法的实现方案有多种,有的面积小,速度慢;有的速度快,面积大。Verilog行为描述强调的是电路的行为和功能,而不是电路如何实现。选择电路的实现方案正是综合器的任务,即由其负责选择一种能充分满足各项约束条件且成本最低的实现方案。现在的许多综合器还允许设计者指定在进行映射优化时综合器应付出多大的“努力”(“努力”一般可分为低、中、高3档)。 需要注意的是,Verilog(包括VHDL、SystemVerilog)方面的IEEE标准,主要指的是文档的表述、行为建模及其仿真,至于在电子线路的设计方面,Verilog(包括VHDL、SystemVerilog)并没有得到全面的标准化支持。这就是说,HDL综合器并不能支持标准Verilog的全集(全部语句程序),而只能支持其子集,即部分语句,并且不同的HDL综合器所支持的Verilog子集也不完全相同。这样一来,对于相同Verilog源代码,不同的HDL综合器可能综合出在结构和功能上并不完全相同的电路系统。对此,设计者应给予充分的注意。对于不同的综合结果,不应对综合器的特性贸然作出评价,而应在设计过程中尽可能全面地了解所用综合工具的基本特性。 1.6 基于HDL的自顶向下设计方法 传统的电子设计技术通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使其结构和功能满足高层系统的要求;接下来,依此流程逐步向上递推,直至完成整个目标系统的设计。 例如,对于一般的电子系统设计,使用自底向上的设计方法时,必须首先决定使用的器件类别和规格,如74系列的器件、某种RAM和ROM、某类CPU或单片机以及某些专用功能芯片等;然后是构成多个功能模块,如数据采集控制模块、信号处理模块、数据交换和接口模块等,直至最后利用它们完成整个系统的设计。 对于ASIC设计,则是根据系统的功能要求,首先从绘制硅片版图开始,逐级向上完成版图级、门级、RTL级、行为级、功能级,直至系统级的设计。在这个过程中,任何一级发生问题,通常都不得不返工重来。 自底向上设计方法的特点是必须首先关注并致力于解决系统最底层硬件的可获得性及其功能特性方面的诸多细节问题;在整个逐级设计和测试过程中,始终必须顾及具体目标器件的技术细节。在这个设计过程中的任一时刻,最底层目标器件的更换,或某些技术参数不满足总体要求,或缺货,或由于市场竞争的变化,临时提出降低系统成本、提高运行速度等不可预测的外部因素,都可能使前面的工作前功尽弃,一切从头再来。由此可见,在某些情况下,自底向上的设计方法比较低效、可靠性较差、费时费力且成本昂贵。 在电子设计领域,自顶向下的设计方法只有在EDA技术得到快速发展和成熟应用的今天才成为可能。自顶向下设计方法的有效应用必须基于功能强大的EDA工具,具备集系统描述、行为描述和结构描述功能为一体的硬件描述语言,以及先进的ASIC制造工艺和FPGA开发技术。目前自顶向下的设计方法已成为EDA技术的首选设计方法,是ASIC或FPGA开发的主要设计手段。 在EDA技术应用中,自顶向下的设计方法就是在整个设计流程中各设计环节逐步求精的过程。一个项目的设计过程涵盖了从自然语言说明到HDL的系统行为描述,从系统的分解、RTL模型的建立、门级模型的产生到最终的可以物理布线实现的底层电路,从高抽象级别到低抽象级别的完整设计周期。此外,后端设计还必须包括涉及硬件的物理结构实现方法和测试(仍然利用计算机完成)。 适用HDL进行自顶向下的设计,就是使用HDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。主系统及子系统最初的功能要求体现为可以被HDL仿真程序验证的可执行程序。由于综合工具可以将高级别的模型转化生成为门级模型,所以整个设计过程基本是由计算机自动完成的。人为介入的方式主要是根据仿真的结果和优化的指标,控制逻辑综合的方式和指向。因此,在设计周期中,要根据仿真的结果进行优化和升级,以及对模型进行及时的修改,以改进系统或子系统的功能、更正设计错误、提高目标系统的工作速度、减小面积耗用、降低功耗和成本等,或者启用新技术器件或新的IP核。在这些过程中,由于设计的下一步是基于当前的设计,即使发现问题或做新的修改而需从头开始设计,也不妨碍整体的设计效率。此外, HDL设计的可移植性、EDA平台的通用性以及与具体硬件结构的无关性,使得前期的设计可以容易地应用于新的设计项目,而且项目设计的周期可以显著缩短。因此,EDA设计方法十分强调将前一个HDL模型重用的方法。此外随着设计层次的降低,在低级别上使用高级别的测试包来测试模型也很重要,并行之有效。 自顶向下的设计方法使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组。这些小组可以工作在不同地点,甚至可以分属不同的单位,最后将不同的模块集成为最终的系统模型,并对其进行综合测试和评价。 自顶向下设计流程如图1-4所示,主要包括如下设计阶段。 图1-4 自顶向下的设计流程 (1)提出设计说明书。即用自然语言表达系统项目的功能特点和技术参数等。 (2)建立HDL行为模型。即将设计说明书转化为HDL行为模型。在这一项目的表达中,可以使用满足IEEE标准的Verilog/VHDL的所有语句而不必考虑可综合性。这一建模行为的目标是通过Verilog/VHDL仿真器对整个系统进行系统行为仿真和性能评估。在行为模型的建立过程中,如果最终的系统中包括目标ASIC或FPGA以外的电路器件,如RAM、ROM、接口器件或某种单片机,也同样能建立一个完整、统一的系统行为模型而进行整体仿真。这是因为可以根据这些外部器件的功能特性设计出Verilog/VHDL的仿真模型,然后将它们并入主系统的Verilog/VHDL模型中。事实上,现在有许多公司可提供各类流行器件的Verilog/VHDL模型,如8051单片机模型、PIC16C5X模型、80386模型等,利用这些模型可以将整个电路系统组装起来。有的Verilog/VHDL模型既可用来仿真,也可作为实际电路的一部分。例如,现有的PCI总线模型大多是既可仿真又可综合的。 (3)HDL行为仿真。这一阶段可以利用Verilog/VHDL仿真器(如ModelSim)对顶层系统的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。这一过程与最终实现的硬件没有任何关系,也不考虑硬件实现中的技术细节,测试结果主要是对系统纯功能行为的考察,其中许多Verilog/VHDL的语句表达主要是为了方便了解系统在各种条件下的功能特性,而不可能用真实的硬件来实现。 (4)HDL-RTL级建模。如上所述,Verilog/VHDL只有部分语句集合可用于硬件功能行为的建模,因此在这一阶段必须将Verilog/VHDL的行为模型表达为Verilog/VHDL行为代码(或称HDL-RTL级模型)。Verilog/VHDL行为代码是用Verilog/VHDL可综合子集中的语句完成的,即可以最终实现目标器件的描述。因此,利用Verilog/VHDL可综合的语句同样可以对电路方便地进行行为描述,而目前许多主流的HDL综合器都能将其综合成RTL级,乃至门级模型。从步骤(3)到步骤(4),人工介入的内容比较多,设计者需要给予更多的关注。 (5)前端功能仿真。在这一阶段主要是对HDL-RTL级模型进行仿真,称为功能仿真。尽管HDL-RTL级模型是可综合的,但对它的功能仿真仍然与硬件无关,仿真结果表达的是可综合模型的逻辑功能。 (6)逻辑综合。使用逻辑综合工具将Verilog/VHDL行为级描述转化为结构化的门级电路。在ASIC设计中,门级电路可以由ASIC库中的基本单元组成。 (7)测试向量生成。这一阶段主要是针对ASIC设计。FPGA设计的时序测试文件主要产生于适配器;而针对ASIC的测试向量文件是综合器结合含有版图硬件特性的工艺库后产生的,用于对ASIC的功能测试。 (8)功能仿真。利用测试向量对ASIC的设计系统和子系统的功能进行仿真。 (9)结构综合。主要是将综合产生的逻辑连接关系网表文件,结合具体的目标硬件环境进行标准单元调用、布局、布线和满足约束条件的结构优化配置,即结构综合。 (10)门级时序仿真。在这一级中将使用门级仿真器或仍然使用HDL仿真器(因为结构综合后能同步生成Verilog/VHDL格式的时序仿真文件)进行门级时序仿真,在计算机上了解更接近硬件目标器件工作的功能时序。针对ASIC设计,这被称为布局后仿真。在这一步,将带有从布局布线得到的精确时序信息映射到门级电路重新进行仿真,以检查电路时序,并对电路功能进行最后检查。这些仿真的成功完成称为ASIC sign off。接下去的工作就可以将设计提供给硅铸造生产工序了。 (11)硬件测试。这是对最后完成的硬件系统进行检查和测试。 1.7 EDA技术的优势 在传统的数字电子系统或IC设计中,手工设计占有较大的比例。手工设计一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试。手工设计方法的缺点是: (1)复杂电路的设计、调试十分困难。 (2)由于无法进行硬件系统仿真,如果某一过程存在错误,查找和修改十分不便。 (3)设计过程中产生大量文档,不易管理。 (4)对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。 (5)只有在设计出样机或生产出芯片后才能进行实测。 相比之下,EDA技术有着很大的不同。 (1)用HDL对数字系统进行抽象的行为与功能描述以及具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,大大降低设计成本,缩短设计周期。 (2)EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持,如逻辑仿真时的模拟库、逻辑综合时的综合库、版图综合时的版图库、测试综合时的测试库等。这些库都是EDA公司与半导体生产厂商紧密合作、共同开发的。 (3)某些HDL也是文档型的语言(如VHDL),极大地简化了设计文档的管理。 (4)EDA技术中最为瞩目的功能,即最具现代电子设计技术特征的功能是日益强大的逻辑设计仿真测试技术。EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后,还能对系统上的目标器件进行所谓的“边界扫描测试”。这一切都极大地提高了大规模系统电子设计的自动化程度。 (5)无论传统的应用电子系统设计得如何完美,使用了多么先进的功能器件,都掩盖不了一个无情的事实,即该系统对于设计者来说,没有任何自主知识产权可言,因为系统中的关键性器件往往并非出自设计者之手,这将导致该系统的应用直接受到限制。基于EDA技术的设计则不同,使用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权,再无受制于人之虞。 (6)传统的电子设计方法至今没有任何标准规范加以约束,因此设计效率低、系统性能差、开发成本高、市场竞争力小。而EDA技术的设计语言是标准化的,不会由于设计对象的不同而改变;其开发工具是规范化的,EDA软件平台支持任何标准化的设计语言;其设计成果是通用性的,IP核具有规范的接口协议;具有良好的可移植与可测试性,为系统开发提供了可靠的保证。 (7)从电子设计方法学来看,EDA技术最大的优势就是能将所有设计环节纳入统一的自顶向下的设计方案中。 (8)EDA不但在整个设计流程上充分利用计算机的自动设计能力、在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试。而传统的设计方法,如单片机仿真器只能在最后完成的系统上进行局部的且仅限于软件的仿真调试,在整个设计的中间过程是无能为力的;至于硬件系统测试,由于现在的许多系统主板不但层数多,而且许多器件都是BGA(Ball-Grid Array)封装,所有引脚都在芯片的底面,焊接后普通的仪器仪表无法接触到所需要的信号点,因此无法测试。 1.8 EDA的发展趋势 随着市场需求的增长、集成工艺水平及计算机自动设计技术的不断提高,单片系统(或称系统集成芯片)成为IC设计的发展方向。这一发展趋势具体表现在如下几个方面。 (1)超大规模集成电路的集成度和工艺水平不断提高,深亚微米(Deep-Submicron)工艺(如65nm、45nm)已经走向成熟,在一个芯片上完成系统级的集成已成为可能。 (2)由于工艺线宽的不断减小,在半导体材料上的许多寄生效应已经不能简单地被忽略。这就对EDA工具提出了更高的要求,同时也使得IC生产线的投资更为巨大。这一变化使得可编程逻辑器件开始进入传统的ASIC市场。 (3)市场对电子产品提出了更高的要求,如必须降低电子系统的成本、减小系统的体积等,从而对系统的集成度不断提出更高的要求。同时,设计的速度也成为一个产品能否成功的关键因素,从而促使EDA工具和IP核应用更为广泛。 (4)高性能的EDA工具得到长足的发展,其自动化和智能化程度不断提高,为嵌入式系统设计提供了功能强大的开发环境。 (5)计算机硬件平台性能大幅度提高,为复杂的SoC设计提供了物理基础。 由于以往的HDL语言只能提供行为级或功能级的描述,而无法完成对复杂的系统级的抽象描述,人们正尝试开发一些新的系统级设计语言来完成这一工作。目前已开发出一些更趋于电路系统行为级的硬件描述语言,如SystemVerilog、SystemC及系统级混合仿真工具,可以在同一个开发平台上完成高级语言(如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制造商竞争的产物,对于用户来说,意味着有了更多的选择。 习 题 1-1 EDA技术与ASIC设计及FPGA开发有什么关系? 1-2 与软件描述语言相比,Verilog有什么特点? 1-3 什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么? 1-4 在EDA技术中,自顶向下设计方法的重要意义是什么? 1-5 IP在EDA技术的应用和发展中的意义是什么? 1-6 列举现在常用的HDL种类,试比较其各自的特点和应用范围。