第1章 绪论
微电子和计算机领域的原理创新、技术创新、应用创新层出不穷,极大地推动了科学技术的发展。电子设计自动化技术(EDA)是现代电子工程领域的一门新技术,促使电子系统向速度更快、体积更小、质量更轻、功耗更小、稳定性更高的方向发展。专家预言,未来的电子技术将是EDA技术时代。
1.1 EDA技术
EDA技术促使电子电路设计者仅利用硬件描述语言和EDA软件平台,即可对系统硬件实现功能仿真,极大地提高了设计效率,缩短了设计周期,节省了设计成本。
1. EDA技术的主要内容
从20世纪60年代起,一些电子和计算机技术较先进的国家,开始探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。20世纪90年代后,电子系统已经从电路板级系统集成发展为包括ASIC、FPGA和嵌入系统的多种模式,这为数字系统的设计带来了极大的灵活性。可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了电子设计自动化(Electronic Design Automat-ic,EDA)技术的迅速发展。过去几十年里,IC设计方法主要包括以下几个阶段。
1)手工设计(Hand Design) 手工设计的主要目标是进行组合逻辑的优化和简化。
2)电路仿真(Circuit Simulation) 这里的电路指IC中的晶体管电路。在20世纪70年代早期,像Calma这样的公司就把数字化系统推向了市场,并采用Spice进行电路仿真。
3)原理图输入和逻辑仿真(Schematic Capture and Logic Simulation) 工作站技术与图形用户界面的结合让电路设计师能够直接用原理图输入工具来描述他们的设计;同时,以这种方式输入的设计可以在逻辑层次仿真,帮助电路设计师进行开发和调试。
4)布局和布线(Placement&Routing) 从20世纪80年代开始,功能强大的IC布局工具开始出现,包括自动布局布线、设计规则检查、布局与原理图一致性检查等。同时,Verilog HDL和VHDL等硬件描述语言的诞生,也促进了逻辑和寄存器传输级仿真器的发展。
5)综合(Synthesis) 1987年发布了商用的逻辑综合工具,这款工具可以帮助设计师自动将网络表映射到各个不同的单元库上。
【EDA技术的概念】 电子设计技术的核心就是EDA技术。广义的EDA技术包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试、故障诊断自动化、形式验证自动化,这些统称为EDA工程。狭义方面而言,EDA技术是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL(Hardware Description Language)完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的新技术。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。这一过程可以缩短设计周期,节省设计成本。
EDA的范畴很宽,包括机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域。基于可编程逻辑器件的数字系统的EDA技术,其应用范畴如图1-1所示。
图1-1 EDA应用范畴
2. EDA技术的发展趋势和特点
近年来微电子技术以惊人的速度发展,其工艺水平已达到纳米级,在一个芯片上可集成数百万乃至上千万个晶体管,工作速度可达到Gb/s,这为制造出规模更大、速度更快和信息容量更高的芯片系统提供了基础条件。微电子技术的快速发展也对EDA系统提出了更高的要求,并大大地促进了EDA技术的发展。20世纪90年代后期出现了以高级语言描述、系统仿真和综合技术为特征的EDA技术,不仅极大地提高了系统的设计效率,而且使设计者摆脱了大量的辅助性工作,可以将精力集中于创造性的方案与概念的构思上。
近年来EDA技术的发展主要有以下几方面的特点:
高层综合(High Level Synthesis,HLS)的理论与方法的进展,从而将EDA设计层次由RT级提高到了系统级(又称行为级),并且推出了相应的行为级综合工具,大大缩短了复杂ASIC的设计周期,改进了设计质量,提高了设计效率。
采用硬件描述语言(Hardware Description Language,HDL)来描述10万门以上的设计,并形成了VHDL和Verilog HDL两种标准硬件描述语言,更适合描述大规模系统,能够使用户对数字系统进行抽象层次的描述。它们均支持不同层次的描述,使得复杂IC的描述更加规范化,有利于传递、交流、保存与修改,并可建立独立工艺的设计文档。
采用平面规划(FloorPlaning)技术对逻辑综合和物理版图设计进行联合管理,做到在逻辑综合早期设计阶段就考虑到物理设计信息的影响。通过这些信息,设计者能进行更深入的综合与优化,并保证所做的修改只会提高性能而不会对版图设计带来负面影响。在纳米级布线延时已成为主要延时的情况下,对加速设计过程的收敛和提高成功率都是有帮助的。
可测性综合设计。随着ASIC的规模与复杂性的增加,测试的难度与费用急剧上升,由此而产生了将可测性电路结构做在ASIC芯片上的思想,于是开发了扫描插入、BLST(内建自测试)、边界扫描等可测性设计(DFT)工具,并已集成到EDA系统中。
为带有嵌入μP核的ASIC设计提供软、硬件协同设计工具。
建立并行设计工程(Concurrent Engineering,CE)框架结构的集成化、系统化设计环境,以适应当今ASIC的如下特点:规模大而复杂;数字与模拟电路并存;硬件与软件设计并存。产品上市速度快。该框架可以将不同公司的优秀工具集成为一个完整的EDA系统,并能在UNIX与Windows两种平台之间实现平滑过渡。各种EDA工具在该框架中可以并行使用。通过统一的集成化设计环境,能够保证各个设计工具之间的相互联系与管理。在这种集成化设计环境中,使用统一的数据管理系统与完善的通信管理系统,由若干个相关的设计小组共享数据库和知识库,同时并行地进行设计。一旦系统设计完成,相应的电路设计、版图设计、可测性设计与嵌入软件的设计等也都基本完成,适应现代数字系统设计的开发特点。
EDA技术的发展趋势主要体现在超大规模集成电路的集成度和工艺水平不断提高两个方面。市场对系统的集成度不断提出更高的要求,高性能的EDA工具,其自动化和智能化程度不断提高,为嵌入式系统设计提供了功能强大的开发环境,计算机硬件平台性能大幅提高,为复杂的SOC设计提供了物理基础。
3. 常见EDA开发软件的开发商
随着EDA技术的不断发展,进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、Altium Designer、PSPICE、MultiSIM10(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、ModelSim、Matlab等。这些工具都有较强的功能,一般可用于几个方面,例如,很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网络表文件与第三方软件接口。按主要功能或主要应用场合,分为电路设计与仿真工具、PCB设计软件、IC设计软件、PLD设计工具及其他EDA软件。ASIC设计领域相当有名的软件供应商包括Altera公司、Xilinx公司、Lattice公司。其中,Altera和Xilinx占有了60%以上的市场份额。
1)Altera公司 Altera是世界上“可编程芯片系统”(SOPC)解决方案倡导者。Altera结合带有软件工具的可编程逻辑技术、知识产权(IP)和技术服务。普遍认为Maxplus II曾经是最优秀的PLD开发平台之一,适合开发早期的中小规模PLD/FPGA,它是由Altera公司推出的第三代PLD开发系统,其全称为Multiple Array Matrix and Programmable Logic User System,设计速度快,对于几千门的电路设计,从设计输入到器件编程完毕,只需几小时,设计处理在几分钟内完成。特别是在原理图输入等方面,被公认为最易使用、人机界面最友善的PLD开发软件。目前已经由Quartus II替代,不再推荐使用。
Altera公司提供的开发CPLD/FPGA的集成化设计环境Quartus II,简单、易学易用,其可视化、集成化设计环境等优点为大家公认,设计输入、仿真、编译、综合、布局布线和下载都可以使用这个集成环境来完成。Quartus II支持Altera公司推出的所有最新的FPGA器件,提供了一种与结构无关的设计环境,用户只需使用自己熟悉的开发工具,通过软件提供的各种输入方式进行编译、仿真和综合,便可设计出需要的可编程逻辑器件。而且Quartus II软件还提供了可编程片上系统(SOC)设计的一个综合开发环境,包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件设计。适合新器件和大规模FPGA的开发。
此外,SOPC Builder配合Quartus II,可以完成集成CPU的FPGA芯片的开发工作。DSP Builder是Quartus II与Matlab的接口,利用IP核在Matlab中快速完成数字信号处理的仿真和最终FPGA实现。
2)Xilinx公司 Xilinx(赛灵思)是全球领先的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具,以及作为预定义系统级功能的IP(Intellectual Property)核。Xilinx ISE设计套件为嵌入式、DSP和逻辑设计人员提供FPGA设计工具和IP产品方面确立了业界新标准,是更简单、更智能的设计方法。主要体现在:基于用户群体而优化的多种配置版本;改进了Project Navigator和System Gen-erator for DSP、Platform Studio(EDK)和Core Generator System之间的交互通信;突破性的生产力、功耗和性能优势;更大的灵活性。
3)Lattice公司 Lattice是ISP(在线可编程)技术的发明者,ISP技术极大地促进了PLD产品的发展。Lattice在PLD领域发展多年,拥有众多产品系列,目前主流产品是is-pMACH 4000系列PLD和Lattice EC/ECP系列FPGA。此外,在混合信号芯片上,也有诸多建树,如可编程模拟芯片ispPAC、可编程电源管理、时钟管理等。是世界第三大可编程逻辑器件供应商。该公司的ispLEVER 5.0支持新的Lattice XP非易失、可无限重构FPGA。
4. 常见EDA开发软件
根据设计流程与功能划分,EDA工具可以分为设计输入工具、综合工具、仿真工具、实现与优化工具、后端辅助工具、验证与调试工具和系统级设计环境7类。
1)设计输入工具 这是任何一种EDA软件必须具备的基本功能。像Cadence的Com-poser,Viewlogic的Viewdraw,硬件描述语言VHDL、Verilog HDL都是主要设计语言,许多设计输入工具都支持HDL(如Multisim等)。另外,像Active-HDL和其他的设计输入方法,包括原理和状态机输入方法,设计FPGA/CPLD的工具大都可作为IC设计的输入手段。
HDL语言输入。这种设计输入方法是目前最普遍的方法,包括VHDL、Verilog HDL两种语言。个别采用Altera公司的AHDL。一般来说任何文本编辑器都可以用HDL语言完成输入。Quartus II内嵌的文本编辑器是Text Editor,它能根据语法来彩色显示关键字。此外,常用的文本编辑器还有Ultra Edit,通过修改Ultra Edit的WORDFILE.TXT也可以支持彩色语法显示。
原理图设计输入方式在早期应用广泛,目前已被HDL语言输入方式代替,仅在某些设计的顶层描述时才会使用。Quartus II内嵌的文本编辑器是Schematic Editor。
IP Core输入方式是FPGA设计中的一个重要设计输入方式。所谓IP Core,是指已经设计好且受知识产权保护的标准模块单元。适当使用IP Core,能大幅度地减少设计工作量,提高设计质量。
其他辅助性输入方法还包括状态机输入、真值表输入和波形输入等。较流行的状态机输入工具是StateCAD,设计者只需画出状态转移图,状态机编辑器自动生成相应的HDL语言模型。使用真值表输入方法时,用户在工具中填充设计对应的真值表,可自动生成HDL代码。波形输入方法是指用户画出输入的激励波形和输出的相应波形,波形工具自动生成符合输入、输出关系的功能代码。
2)综合工具 综合工具可以把HDL变成门级网络表。这方面Synopsys工具占有较大的优势。主流的综合工具包括Synplify公司的Synplify/Synplify Pro、Synopsys公司的FPGA Compiler II/Express、Exemplar Logic公司的LeonardoSpectrum等。
Synplify/Synplify Pro在综合策略和优化手段上有较大幅度的提高,特别是其先进的Timing Driv-en(时序驱动)和BEST(Behavioral Extration Synthesis Technology,行为级综合提取技术)算法引擎,使其综合结果往往面积较小、速度较快。
Synopsys公司的FPGA Express是最早的FPGA/CPLD综合工具之一。FPGA Express的综合结果比较忠于原设计,其升级版本FPGA Compiler II是最好的ASIC/FPGA设计工具之一。
Mentor的子公司Exemplar Logic出品的LeonardoSpectrum也是一款非常流行的综合工具,其综合优化能力非常高。此外,它也支持Altera器件。
3)仿真工具 几乎每个公司的EDA产品都有仿真工具。Verilog-XL、NC-verilog用于Verilog仿真,Leapfrog用于VHDL仿真,Analog Artist用于模拟电路仿真。Viewlogic的仿真器有:viewsim门级电路仿真器,speedwaveVHDL仿真器,VCS-verilog仿真器。Mentor Graphics有其子公司Model Tech出品的VHDL和Verilog双仿真器ModelSim。Cadence、Syn-opsys用的是VSS(VHDL仿真器)。现在的趋势是各大EDA公司都逐渐使用ModelSim。此外,Aldec公司的ActiveHDL也有相当广泛的用户群。
ModelSim可以说是业界最流行的仿真工具之一,其特点是仿真速度快、精度高,支持VHDL、Verilog HDL及VHDL和Verilog HDL混合编程的仿真。ModelSim的PC版的仿真速度很快,甚至和工作站版不相上下。
4)实现与优化工具 实现与优化工具包含的面比较广。Quartus II集成的实现工具主要有Assignment Editor(约束编辑器)、LogicLock(逻辑锁定工具)、PowerFit Fitter(布局布线器)、Timing Analyzer(时序分析器)、Floorplan Editor(布局规划器)、Chip Editor(底层编辑器)、Design Space Explorer(设计空间管理器)和Design Assistant(检查设计可靠性)等。
Assignment Editor是图形界面的用户约束输入工具。约束文件包含时钟属性、延时特性、引脚位置、寄存器分组、布局布线要求和特殊属性等信息,这些信息指导实现过程。如果约束文件设计得当,会帮助Quartus II达到用户的设计目标。
Quartus II内嵌的LogicLock用以完成模块化设计流程,通过划分每个模块的设计区域,然后单独设计和优化每个模块,最后将每个模块融合到顶层设计中。LogicLock支持模块化设计流程、增量设计流程、团队设计流程等设计方法。
PowerFit Fitter是Quartus II内嵌的布局布线器。
Timing Analyzer是Quartus II内嵌的STA分析工具,用以定位、分析并改善设计的关键路径,从而提高设计的工作效率。
Floorplan Editor用以观察、规划、修改芯片内部的实际布局布线情况,是用户分析设计结构、指导布局布线的重要工具。
Chip Editor也是分析修改芯片内部布线情况的重要工具。通过Chip Editor可以观察芯片时序的关键路径,将Chip Editor与SignalTap II和SignalProbe调试工具配合使用,可以加快设计验证及增量化修改在设计验证期间未解决的错误。
DSE(Design Space Explorer,设计空间管理器)是控制Quartus II布局布线的另一种有效方法。对应一个名为dse.tcl的tcl脚本,可以使用quartus sh可执行文件从命令行运行它,用以优化设计。DSE界面能自动试验一系列的Quartus II选项和设置,从而确定优化设计的最佳参数设置。
Design Assistant内嵌工具用以检查设计的可靠性,在HardCopy设计流程中非常有用。
5)后端辅助工具 Quartus II内嵌的后端辅助工具主要有Assembler(编程文件生成工具)、Programmer(下载配置工具)和PowerGauge(功耗仿真器)。
Assembler是Quartus II Compiler的一个内嵌工具,用以完成FPGA/CPLD配置文件的生成。
Programmer是Quartus II内嵌的下载配置工具,用于对FPGA/CPLD进行下载配置。
PowerGauge是Quartus II内嵌的功耗仿真器,用以估算设计的功耗。
6)验证与调试工具 Quartus II内嵌的调试工具有SignalTap II(在线逻辑分析仪)和SignalProbe(信号探针)。常用的板级仿真验证工具还有Mentor Tau、Synopsys HSPICE和In-noveda BLAST等。
SignalTap II(在线逻辑分析仪)和SignalProbe(信号探针)功能配合使用,用以分析器件内部节点和I/O引脚上的信号。SignalTap II逻辑分析仪使用内嵌的逻辑分析器将信号数据通过JTAG端口送往SignalTap II逻辑分析器或外部逻辑分析仪、示波器。SignalProbe采用增量式路由方式,将选定信号送往外部逻辑分析仪或示波器。
Mentor Tau和Innoveda BLAST板级验证工具用以分析Quartus II生成STAMP模型。
7)系统级设计环境 Quartus II的系统级设计环境主要包括SOPC Builder(可编程片上系统设计环境)、DSP Builder(内嵌DSP设计环境)和Software Builder(软件开发环境)。
SOPC Builder为用户提供了一个标准化的SOPC图形设计环境。Altera的SOPC标准结构由CPU、存储器接口、标准外围设备和用户自定义的外围设备等组件组成。SOPC Builder允许选择和自定义系统模块的各个组件和接口。
DSP Builder是一个图形化的DSP算法开发环境。DSP Builder是由Altera提供的一个可选软件包,并且DSP开发工具包中也包含它。DSP Builder还可使用Signal Tap在线逻辑分析仪对系统进行调试,并且可以通过MATLAB/Simulink接口综合、编译和下载设计,然后执行调试。
Software Builder是Quartus II内嵌的软件开发环境,用以将软件源代码转换为配置Excal-ibur单元的Flash格式文件或无源格式文件,Excalibur嵌入式处理器带分区结构的存储器初始化数据文件。Software Builder可以转化Excalibur设计的软件源文件,以及使用SOPC Builder和DSP Builder系统级设计工具创建的设计。
1.2 数字系统的设计
1. 现代电子系统设计
现代电子系统设计流程(Top-down设计):对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法称为高层次的电子设计方法。
1)设计方法 如图1-2所示,自顶向下是指将数字系统的整体逐步分解为各个子系统或模块,若子系统的规模较大,则还需将子系统进一步分解为更小的子系统,层层分解,直至整个系统中各个子系统关系合理,且便于逻辑电路级的设计和实现为止。Top-down的设计须经过“设计—验证—修改设计—再验证”的过程,如图1-3所示,从系统最高层开始进行逐层分解,逐层描述,逐层仿真,如果某一层上仿真发现问题,则返回上一层,寻找和修改相应的错误,然后再向下继续进行未完的工作,不断反复,最后得到设计的硬件电路能够实现所要求的功能,并在速度、功耗、价格和可靠性方面实现较为合理的平衡。它是基于芯片的设计方法,发展趋势以硬件描述语言(HDL)为主。
图1-2 自顶向下设计思想
图1-3 Top-down设计流程
2)Top-down设计的优点
对设计的描述由上而下,由粗略到详细,符合人们常规的思维习惯。
高层次设计与元器件无关,便于将设计结果在各种集成电路或PLD间移植。
支持模块化/层次化的设计。
底层模块可以被反复调用,多个底层模块也可以同时由多个设计者进行同一系统的设计。
可以进行软、硬件的联合设计,消除了硬件和软件开发时间上的间隔。
在不同层次上都易于形成用于模拟和验证的设计描述。
2. 传统电子系统设计
十几年前,电子设计的基本思路还是选用标准集成电路“自底向上”地造出一个新的系统。一般先按照电子系统的具体功能要求进行功能划分,然后对每个模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再选择相应的元器件,设计电路板,测试。
1)设计方法 Bottom-up设计,即自底向上的设计,其流程如图1-4所示,由设计者调用设计库中的元件(如各种门电路、加法器、计数器等),设计组合出满足自己需要的系统。设计依赖于手工和经验,设计过程较复杂,尤其对于复杂的电路设计困难,工作量大也易出错。系统设计时存在的问题只有在后期才能发现,一旦系统设计中存在缺陷,就得重新设计系统。底层的设计是否满足设计要求,不能在当前层次判断,要在整个系统设计完后才能做系统的测试和调试,才能确定以前的设计是否正确。这样的设计方法就如同一砖一瓦建造金字塔,先选择具体元器件,然后进行逻辑电路设计、系统的硬件设计。在整个过程中,必须始终顾及具体目标元器件的技术细节,任一时刻目标元器件的更换,或某些技术参数不满足总体要求,或不可预测的外部因素,都可能导致前功尽弃,重新开始。不仅设计的周期长,灵活性差,效率低,成本高,而且容易出错。
图1-4 自底向上设计流程
2)Bottom-up设计的缺点
设计电路复杂,调试困难。
如果存在错误,查找和修改不方便。
设计过程产生大量文档,不易管理。
设计实现过程与具体工艺直接相关,因此可移植性差。
只有在设计出样机或生产出芯片后才能进行实测。
设计结果是一张电路图。
1.3 思考与练习
(1)EDA的特点有哪些?
(2)比较现代电子系统设计与传统电子系统设计的优缺点。
(3)设计方法Top-down与Bottom-up相比有哪些优点?