1.3 EDA设计的目标和流程
EDA技术的范畴应包括电子工程师进行产品开发的全过程,以及电子产品生产的全过程中期望由计算机提供的各种辅助工作。从一个角度来看,EDA技术可粗略分为系统级、电路级和物理实现级三个层次的辅助设计过程;从另一个角度来看,EDA技术应包括电子电路设计的各个领域,即从低频电路到高频电路、从线性电路到非线性电路、从模拟电路到数字电路、从分立电路到集成电路的全部设计过程。EDA技术的范畴如图1.3所示。
图1.3 EDA技术的范畴
1.3.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技术所必须支持的方法。不同学科的混合设计方法(Mixed-discipline)主要指电子技术与非电学科技术的混合设计方法;不同模式的混合方法(Mixed-mode)主要指模拟电路与数字电路的混合,模拟电路与DSP技术的混合,电路级与器件级的混合等;不同层次的混合方法(Multi-level)主要指逻辑设计中行为级、寄存器级、门级和开关级的混合设计方法。目前在各种应用领域,如数字电路、模拟电路、DSP专用集成电路、多芯片模块(MCM,Multi-Chip Module)及印制电路系统的设计都需要采用各种混合设计方法。
1.3.2 EDA设计流程
利用 EDA 技术进行电路设计的大部分工作是在 EDA 软件平台上进行的。一个典型的EDA 设计流程主要包括设计准备、设计输入、设计处理、器件编程和设计验证等5个基本步骤,如图1.4所示。
图1.4 典型的EDA设计流程
设计输入有多种方式,包括采用硬件描述语言(如AHDL、VHDL和Verilog HDL等)进行设计的文本输入方式、图形输入方式和波形输入方式,或者采用文本、图形两者混合的设计输入方式,也可以采用“自顶向下”的层次结构设计方法,将多个输入文件合并成一个设计文件等。
设计处理是EDA设计中的核心环节。在设计处理阶段,编译软件将对设计输入文件进行逻辑化简、综合和优化,并适当地用一片或多片器件自动地进行适配,最后产生编程用的编程文件。设计处理主要包括设计编译和检查、逻辑优化和综合、适配和分割、布局和布线、生成编程数据文件等过程。
设计验证过程包括功能仿真和时序仿真,这两项工作是在设计处理过程中同时进行的。功能仿真是在设计输入完成以后,选择具体器件进行编译之前进行的逻辑功能验证,因此又称为前仿真。此时的仿真没有延时信息或者只有由系统添加的微小标准延时,这对于初步的功能检测非常方便。仿真前,先要利用波形编辑器或硬件描述语言等建立波形文件或测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中可以观察到各个节点信号变化,若发现错误,则返回设计输入方式,修改逻辑设计。
时序仿真是在选择了具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为后仿真或时延仿真。由于不同器件的内部延时不一样,不同的布局、布线方案也会给延时造成不同的影响,因此在设计处理以后,对系统的各模块进行时序仿真、分析其时序关系、估计设计的性能,以及检查和消除竞争冒险等都是非常必要的。
编程是将设计处理中产生的编程数据文件通过软件放到具体的可编程逻辑器件中去。对于CPLD器件来说就是将熔丝图JED文件下载(DOWN)到CPLD器件中去,对FPGA器件来说就是将位流数据文件配置到FPGA器件中去。
设计验证可以在EDA硬件开发平台上进行。EDA硬件开发平台的核心是一片可编程逻辑器件FPGA或CPLD,再附加一些输入/输出设备,如按键、数码显示器、指示灯、喇叭等,还提供时序电路需要的脉冲信号源。将设计电路编程下载到FPGA或CPLD中后,根据EDA硬件开发平台的操作模式要求,进行相应的输入操作,然后检查输出结果,验证设计电路。
1.3.3 数字集成电路的设计
数字集成电路的EDA设计流程如图1.5所示。首先由系统描述开始。在这个阶段中要对用户的需求、市场前景及互补产品进行充分的调研与分析,对设计模式和制造工艺的选择进行认证,最终目标是用工程化语言将待设计IC的技术指标、功能、外形尺寸、芯片面积、工作速度与功耗等描述出来,形成这一步的文档。
图1.5 数字集成电路的EDA设计流程
下一步是功能设计。这一阶段的工作是根据用户提出的系统指标要求,将该系统划分成若干个子系统,在行为级上将IC的功能及其各组成子系统的功能关系正确而完整地描述出来。
然后进行逻辑设计。这一阶段的主要任务是得到一个实现系统功能的逻辑结构(通常用逻辑图、HDL文本或布尔表达式来表示),并对它进行逻辑模拟,验证其正确性。
接着进行电路设计。这一阶段的主要任务是将逻辑图中的各个逻辑部件细化到由一些基本门电路互连的结构,最后转变成由晶体管互连构成电子电路。电路设计中要考虑电路的速度和功耗,要注意所使用的元器件性能。
最后进行物理设计,包括版图设计与版图验证两方面的任务。版图设计是将电路的表示转化为几何表示(制造芯片所用的掩膜版图)。版图验证是保证集成电路版图设计正确性和可靠性的重要手段。版图的设计应符合与制造工艺有关的设计要求。版图验证的内容包括几何设计规则检查(DRC)、电学规则检查(ERC)、版图与电路原理图一致性检查(LVS)以及版图的电参数提取(LPE)及后模拟。
需要指出的是,在逻辑设计完成后要进行逻辑模拟,在电路设计完成后要进行电路模拟,在版图设计的全过程中以及完成以后均需进行版图验证,以保证所设计的版图满足制造工艺要求和符合系统的设计规范。当不满足要求时在后模拟与版图设计之间将会发生一个多次迭代的过程。逻辑模拟十分重要,因为任何逻辑设计上的错误如果一直到芯片做出来以后才能发现(有时往往很难分清是否是逻辑设计上错误),就要花费很多时间和费用去纠正,而且每纠正一次都需要重新进行电路设计、版图设计和工艺流水。
经过验证的版图即可送去制作掩膜版并制造芯片,最后进行封装测试,整个设计流程结束。上述设计流程的每一步骤均需要相应EDA工具的支持,实际的数字IC设计可能会在某个步骤中或者几个步骤之间反复交替进行,运用 EDA 工具进行设计的目标就是要尽量减少反复的次数,以缩短产品进入市场的时间。
1.3.4 模拟集成电路的设计
模拟集成电路的设计流程如图1.6所示。整个流程分为结构级设计、单元级设计(又分为拓扑选择、尺寸优化两步)和物理版图级设计三个阶段,需要有对应的 EDA 工具支持这些设计工作。结构设计是将用户给定的关于模拟集成电路性能的抽象描述转化为一个用各种功能单元所构成的电路;拓扑选择是根据功能单元的性能指标和工作环境,决定用何种具体的电路结构来实现该单元的功能;尺寸优化是在获得电路结构的条件下,根据所需的电路性能指标和生产条件确定每个元器件的“最佳”几何尺寸,以提高模拟集成电路的合格率;物理版图级设计是将具有器件几何尺寸和满足一定约束条件的电原理图映射成集成电路版图。
图1.6 模拟集成电路的设计流程
模拟集成电路的设计比数字集成电路的设计要复杂得多,这是由模拟集成电路设计的特殊性决定的:① 模拟集成电路的层次不如数字集成电路清楚;② 模拟电路性能指标繁杂;③ 模拟电路拓扑结构层出不穷;④ 电路性能对器件尺寸、工艺及系统级串扰非常敏感。
由于上述模拟集成电路设计的种种特殊性,迫使设计者在模拟集成电路设计过程中,要综合考虑各项性能指标,合理选择电路拓扑结构,反复优化器件尺寸,全面考虑工艺水平、工作环境和各种因素,并精心设计物理版图。器件尺寸每调整一次,都要重新绘制版图、重新提取元器件参数,并重做一次后模拟。因此,模拟集成电路的设计是一项非常复杂、艰巨而费时的工作。
目前模拟集成电路设计工具的自动化水平还不够高,设计中许多决策、判断与选择主要靠设计者的智慧来解决,设计中会遇到许多很复杂、很困难的性能指标的多维折中处理问题,而设计者处理这类问题时通常还是靠直觉和长期积累的设计经验,因此设计者必须具有广博的电路知识、丰富的实践经验和勇于创新的精神才能胜任此项工作。