9.3.1 什么是EDA技术
如果现代数字系统设计还依靠手工来进行已经无法满足设计要求了。现代数字系统的设计工作通常都是在计算机上采用EDA技术完成。EDA技术以计算机硬件和系统软件为基本工作平台,采用EDA通用支撑软件和应用软件包,在计算机上帮助电子设计工程师完成电路的功能设计、逻辑设计、性能分析、时序测试直至PCB(印刷电路板)的自动设计等。在EDA软件的支持下,设计师完成对系统功能的描述,由计算机软件进行处理得到设计结果。利用EDA设计工具,设计师可以预知设计结果,减少设计的盲目性,极大地提高设计的效率。
EDA通用支撑软件和应用软件包涉及到电路和系统、数据库、图形学、图论和拓扑逻辑、计算数学、优化理论等许多学科,EDA软件包括自动化程度,功能完善度,运行速度,操作界面,数据开放性和互换性(不同厂商的EDA软件可相互兼容)等技术指标。
EDA设计技术包括电子电路设计的各个领域:即从低频电路到高频电路、从线性电路到非线性电路、从模拟电路到数字电路、从分立电路到集成电路的全部设计过程,涉及到电子工程师进行产品开发的整个过程,以及电子产品生产的整个过程中需要由计算机提供的各种辅助工作。
9.3.2 EDA的技术的基本特征
EDA技术是采用高级语言来描述,具有系统级仿真和综合能力是EDA技术的基本特征。与这些基本特征有关的几个概念如下。
一、“自顶向下"设计方法
“自顶向下”(Top-down)的设计方法从系统级设计入手,首先进行功能方框图的划分与结构设计,然后进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在功能级进行验证。验证后用逻辑综合优化软件生成门级逻辑电路的网表,从而可设计出对应的印刷电路板或专用集成电路。“自顶向下"的设计方法可在早期发现产品结构设计中的错误,在EDA技术中被广泛采用。
在进行了最顶层次的系统设计之后,则逐级向下。在系统整体设计和验证完成之后,可能需要进行逻辑划分,在电路很大时还要将整个电路划分为若干个子模块,并对各子模块进行描述和验证。然后,进行版图设计即进行布局和布线,把标准单元功能块放置在适当位置上,完成各单元之间的连线,并锁定输入/输出管脚,最后完成系统的设计。
1. 描述
描述是指设计者将自己的设计输入到计算机中。目前有两种描述方式,原理图方式和硬件描述语言(Hardware Description Language,HDL)输入方式。
原理图输入方式是指使用设计的图形界面,将代表逻辑元件的符号连接起来。输入中可以使用单个门电路,也可以使用由门电路构成的功能块。
硬件描述语言输入方式指设计者将设计抽象化、模型化和形式化,突出数字逻辑结构和数字电路的延迟特性,输入设计的结构特性、行为特性和几何特性。硬件描述语言的突出优点是:语言的公开可利用性;设计与工艺的无关性;宽范围的描述能力;便于组织大规模系统的设计;便于设计的复用和继承等。与原理图输入设计方法相比较,硬件描述语言更适合规模日益增大的电子系统。硬件描述语言使得设计师在比较抽象的层次上描述设计的结构和内部特征,是进行逻辑综合优化的重要工具。第八章已介绍目前最常用的硬件描述语言。
以上两种方式相比,各有优缺点。原理图方式简单、直观,对比较简单的设计较适合。但如果系统比较复杂,用这种方式就比较繁琐。硬件描述语言简练、精确,设计复杂系统时更能显示其描述能力。
2. 验证
每一层次的设计完成之后,都要经过验证。只有证明正确以后,才能进入下一层次的设计。验证就是根据描述和公理证明该描述所实现的功能是否与要求的功能等效。
目前,常见的设计验证包括模型验证、仿真验证和电路验证。
模型验证的原理是,根据设计目标建立目标系统的形式化模型(也叫验证规范),再以形式化模型为基础,对数字电路的设计结果进行检验。通过模型验证,可以检验出系统的设计缺陷,也可检验出系统是否完全符合设计要求。
仿真验证实际上是一种测试技术,即用软件数据对设计结果进行测试,可以测试设计的功能以及最坏条件下设计的性能。仿真验证的重要内容是设计合理的测试输入数据(也叫测试矢量),把测试矢量作为所设计数字电路的仿真激励,通过观察仿真输出的结果(一般是系统的时序图)分析设计结果是否工作正常。仿真有功能仿真和时序仿真两种方式,功能仿真可以在用具体电路或器件实现设计之前,判断所设计的数字电路结构是否具有所要求的逻辑功能,以便纠正逻辑设计中的错误。时序仿真则是在加入电路时间参数和电气参数条件下,对所设计数字电路的逻辑功能进行仿真。这是对设计进行的全面仿真验证,可以检验映射、布局、布线和各电路在考虑延迟条件下的逻辑功能是否正确,电路工作速度能否达到设计要求。
电路验证是指FPGA、CPLD写入或ASIC器件制作好后,对器件进行实际测试,这是对设计结果的最终验证。
3. 布局布线
布局布线是指完成各模块电路在器件中的放置以及它们之间的互联,并定义器件的输入/输出管脚。这是EDA设计的一个重要方面,布局布线是否合理、有效直接关系到系统的实现。例如,在FPGA或CPLD应用中,一个系统本来可以由某个型号的器件实现,但由于布局布线不合理,可能使这个器件不能装下整个设计,或使系统的性能因此降低。
目前,有自动布线和人工布线两种方式。自动布线是指设计者定义输入/输出管脚后,由EDA设计软件根据设计电路以及设计者安排的管脚位置自动完成电路之间的互联。人工布线是指设计者进行手工布线。自动布线方式可以减轻设计者的负担,并在布线过程中进行电路优化,使最后的实现简捷、有效。但器件的利用率受一定的影响,如有些结构的器件不能做到100%的布通率。人工布线比较繁琐,但设计者可以控制设计电路的互连,在某些情况下也很有用。
二、逻辑的综合与优化
逻辑综合功能可以将高层次的系统行为设计自动翻译成门级逻辑的电路描述,可以使设计和工艺互相独立。而优化则是将上述综合后生成的网表,根据逻辑代数等效化简的原则,用更小、更快的综合结果替代一些复杂的逻辑电路单元,最后生成新的网表。
三、开放性和标准化
EDA系统的框架是一种软件平台结构,它可以给不同的EDA工具提供操作环境。框架提供与硬件平台无关的图形用户界面以及工具之间的通信、设计数据和设计流程的管理,以及各种与数据库相关的服务项目等。一个符合标准的开放式框架结构EDA系统可以和其他厂商的EDA工具一起进行设计工作。框架作为一套使用和配置EDA软件包的规范,可以实现各种EDA工具间的优化组合,将各种EDA工具集成在一个统一管理的环境之下,实现了资源共享,又可提高设计效率。
四.仿真器
仿真器又称模拟器,它被用来帮助设计师验证设计的正确性。在硬件系统设计的各个环节都需用到仿真器。在现代数字系统设计中,硬件系统由数字逻辑器件以及它们之间的互连来表示。通过仿真可以确定系统的输入输出关系即把每一个数字逻辑器件映射为一个或几个过程,将整个系统映射为由进程互连构成的进程网络。仿真模型就是用这种由进程互连组成的网络设计完成的。
9.3.3 EDA的基本方法
EDA工具的基本特点是以数字信号处理为基础,无论是模拟信号还是数字信号,全部转换成相应的数据进行计算处理。
一、数字信号处理方法
在EDA工具中,所有的信号以数据形式提供,系统以计算公式的方式出现。在分析和设计数字逻辑系统的EDA工具中,主要的数字信号处理方法包括以下几种。
1.逻辑信号处理是EDA工具中的重要内容和技术。逻辑信号处理包括两个含义,一个是逻辑运算中的数字信号处理,另一个是电路仿真中对逻辑电平判别时的逻辑信号处理。对于逻辑运算中的数字信号处理基本不存在误差,只存在逻辑函数编程的执行顺序问题。对于逻辑电平判别,则存在计算精度的问题,但对电路仿真的影响不大。
2.延迟处理
延迟处理使用的也是数字信号处理技术。延迟处理中主要是处理延迟时间,计算精度取决于软件所设置的时间分辨率和时间分辨率的计算方法。
3.器件匹配处理
器件匹配的目的是要把所设计的数字逻辑系统用相应的器件实现,这时主要是进行数字信号处理,其计算与器件结构和软件驱动的原理有关。
4.电路级信号处理
在EDA工具中,电路级信号处理是最敏感的部分,主要是因为这里全部是模拟信号的处理。对模拟信号的数字处理,精度是最重要的技术指标。
二、输入方法
在使用EDA工具时,希望能使用不同的方法把用户的设计结果输入计算机,以便用EDA工具进行处理。工程中一般有3种方法输入用户的设计结果。
1.图形输入
所谓图形输入,就是直接输入所设计的数字逻辑系统的逻辑图,通常使用数字电路图形符号。这种输入方法比较直观,初学者容易掌握。但当系统比较复杂时,由于使用图形输入时,逻辑综合的工作是由设计者完成的,使用图形法就不合适了。
2.语言输入
硬件描述语言(目前主要是面向寄存器的硬件描述语言),可以用计算机语言对所要设计的数字逻辑系统进行描述,因此可以充分发挥EDA软件的分析、简化和优化的功能。在设计比较复杂的数字逻辑系统时,一般都采用语言输入方法。同时,由于语言具有软件平台和器件无关性,因此,使用语言设计的数字逻辑系统可以十分方便地用于不同的集成器件。
3.状态输入
所谓状态输入,是近十年来新出现的一种基于寄存器的数字逻辑设计输入方法。状态输入是由用户把所要设计系统的所有状态以及各状态之间的转换关系和输出函数,通过图形和文字的方式输入计算机,由计算机对其进行逻辑和电路综合。