2017年电子设计自动化技术及其发展
综合器则不同,同样是类似的软件代码(如VHDL程序),综合器转化的目标是底层的电路结构网表文件,这种满足原设计程序功能描述的电路结构不依赖于任何特定硬件环境,因此可以独立地存在,并能轻易地被移植到任何通用硬件环境中,如ASIC、FPGA等。换言之,电路网表代表了特定的硬件结构,因此具备了随时改变硬件结构的依据。综合的结果具有相对独立性。另一方面,综合器在将硬件描述语言表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的形成。这就是说,对于相同的VHDL表述,综合器可以用不同的电路结构实现相同的功能。
如图1-3所示,与编译器相比,综合器具有更复杂的工作环境,综合器在接受VHDL程序并准备对其综合前,必须获得最终实现设计电路硬件特征相关的工艺库的信息,以及获得优化综合的诸多约束条件。一般地,约束条件可以分为3种,即设计规则、时间约束、面积约束。通常,时间约束的优先级高于面积约束。设计优化要求,当综合器把VHDL源码翻译成通用原理图时,将识别状态机、加法器、乘法器、多路选择器和寄存器等。这些运算功能根据VHDL源码中的符号,如加减乘除。每种运算都可用多种方法实现,如加法可实现方案有多种,有的面积小,速度慢;有的速度快,面积大。VHDL行为描述强调的是电路的行为和功能,而不是电路如何实现。选择电路的实现方案正是综合器的任务。综合器选择一种能充分满足各项约束条件且成本最低的实现方案。现在的许多综合器还允许设计者指定在做映射优化时综合器应付出多大“努力”;“努力”一般可分为低、中、高三档。
电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客 电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客
图1-2 编译器和综合功能比较 图1-3 VHDL综合器运行流程
需要注意的是,VHDL(和Verilog)方面的IEEE标准主要指的是文档的表述、行为建模及其仿真,至于在电子线路的设计方面,VHDL(和Verilog)并没有得到全面的支持和标准化。这就是说,VHDL综合器并不能支持标准VHDL的全集(全部语句程序),而只能支持其子集,即部分语句,并且不同的VHDL综合器所支持的VHDL子集也不完全相同。这样一来,对于相同VHDL源代码,不同的VHDL综合器可能综合出在结构和功能上并不完全相同的电路系统。对此,设计者应给予充分的注意。
因此,对于不同的综合结果,不应对综合器的特性贸然作出评价,同时在设计过程中,必须尽可能全面了解所使用的综合工具的基本特性。
1.3.3 自顶向下设计方法
传统的电子设计流程通常是自底向上的,即首先确定构成系统的最底层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上递推,直至完成整个目标系统的设计。例如,对于一般电子系统的设计,使用自底向上的设计方法,必须首先决定使用的器件类别和规格,如74系列的器件、某种RAM和ROM、某类CPU或单片机以及某些专用功能芯片等;然后是构成多个功能模块,如数据采集控制模块、信号处理模块、数据交换和接口模块等,直至最后利用它们完成整个系统的设计。
对于ASIC设计,则是根据系统的功能要求,首先从绘制硅片版图开始,逐级向上完成版图级、门级、RTL级、行为级、功能级,直至系统级的设计。在这个过程中,任何一级发生问题,通常都不得不返工重来。
自底向上的设计方法的特点是必须首先关注并致力于解决系统最底层硬件的可获得性,以及它们的功能特性方面的诸多细节问题;在整个逐级设计和测试过程中,始终必须顾及具体目标器件的技术细节。在这个设计过程中的任一时刻,最底层目标器件的更换,或某些技术参数不满足总体要求,或缺货,或由于市场竞争的变化,临时提出降低系统成本,提高运行速度等不可预测的外部因素,都将可能使前面的工作前功尽弃。
由此可见,在某些情况下,自底向上的设计方法是一种低效、低可靠性、费时费力,且成本高昂的设计方法。
在电子设计领域,自顶向下设计方法只有在EDA技术得到快速发展和成熟应用的今天才成为可能。自顶向下设计方法的有效应用必须基于功能强大的EDA工具、具备集系统描述、行为描述和结构描述功能为一体的VHDL硬件描述语言,以及先进的ASIC制造工艺和FPGA开发技术。当今,自顶向下的设计方法已经是EDA技术的首选设计方法,是ASIC或FPGA开发的主要设计手段。
在EDA技术应用中,自顶向下的设计方法就是在整个设计流程中各设计环节逐步求精的过程。一个项目的设计过程包括从自然语言说明到VHDL的系统行为描述、系统的分解、RTL模型的建立、门级模型产生,到最终的可以物理布线实现的底层电路,就是从高抽象级别到低抽象级别的整个设计周期。后端设计还必须包括涉及硬件的物理结构实现方法和测试(仍然利用计算机完成)。
应用VHDL进行自顶向下的设计,就是使用VHDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。主系统及子系统最初的功能要求在VHDL里体现为可以被VHDL仿真程序验证的可执行程序。由于综合工具可以将高级别的模型转化为门级模型,所以整个设计过程基本是由计算机自动完成的。人为介入的方式主要是根据仿真的结果和优化的指标来控制逻辑综合的方式和指向。因此,在设计周期中,要根据仿真的结果进行优化和升级,以及对模型及时的修改,以改进系统或子系统的功能,更正设计错误,提高目标系统的工作速度,减小面积耗用,降低功耗和成本等。或者启用新技术器件或新的IP核。在这些过程中,由于设计的下一步是基于当前的设计,即使发现问题或作新的修改而需从头开始设计,也不妨碍整体的设计效率。此外,VHDL优秀的可移植性、EDA平台的通用性以及与具体硬件结构的无关性,使得前期的设计可以容易地应用于新的设计项目,则项目设计的周期可以显著缩短。因此,EDA设计方法里十分强调将前一个VHDL模型重用的方法。此外随着设计层次的降低,在低级别上使用高级别的测试包来测试模型也很重要并有效。
自顶而下的设计方法能使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组。这些小组可以工作在不同地点,甚至可以分属不同的单位,最后将不同的模块集成为最终的系统模型,并对其进行综合测试和评估。
1.3.4 EDA技术设计流程
图1-4给出了自顶向下设计流程的框图说明,它包括以下设计阶段:
(1)提出设计说明书,即用自然语言表达系统项目的功能特点和技术参数等。
(2)建立VHDL行为模型,这一步是将设计说明书转化为VHDL行为模型。在这一项目的表达中,可以使用满足IEEE标准的VHDL的所有语句而不必考虑可综合性。这一建模行为的目标是通过VHDL仿真器对整个系统进行系统行为仿真和性能评估。在行为模型的建立过程中,如果最终的系统中包括目标ASIC或FPGA以外的电路器件,如RAM、ROM、接口器件或某种单片机,也同样能建立一个完整统一的系统行为模型而进行整体仿真。这是因为可以根据这些外部器件的功能特性设计出VHDL的仿真模型,然后将它们并入主系统的VHDL模型中。事实上,现在有许多公司可提供各类流行器件的VHDL模型,如8051单片机模型、PIC16C5X模型、80386模型等。利用这些模型可以将整个电路系统组装起来。有的VHDL模型既可用来仿真,也可作为实际电路的一部分。例如,现有的PCI总线模型大多是既可仿真又可综合的。
(3)VHDL行为仿真。这一阶段可以利用VHDL仿真器(如ModelSim)对顶层系统的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。这一过程与最终实现的硬件没有任何关系,也不考虑硬件实现中的技术细节,测试结果主要是对系统纯功能行为的考察,其中许多VHDL的语句表达主要为了方便了解系统在各种条件下的功能特性,而不可能用真实的硬件来实现。
(4)VHDL-RTL级建模。如上所述,VHDL只有部分语句集合可用于硬件功能行为的建模,因此在这一阶段,必须将VHDL的行为模型表达为VHDL行为代码(或称VHDL-RTL级模型)。这里应该注意的是,VHDL行为代码是用VHDL中可综合子集中的语句完成的,即可以最终实现目标器件的描述。因为利用VHDL的可综合的语句同样可以对电路方便地进行行为描述,而目前许多主流的VHDL综合器都能将其综合成RTL级,乃至门级模型。从第3步到第4步,人工介入的内容比较多,设计者需要给予更多的关注。
(5)前端功能仿真。在这一阶段对VHDL-RTL级模型进行仿真,称为功能仿真。尽管VHDL-RTL级模型是可综合的,但对它的功能仿真仍然与硬件无关,仿真结果表达的是可综合模型的逻辑功能。
(6)逻辑综合。使用逻辑综合工具将VHDL行为级描述转化为结构化的门级电路。在ASIC设计中,门级电路可以由ASIC库中的基本单元组成。
(7)测试向量生成。这一阶段主要是针对ASIC设计的。FPGA设计的时序测试文件主要产生于适配器。对ASIC的测试向量文件是综合器结合含有版图硬件特性的工艺库后产生的,用于对ASIC的功能测试。
(8)功能仿真。利用获得的测试向量对ASIC的设计系统和子系统的功能进行仿真。
(9)结构综合。主要将综合产生的表达逻辑连接关系的网表文件,结合具体的目标硬件环境进行标准单元调用、布局、布线和满足约束条件的结构优化配置,即结构综合。
(10)门级时序仿真。在这一级中将使用门级仿真器或仍然使用VHDL仿真器(因为结构综合后能同步生成VHDL格式的时序仿真文件)进行门级时序仿真,在计算机上了解更接近硬件目标器件工作的功能时序。对于ASIC设计,被称为布局后仿真。在这一步,将带有从布局布线得到的精确时序信息映射到门级电路重新进行仿真,以检查电路时序,并对电路功能进行最后检查。这些仿真的成功完成称为ASIC sign off。接下去的工作就可以将设计提供给硅铸造生产工序了。
(11)硬件测试。这是对最后完成的硬件系统(如ASIC或FPGA)进行检查和测试。
与其他的硬件描述语言相比,VHDL具有较强的行为仿真级与综合级的建模功能,这种能远离具体硬件,基于行为描述方式的硬件描述语言恰好满足典型的自顶向下设计方法,因而能顺应EDA技术发展的趋势,解决现代电子设计应用中出现的各类问题。
电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客
图1-4 自顶向下的设计流程
1.4 EDA技术的优势
在传统的数字电子系统或IC设计中,手工设计占了较大的比例。一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试。手工设计方法主要有以下缺点。
● 复杂电路的设计、调试十分困难。
● 由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便。
● 设计过程中产生大量文档,不易管理。
● 对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。
● 只有在设计出样机或生产出芯片后才能进行实测。
相比之下,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.5 面向FPGA的EDA开发流程
完整地了解利用EDA技术进行设计开发的流程对于正确地选择和使用EDA软件,优化设计项目,提高设计效率十分有益。一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。
1.5.1 设计输入
图1-5所示是基于EDA软件的FPGA开发流程框图,以下将分别介绍各设计模块的功能特点。对于目前流行的用于FPGA开发的EDA软件,图1-5所示的设计流程具有一般性。
电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客
图1-5 FPGA的EDA开发流程
将电路系统以一定的表达方式输入计算机,是在EDA软件平台上对FPGA/CPLD开发的最初步骤。通常,使用EDA工具的设计输入可分为两种类型。
1.图形输入
图形输入通常包括原理图输入、状态图输入和波形图输入等方法。
状态图输入方法就是根据电路的控制条件和不同的转换方式,用绘图的方法,在EDA工具的状态图编辑器上绘出状态图,然后由EDA编译器和综合器将此状态变化流程图形编译综合成电路网表。
波形图输入方法则是将待设计的电路看成是一个黑盒子,只需告诉EDA工具该黑盒子电路的输入和输出时序波形图,EDA工具即能据此完成黑盒子电路的设计。
原理图输入方法是一种类似于传统电子设计方法的原理图编辑输入方式,即在EDA软件的图形编辑界面上绘制能完成特定功能的电路原理图。原理图由逻辑器件(符号)和连接线构成,图中的逻辑器件可以是EDA软件库中预制的功能模块,如与门、非门、或门、触发器以及各种含74系列器件功能的宏功能块,甚至还有一些类似于IP的功能块。
用原理图表达的输入方法的优点是显而易见的,如设计者进行电子线路设计不需要增加新的诸如HDL等的相关知识;设计过程形象直观,适用于初学或教学演示;对于较小的电路模型,其结构与实际电路十分接近,设计者易于把握电路全局;由于设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用,节省面积。
然而,使用原理图输入的设计方法的缺点同样是十分明显的,如由于图形设计方式并没有得到标准化,不同的EDA软件中的图形处理工具对图形的设计规则、存档格式和图形编译方式都不同,因此图形文件兼容性差,难以交换和管理;随着电路设计规模的扩大,原理图输入描述方式必然引起一系列难以克服的困难,如电路功能原理的易读性下降,错误排查困难,整体调整和结构升级困难。例如,将一个4位的单片机设计升级为8位单片机几乎难以在短期内准确无误地实现;由于图形文件的不兼容性,性能优秀的电路模块移植和再利用十分困难;由于在原理图中已确定了设计系统的基本电路结构和元件,留给综合器和适配器的优化选择的空间已十分有限,因此难以实现用户所希望的面积、速度以及不同风格的综合优化,显然,原理图的设计方法明显偏离了电子设计自动化最本质的涵义;在设计中,由于必须直接面对硬件模块的选用,因此行为模型的建立将无从谈起,从而无法实现真实意义上的自顶向下的设计方案。
2.硬件描述语言文本输入
这种方式与传统的计算机软件语言编辑输入基本一致,就是将使用了某种硬件描述语言(HDL)的电路设计文本,如VHDL或Verilog的源程序,进行编辑输入。
可以说,应用HDL的文本输入方法克服了上述原理图输入法存在的所有弊端,为EDA技术的应用和发展打开了一个广阔的天地。
1.5.2 HDL综合
一般地,综合是仅对应于HDL而言的。利用HDL综合器对设计进行综合是十分重要的一步,因为综合过程将把软件设计的HDL描述与硬件结构挂钩,是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。综合就是将电路的高级语言(如行为描述)转换成低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序。
当输入的HDL文件在EDA工具中检测无误后,首先面临的是逻辑综合,因此要求HDL源文件中的语句都是可综合的。
在综合之后,HDL综合器一般都可以生成一种或多种文件格式网表文件,如有EDIF、VHDL、Verilog等标准格式,在这种网表文件中用各自的格式描述电路的结构。如在VHDL网表文件采用VHDL的语法,用结构描述的风格重新诠释综合后的电路结构。
整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件。由此可见,综合器工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相应的映射关系。如果把综合理解为映射过程,那么显然这种映射不是惟一的,并且综合的优化也不是单纯的或一个方向的。为达到速度、面积、性能的要求,往往需要对综合加以约束,称为综合约束。
1.5.3 布线布局(适配)
适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、Jam格式的文件。适配所选定的目标器件(FPGA/CPLD芯片)必须属于原综合器指定的目标器件系列。通常,EDA软件中的综合器可由专业的第三方EDA公司提供,而适配器则需由FPGA/CPLD供应商提供。因为适配器的适配对象直接与器件的结构细节相对应。
逻辑综合通过后必须利用适配器将综合后网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、逻辑布局布线操作。适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时产生可用于编程的文件。
1.5.4 仿真
在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试,就是所谓的仿真。
仿真就是让计算机根据一定的算法和一定的仿真库对EDA设计进行模拟,以验证设计,排除错误。仿真是在EDA设计过程中的重要步骤。图1-5所示的时序与功能门级仿真通常由PLD公司的EDA开发工具直接提供(当然也可以选用第三方的专业仿真工具),它可以完成两种不同级别的仿真测试。
(1)时序仿真。就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。但时序仿真的仿真文件必须来自针对具体器件的适配器。综合后所得的EDIF等网表文件通常作为FPGA适配器的输入文件,产生的仿真网表文件中包含了精确的硬件延迟信息。
(2)功能仿真。它是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程,仿真过程不涉及任何具体器件的硬件特性。不经历适配阶段,在设计项目编辑编译(或综合)后即可进入门级仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求。对于规模比较大的设计项目,综合与适配在计算机上的耗时是十分可观的,如果每一次修改后的模拟都必须进行时序仿真,显然会极大地降低开发效率。因此,通常的做法是,首先进行功能仿真,待确认设计文件所表达的功能满足设计者原有意图时,即逻辑功能满足要求后,再进行综合、适配和时序仿真,以便把握设计项目在硬件条件下的运行情况。
1.5.5 下载和硬件测试
把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD进行下载,以便进行硬件调试和验证(Hardware Debugging)。
通常,将对CPLD的下载称为编程(Program),对FPGA中的SRAM进行直接下载的方式称为配置(Configure),但对于反熔丝结构和Flash结构的FPGA的下载和对FPGA的专用配置ROM的下载仍称为编程。
FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。通常的分类方法是:
(1)以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。
(2)以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K、ACEX1K或Cyclone系列等。
当然也有从下载方式上分的。有关FPGA/CPLD下载的详细情况将在第2章中介绍。
最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。
1.6 专用集成电路设计流程
专用集成电路ASIC(Application Specific Integrated Circuits)是相对于通用集成电路而言的,ASIC主要指用于某一专门用途的集成电路器件。ASIC分类大致如图1-6所示,分为数字ASIC、模拟ASIC和数模混合ASIC。
1.6.1 专用集成电路ASIC设计方法
对于数字ASIC,其设计方法有多种。按版图结构及制造方法分,有半定制(Semi- custom)和全定制(Full-custom)两种实现方法,如图1-7所示。
ASIC的全定制方法是一种基于晶体管级的,手工设计版图的制造方法。设计者需要使用全定制版图设计工具来完成,设计者必须考虑晶体管版图的尺寸、位置、互连线等技术细节,并据此确定整个电路的布局布线,以使设计的芯片的性能、面积、功耗、成本达到最优。显然,在全定制设计中,人工参与的工作量大,设计周期长,而且容易出错。
电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客 电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客
图1-6 ASIC分类 图1-7 ASIC实现方法
然而利用全定制方法设计的电路,面积利用率最高,性能较好,功耗较低,有利于降低设计成本,提高芯片的集成度和工作速度,以及降低功耗。在通用中小规模集成电路设计、模拟集成电路,包括射频级集成器件的设计,以及有特殊性能要求和功耗要求的电路或处理器中的特殊功能模块电路的设计中被广泛采用。
ASIC的半定制法是一种约束性设计方式,约束的目的是简化设计,缩短设计周期,降低设计成本,提高设计正确率。半定制法按逻辑实现的方式不同,可再分为门阵列法、标准单元法和可编程逻辑器件法。
门阵列(Gate Array)法是较早使用的一种ASIC设计方法,又称为母片(Master Slice)法。需预先设计和制造好各种规模的母片,其内部成行成列,并等间距地排列着基本单元的阵列。除金属连线及引线孔以外的各层版图图形均固定不变,只剩下一层或两层金属铝连线及孔的掩膜需要根据用户电路的不同而定制。每个基本单元是以三对或五对晶体管组成,基本单元的高度和宽度都是相等的,并按行排列。设计人员只需要设计到电路一级,将电路的网表文件交给IC厂家即可。IC厂家根据网表文件描述的电路连接关系,完成母片上电路单元的布局及单元间的连线,然后对这部分金属线及引线孔的图形进行制版和流片。
这种设计方式涉及的工艺少、模式规范、设计自动化程度高、设计周期短、造价低,且适合于小批量的ASIC设计。所有这些都有赖于事先制备母片及库单元,并经过验证。门阵列法的缺点是芯片面积利用率低,灵活性差,对设计限制得过多。
标准单元(Standard Cell)法必须预建完善的版图单元库,库中包括以物理版图级表达的各种电路元件和电路模块“标准单元”,可供用户调用以设计不同的芯片。这些单元的逻辑功能、电性能及几何设计规则等都已经过分析和验证。与门阵列库单元不同的是,标准单元的物理版图将从最低层至最高层的各层版图设计图形都包括在内。在设计布图时,从单元库中调出标准单元按行排列,行与行之间留有布线通道,同行或相邻行的单元相连可通过单元行的上、下通道完成。隔行单元之间的垂直方向互连则必须借用事先预留在“标准单元”内部的走线道(feed-through)或在两单元间设置的“走线道单元”(feed-through cell)或“空单元”(empty cell)来完成连接。标准单元法设计ASIC的优点是:
(1)比门阵列法具有更加灵活的布图方式。
(2)“标准单元”预先存在单元库中,可以极大地提高设计效率。
(3)可以从根本上解决布通率问题,达到100%的布通率。
(4)可以使设计者更多地从设计项目的高层次关注电路的优化和性能问题。
(5)标准单元设计模式自动化程度高、设计周期短、设计效率高,十分适合利用功能强大的EDA工具进行ASIC的设计。
因此标准单元法是目前ASIC设计中应用最广泛的设计方法之一。标准单元法还有一个重要的优势,即它与可编程逻辑器件法的应用有相似点,它们都是建立在标准单元库的基础之上的,因此从FPGA/CPLD设计向使用标准单元法设计的ASIC设计迁移是十分方便的。利用这种设计模式可以很好地解决直接进行ASIC设计中代价高昂的功能验证问题和快速的样品评估问题。
标准单元法存在的问题是,当工艺更新之后,标准单元库要随之更新,这是一项十分繁重的工作。为了解决人工设计单元库费时费力的问题,目前几乎所有在市场上销售的IC CAD系统,如Synopsys、Cadence、Mentor等都含有标准单元自动设计工具。此外,设计重用(Design Reuse)技术也可用于解决单元库的更新问题。门阵列法或标准单元法设计ASIC共存的缺点是无法避免冗杂繁复的IC制造后向流程,而且与IC设计工艺紧密相关,最终的设计也需要集成电路制造厂家来完成,一旦设计有误,将导致巨大的损失。另外还有设计周期长、基础投入大、更新换代难等方面的缺陷。
可编程逻辑器件法是用可编程逻辑器件设计用户定制的数字电路系统。可编程逻辑器件芯片实质上是门阵列及标准单元设计技术的延伸和发展。可编程逻辑器件是一种半定制的逻辑芯片,但与门阵列法、标准单元法不同,芯片内的硬件资源和连线资源是由厂家预先制定好的,可以方便地通过编程下载获得重新配置。这样,用户就可以借助EDA软件和编程器在实验室或车间中自行进行设计、编程或电路更新。而且如果发现错误,则可以随时更改,完全不必关心器件实现的具体工艺。
用可编程逻辑器件法设计ASIC(或称可编程ASIC),设计效率大为提高、上市的时间大为缩短。当然,这种用可编程逻辑器件直接实现的所谓ASIC的性能、速度和单位成本上对于全定制或标准单元法设计的ASIC都不具备竞争性。此外,也不可能用可编程ASIC去取代通用产品,如CPU、单片机、存储器等的应用。
目前,为了降低单位成本,可以在用可编程逻辑器件实现设计后,用特殊的方法转成ASIC电路,如Altera的部分FPGA器件在设计成功后可以通过HardCopy技术转成对应的门阵列ASIC产品。
1.6.2 一般设计的流程
一般的ASIC从设计到制造,需要经过若干步骤,如图1-8所示。
电子设计自动化技术及其发展 - Ryan - liyongfeng1111的博客
图1-8 ASIC设计流程
(1)系统规格说明(System Specification)。分析并确定整个系统的功能,要求达到的性能、物理尺寸,确定采用何种制造工艺、设计周期和设计费用。建立系统的行为模型,进行可行性验证。
(2)系统划分(System Division)。将系统分割成各个功能子模块,给出子模块之间信号连接关系。验证各个功能块的行为模型,确定系统的关键时序。
(3)逻辑设计与综合(Logic Design and Synthesis)。将划分的各个子模块用文本(网表或硬件描述语言)、原理图等进行具体逻辑描述。对于硬件描述语言描述的设计模块需要用综合器进行综合获得具体的电路网表文件,对于原理图等描述方式描述的设计模块经简单编译后得到逻辑网表文件。
(4)综合后仿真(Simulate after Synthesis)。从上一步得到网表文件,进行仿真验证。
(5)版图设计(Layout Design)。版图设计是将逻辑设计中每一个逻辑元件、电阻、电容等以及它们之间的连线转换成集成电路制造所需要的版图信息。可手工或自动进行版图规划(Floorplanning)、布局(Placement)、布线(Routing)。这一步由于涉及逻辑到物理实现的映射,又称物理设计(Physical Design)。
(6)版图验证(Layout Verification)。版图设计完成以后进行版图验证,主要包括版图原理图比对(LVS)、设计规则检查(DRC)和电气规则检查(ERC)。在手工版图设计中,这是非常重要的一步。
(7)参数提取与后仿真。验证完毕,进行版图的电路网表提取(NE),参数提取(PE),把提取出的参数反注(Back-Annotate)至网表文件,进行最后一步仿真验证工作。