电子设计自动化技术
20 世纪末,电子设计技术获得了飞速的发展,在其推动下,现代电子产品几
乎渗透到社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的
提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也变得越来
越快。
微电子技术的进步表现在大规模集成电路加工技术即半导体工艺技术的发
展上,使得表征半导体工艺水平的线宽已经达到了 90nm,并还在不断地缩小,
在硅片单位面积上,集成了更多的晶体管。集成电路设计正在不断地向超大规模、
极低功耗和超高速的方向发展;专用集成电路 ASIC(Application Specific
Integrated Circuit)的设计成本不断降低,在功能上,现代的集成电路已能够实现
单片电子系统 SOC(System On a Chip)。
现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即
EDA(Electronic Design Automation)技术。EDA 技术就是依赖功能强大的计算
机,在 EDA 工具软件平台上,对以硬件描述语言 HDL(Hardware Description
Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑化
简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试,
直至实现既定的电子线路系统功能。EDA 技术使得设计者的工作仅限于利用软
件的方式,即利用硬件描述语言和 EDA 软件来完成对系统硬件功能的实现,这
是电子设计技术的一个巨大进步。
另一方面,在现代高新电子产品的设计和生产中,微电子技术和现代电子设
计技术是相互促进、相互推动又相互制约的两个环节;前者代表了物理层在广度
和深度上硬件电路实现的发展,后者则反映了现代先进的电子理论、电子技术、
仿真技术、设计工艺和设计技术与最新的计算机软件技术有机的融合和升华。因
此,严格地说,EDA 技术应该是这二者的结合,是这两个技术领域共同孕育的
奇葩。
EDA 技术在硬件实现方面融合了大规模集成电路制造技术,IC 版图设计技
术、ASIC 测试和封装技术、FPGA/CPLD 编程下载技术、自动测试技术等;在
计算机辅助工程方面融合了计算机辅助设计(CAD)、计算机辅助制造(CAM)、
计算机辅助测试(CAT)、计算机辅助工程(CAE)技术以及多种计算机语言的
设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数
字信号处理技术、数字系统建模和优化技术及长线技术理论等。因此 EDA 技术
为现代电子理论和设计的表达与实现提供了可能性。
在现代技术的所有领域中,纵观许多得以飞速发展的科学技术,多为计算机
辅助设计,而非自动化设计。显然,最早进入设计自动化的技术领域之一是电子
技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。不
难理解,EDA 技术已不是某一学科的分支,或某种新的技能技术,而应该是一
门综合性学科。它融合多学科于一体,又渗透于各学科之中,打破了软件和硬件
间的壁垒,使计算机的软件技术与硬件实现、设计效率和产品性能合二为一,它
代表了电子设计技术和应用技术的发展方向。
正因为 EDA 技术丰富的内容以及与电子技术各学科领域的相关性,其发展
的历程同大规模集成电路设计技术、计算机辅助工程、可编程逻辑器件,以及电
子设计技术和工艺的发展是同步的。就过去近 30 年的电子技术的发展历程,可
大致将 EDA 技术的发展分为三个阶段。
20 世纪 70 年代,在集成电路制作方面,MOS 工艺已得到广泛的应用。可编
程逻辑技术及其器件已经问世,计算机作为一种运算工具已在科研领域得到广泛
应用。而在后期,CAD 的概念已见雏形,这一阶段人们开始利用计算机取代手
工劳动,辅助进行集成电路版图编辑、PCB 布局布线等工作。
20 世纪 80 年代,集成电路设计进入了 CMOS(互补场效应管)时代。复杂
可编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用;而在 80
年代末,出现了 FPGA(Field Programmable Gate Array),CAE 和 CAD 技术的应
用更为广泛,它们在 PCB 设计方面的原理图输入、自动布局布线及 PCB 分析,
以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要的角色。特别
是各种硬件描述语言的出现、应用和标准化方面的重大进步,为电子设计自动化
必须解决的电路建模、标准文档及仿真测试奠定了基础。
进入 20 世纪 90 年代,随着硬件描述语言的标准化得到进一步的确立,计算
机辅助工程、辅助分析和辅助设计在电子技术领域获得更加广泛的应用,与此同
时,电子技术在通信、计算机及家电产品生产中的市场需求和技术需求,也极大
地推动了全新的电子设计自动化技术的应用和发展。特别是集成电路设计工艺步
入了超深亚微米阶段,百万门以上的大规模可编程逻辑器件的陆续面世,以及基
于计算机技术的面向用户的低成本大规模 ASIC 设计技术的应用,促进了 EDA
技术的形成。更为重要的是各 EDA 公司致力于推出兼容各种硬件实现方案和支
持标准硬件描述语言的 EDA 工具软件的研究,都有效地将 EDA 技术推向成熟和
实用。
EDA 技术在进入 21 世纪后,得到了更大的发展,突出表现在以下几个方面。
● 在 FPGA 上实现 DSP(数字信号处理)应用成为可能,用纯数字逻辑进
行 DSP 模块的设计,使得高速 DSP 实现成为现实,并有力地推动了软
件无线电技术的实用化和发展。基于 FPGA 的 DSP 技术,为高速数字信
号处理算法提供了实现途径。
● 嵌入式处理器软核的成熟,使得 SOPC(System On a Programmable Chip)
步入大规模应用阶段,在一片 FPGA 中实现一个完备的数字处理系统成
为可能。
● 使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能。
● 在仿真和设计两方面支持标准硬件描述语言且功能强大的 EDA 软件不
断推出。
● 电子技术领域全方位融入 EDA 技术,除了日益成熟的数字技术外,传统
的电路系统设计建模理念发生了重大的变化:软件无线电技术的崛起,
模拟电路系统硬件描述语言的表达和设计的标准化,系统可编程模拟器
件的出现,数字信号处理和图像处理的全硬件实现方案的普遍接受,软
硬件技术的进一步融合等。
● EDA 使得电子领域各学科的界限更加模糊,更加互为包容:模拟与数字、
软件与硬件、系统与器件、ASIC 与 FPGA、行为与结构等。
● 更大规模的 FPGA 和 CPLD 器件的不断推出。
● 基于 EDA 的用于 ASIC 设计的标准单元已涵盖大规模电子系统及复杂
IP 核模块。
● 软硬 IP(Intellectual Property)核在电子行业的产业领域广泛应用。
● SOC 高效低成本设计技术的成熟。
● 系统级、行为验证级硬件描述语言出现(如 System C),使复杂电子系统
的设计和验证趋于简单。
电子设计自动化应用对象
一般地说,利用 EDA 技术进行电子系统设计,最后实现的目标是以下 3 种。
● 全定制或半定制 ASIC。
● FPGA/CPLD(或称可编程 ASIC)开发应用。
● PCB(印制电路板)。
实现目标的前面两项可以归结为专用集成电路 ASIC 的设计和实现(如图 1-1
所示),ASIC 是最终的物理平台,集中容纳了用户通过 EDA 技术将电子应用系
统的既定功能和技术指标具体实现的硬件实体。一般而言,专用集成电路就是具
有专门用途和特定功能的独立集成电路器件,根据这个定义,作为 EDA 技术最
终实现目标的 ASIC,可以通过 3 种途径来完成,这可以通过图 1-1 来说明。
图 1-1 EDA 技术实现目标
图 1-1 中所标的另外一个 EDA 技术实现目标 PCB,指的是印制电路板的布
局布线设计及验证分析,由于不涉及芯片层面上的设计,故不拟展开。
下面主要介绍 FPGA/CPLD 与 ASIC。
1.超大规模可编程逻辑器件
FPGA(Field Programmable Gate Array)和 CPLD(Complex Programmable
Logic Device)是实现这一途径的主流器件,它们的特点是直接面向用户,具有
极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,成本低,
上市时间短,技术维护简单,工作可靠性好等。FPGA 和 CPLD 的应用是 EDA
技术有机融合软硬件电子设计技术以及对自动化设计与自动化实现最典型的诠
释。由于 FPGA 和 CPLD 的开发工具、开发流程和使用方法与 ASIC 有类似之处,
因此这类器件通常也被称为可编程专用 IC,或可编程 ASIC。
EDA技术
IC 设计
FPGA/ CPLD
可编程ASIC
设计
混合
ASIC
设计
门阵列(MPGA)
标准单元(CBIC)
全定制(ASIC)
ASIC设计
ASIC
PCB设计
ASIC
PCB 设计
2.半定制或全定制 ASIC
根据实现的工艺,基于 EDA 设计技术的半定制或全定制 ASIC 可统称为掩膜
(MASK)ASIC,或直接称 ASIC。
ASIC 大致分为门阵列 ASIC、标准单元 ASIC 和全定制 ASIC。
门阵列 ASIC
门阵列芯片包括预定制相连的 PMOS 和 NMOS 晶体管行。设计中,用户可
以借助 EDA 工具将原理图或硬件描述语言模型映像为相应门阵列晶体管配置,
创建一个指定金属互连路径文件,从而完成门阵列 ASIC 开发。由于有掩膜的创
建过程,门阵列有时也称掩膜可编程门阵列(MPGA)。但是 MPGA 与 FPGA 完
全不同,它不是用户可编程的,也不属于可编程逻辑范畴,而是实际的 ASIC。
MPGA 出现在 FPGA 之前,FPGA 技术则源自 MPGA。现在,Altera 的
HardCopy、HardCopy II 技术可以提供一种把 FPGA 的设计转化为结构化 ASIC
的途径。
标准单元 ASIC
目前大部分 ASIC 是使用库中的不同大小的标准单元设计的,这类芯片一般
称作基于单元的集成电路(Cell-based Integrated Circuits,CBIC)。在设计者一级,
库包括不同复杂性的逻辑组件:SSI 逻辑块、MSI 逻辑块、数据通道模块、存储
器、IP,以及系统级模块。库包含每个逻辑单元在硅片级的完整布局,使用者只
需利用 EDA 软件工具与逻辑块描述打交道即可,完全不必关心电路布局的细节。
标准单元布局中,所有扩散、接触点、过孔、多晶信道及金属信道都已完全确定。
当该单元用于设计时,通过 EDA 软件产生的网表文件将单元布局块“粘贴”到芯
片布局之上的单元行上。标准单元 ASIC 设计与 FPGA 设计开发的流程相近。
全定制芯片
全定制芯片中,在针对特定工艺建立的设计规则下,设计者对于电路的设计
有完全的控制权,如线的间隔和晶体管大小的确定。该领域的一个例外是混合信
号设计,使用通信电路的 ASIC 可以定制设计其模拟部分。
3.混合 ASIC
混合 ASIC(不是指数模混合 ASIC)主要指既具有面向用户的 FPGA 可编程
功能和逻辑资源,同时也含有可方便调用和配置的硬件标准单元模块,如 CPU、
RAM、ROM、硬件加法器、乘法器、锁相环等。Xilinx、Atmel 和 Altera 公司已
经推出了这方面的器件,如 Virtex-4 系列、Excalibur(含 ARM 核)和 Stratix II
系列等。混合 ASIC 为 SOC 和 SOPC(System On a Programmable Chip)的设计
实现成为便捷的途径。
硬件描述语言
硬件描述语言 HDL 是 EDA 技术的重要组成部分,常见的 HDL 主要有
VHDL、Verilog HDL、ABEL、AHDL、SystemVerilog 和 SystemC。
其中 VHDL、Verilog 在现在 EDA 设计中使用最多,也拥有几乎所有的主流
EDA 工具的支持。而 SystemVerilog 和 SystemC 这两种 HDL 语言还处于完善过
程中。VHDL 是作为电子设计主流硬件的描述语言之一,本书将重点介绍它的编
程方法和使用技术。
硬件描述语言 VHDL
VHDL 的英文全名是 VHSIC(Very High Speed Integrated CircuitHardware
Description Language),于 1983 年由美国国防部(DOD)发起创建,由 IEEE(The
Institute of Electrical and Electronics Engineers)进一步发展,并在 1987 年作为
“IEEE 标准 1076”发布。从此,VHDL 成为硬件描述语言的业界标准之一。自 IEEE
公布了 VHDL 的标准版本(IEEE Std 1076)之后,各 EDA 公司相继推出了自己
的 VHDL 设计环境,或宣布自己的设计工具支持 VHDL。此后 VHDL 在电子设
计领域得到了广泛应用,并逐步取代了原有的非标准硬件描述语言。
VHDL 作为一个规范语言和建模语言,随着它的标准化,出现了一些支持该
语言的行为仿真器。由于创建 VHDL 的最初目标是用于标准文档的建立和电路
功能模拟,其基本想法是在高层次上描述系统和组件的行为。但到了 20 世纪 90
年代初,人们发现,VHDL 不仅可以作为系统模拟的建模工具,而且可以作为电
路系统的设计工具;可以利用软件工具将 VHDL 源码自动地转化为文本方式表
达的基本逻辑组件连接图,即网表文件。这种方法显然对于电路自动设计是一个
极大的推进。很快,电子设计领域出现了第一个软件设计工具,即 VHDL 逻辑
综合器,它可以标准地将 VHDL 的部分语句描述转化为具体电路实现的网表文
件。
1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上
扩展了 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本。
现在,VHDL 和 Verilog 作为 IEEE 的工业标准硬件描述语言,得到众多 EDA 公
司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。现在公布的最
新 VHDL 标准版本是 IEEE 1076-2002。
VHDL 语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行
建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。
VHDL 具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的
电路行为描述和系统描述的能力,并在语言易读性和层次化结构化设计方面,表
现了强大的生命力和应用潜力。因此,VHDL 在支持各种模式的设计方法、自顶
向下与自底向上或混合方法方面,在面对当今许多电子产品生命周期的缩短,需
要多次重新设计以融入最新技术,改变工艺等方面都表现了良好的适应性。用
VHDL 进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的
实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。
硬件描述语言的综合
综合(Synthesis),就其字面含义应该为:把抽象的实体结合成单个或统一的
实体。因此,综合就是把某些东西结合到一起,把设计抽象层次中的一种表述转
化成另一种表述的过程。对于电子设计领域的综合概念可以表示为:将用行为和
功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配而成的
过程。
事实上,设计过程中的每一步都可称为一个综合环节。设计过程通常从高层
次的行为描述开始,以最低层的结构描述结束,每个综合步骤都是上一层次的转
换。
● 从自然语言表述转换到 VHDL 语言算法表述,是自然语言综合。
● 从算法表述转换到寄存器传输级(Register Transfer Level,RTL)表述,
即从行为域到结构域的综合,是行为综合。
● 从 RTL 级表述转换到逻辑门(包括触发器)的表述,即逻辑综合。
● 从逻辑门表述转换到版图表述(ASIC 设计),或转换到 FPGA 的配置网
表文件,可称为版图综合或结构综合。
有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对
应的 FPGA 变成具有专门功能的电路器件。显然,综合器就是能够自动将一种设
计表示形式向另一种设计表示形式转换的计算机程序,或协助进行手工转换的程
序。它可以将高层次的表述转化为低层次的表述,可以从行为域转化为结构域,
可以将高一级抽象的电路表述(如算法级)转化为低一级的表述(如门级),并
可以用某种特定的硬件技术实现(如 CMOS)。
对设计者而言,在高抽象层次进行系统设计,再利用综合工具将设计转化为
低层次的表示,与直接在低抽象层次来设计系统的情况相比,类似于一个程序员
用高级语言编程并用编译器将程序编译成机器代码和直接用机器代码进行编程
时的情况。前一种情况在于设计者可以将精力主要集中于系统级问题上,而由于
不必关心低级层次的设计所面临的细节问题,在高抽象层次上进行设计和编程将
花费较少的时间和精力,并且减少错误的发生。
另一方面,尽管(如图 1-2 所示)从表面上看,VHDL 等硬件描述语言综合
器和软件程序编译器都不过是一种“翻译器”,它们都能将高层次的设计表达转化
为低层次的表达,但它们却具有许多本质的区别。
编译器将软件程序翻译成基于某种特定 CPU 的机器代码,这种代码仅限于
这种 CPU 而不能移植,并且机器代码不代表硬件结构,更不能改变 CPU 的硬件
结构,只能被动地为其特定的硬件电路结构所利用。如果脱离了已有的硬件环境
(CPU),机器代码将失去意义。此外,编译器作为一种软件的运行,除了某种
单一目标器件,即 CPU 的硬件结构外,不需要任何与硬件相关的器件库和工艺
库参与编译。因而,编译器的工作单纯得多,编译过程基本属于一种一一对应式
的“翻译”行为。
综合器则不同,同样是类似的软件代码(如 VHDL 程序),综合器转化的目
标是底层的电路结构网表文件,这种满足原设计程序功能描述的电路结构不依赖
于任何特定硬件环境,因此可以独立地存在,并能轻易地被移植到任何通用硬件
环境中,如 ASIC、FPGA 等。换言之,电路网表代表了特定的硬件结构,因此
具备了随时改变硬件结构的依据。综合的结果具有相对独立性。另一方面,综合
器在将硬件描述语言表达的电路功能转化成具体的电路结构网表过程中,具有明
显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工
艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的形成。这就
是说,对于相同的 VHDL 表述,综合器可以用不同的电路结构实现相同的功能。
如图 1-3 所示,与编译器相比,综合器具有更复杂的工作环境,综合器在
接受 VHDL 程序并准备对其综合前,必须获得最终实现设计电路硬件特征相关
的工艺库的信息,以及获得优化综合的诸多约束条件。一般地,约束条件可以
分为 3 种,即设计规则、时间约束、面积约束。通常,时间约束的优先级高于
面积约束。设计优化要求,当综合器把 VHDL 源码翻译成通用原理图时,将识
别状态机、加法器、乘法器、多路选择器和寄存器等。这些运算功能根据 VHDL
源码中的符号,如加减乘除。每种运算都可用多种方法实现,如加法可实现方
案有多种,有的面积小,速度慢;有的速度快,面积大。VHDL 行为描述强调
的是电路的行为和功能,而不是电路如何实现。选择电路的实现方案正是综合
器的任务。综合器选择一种能充分满足各项约束条件且成本最低的实现方案。
现在的许多综合器还允许设计者指定在做映像优化时综合器应付出多大“努力”;
“努力”一般可分为低、中、高三档。
图 1-2 编译器和综合功能比较 图 1-3 VHDL
综合器运行流程
需要注意的是,VHDL(和 Verilog)方面的 IEEE 标准主要指的是文档的表
述、行为建模及其仿真,至于在电子线路的设计方面,VHDL(和 Verilog)并没
有得到全面的支持和标准化。这就是说,VHDL 综合器并不能支持标准 VHDL
的全集(全部语句程序),而只能支持其子集,即部分语句,并且不同的 VHDL
综合器所支持的 VHDL 子集也不完全相同。这样一来,对于相同 VHDL 源代码,
不同的 VHDL 综合器可能综合出在结构和功能上并不完全相同的电路系统。对
此,设计者应给予充分的注意。
因此,对于不同的综合结果,不应对综合器的特性贸然作出评价,同时在设
计过程中,必须尽可能全面了解所使用的综合工具的基本特性。
(a) 软件语言设计目标流程
(b) 硬件语言设计目标流程
C、ASM…
程序
软件程序编译器
COMPILER
CPU指令/ :数据代码
010010 100010 1100
VHDL/VERILOG
程序
硬件描述语言综合器
COMPILER
为ASIC设计提供的电路网表文件
QD
J Q
K
VHDL 程序
工艺库 约束
图表
VHDL
综合器
自顶向下设计方法
传统的电子设计流程通常是自底向上的,即首先确定构成系统的最底层的
电路模块或组件的结构和功能,然后根据主系统的功能要求,将它们组合成更
大的功能块,使它们的结构和功能满足高层系统的要求。以此流程,逐步向上
递推,直至完成整个目标系统的设计。例如,对于一般电子系统的设计,使用
自底向上的设计方法,必须首先决定使用的器件类别和规格,如 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 模型重用的方法。此外随着设计层次的降低,在低
级别上使用高级别的测试包来测试模型也很重要并有效。
自顶而下的设计方法能使系统被分解为各个模块的集合之后,可以对设计的
每个独立模块指派不同的工作小组。这些小组可以工作在不同地点,甚至可以分
属不同的单位,最后将不同的模块集成为最终的系统模型,并对其进行综合测试
和评估。
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 技术发展的趋势,解决现代电子设计应用
中出现的各类问题。
图 1-4 自顶向下的设计流程
EDA 技术的优势
在传统的数字电子系统或 IC 设计中,手工设计占了较大的比例。一般先按
电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺
图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元
器件,设计电路板,最后进行实测与调试。手工设计方法主要有以下缺点。
● 复杂电路的设计、调试十分困难。
● 由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改
十分不便。
● 设计过程中产生大量文档,不易管理。
● 对于 IC 设计而言,设计实现过程与具体生产工艺直接相关,因此可移植
性差。
1. 设计说明书
2. 建立VHDL行为模型
3.VHDL行为仿真
4.VHDL-RTL级建模
5. 前端功能仿真
6. 逻辑综合
7. 测试向量生成
8. 功能仿真
9. 结构综合
10. 门级时序仿真
11. 硬件测试
12. 设计完成
● 只有在设计出样机或生产出芯片后才能进行实测。
相比之下,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)封装,所有引脚都在芯片的底面,焊接后普通的仪器仪表无法接触到所
需要的信号点,因此无法测试。
面向 FPGA 的 EDA 开发流程
完整地了解利用 EDA 技术进行设计开发的流程对于正确地选择和使用 EDA
软件,优化设计项目,提高设计效率十分有益。一个完整的、典型的 EDA 设计
流程既是自顶向下设计方法的具体实施途径,也是 EDA 工具软件本身的组成结
构。
设计输入
图 1-5 所示是基于 EDA 软件的 FPGA 开发流程框图,以下将分别介绍各设
计模块的功能特点。对于目前流行的用于 FPGA 开发的 EDA 软件,图 1-5 所示
的设计流程具有一般性。
图 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 技术的应用和发展打开了一个广阔的天地。
HDL 综合
一般地,综合是仅对应于 HDL 而言的。利用 HDL 综合器对设计进行综合是
十分重要的一步,因为综合过程将把软件设计的 HDL 描述与硬件结构挂钩,是
将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。综合就
是将电路的高级语言(如行为描述)转换成低级的,可与 FPGA/CPLD 的基本
结构相映射的网表文件或程序。
当输入的 HDL 文件在 EDA 工具中检测无误后,首先面临的是逻辑综合,因
此要求 HDL 源文件中的语句都是可综合的。
在综合之后,HDL 综合器一般都可以生成一种或多种文件格式网表文件,如
有 EDIF、VHDL、Verilog 等标准格式,在这种网表文件中用各自的格式描述电
路的结构。如在 VHDL 网表文件采用 VHDL 的语法,用结构描述的风格重新诠
释综合后的电路结构。
整个综合过程就是将设计者在 EDA 平台上编辑输入的 HDL 文本、原理图或
状态图形描述,依据给定的硬件结构组件和约束控制条件进行编译、优化、转换
和综合,最终获得门级电路甚至更底层的电路描述网表文件。由此可见,综合器
工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的
硬件结构用某种网表文件的方式对应起来,成为相应的映射关系。如果把综合理
解为映射过程,那么显然这种映射不是惟一的,并且综合的优化也不是单纯的或
一个方向的。为达到速度、面积、性能的要求,往往需要对综合加以约束,称为
综合约束。
布线布局(适配)
适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定
的目标器件中,使之产生最终的下载文件,如 JEDEC、Jam 格式的文件。适配所
选定的目标器件(FPGA/CPLD 芯片)必须属于原综合器指定的目标器件系列。
通常,EDA 软件中的综合器可由专业的第三方 EDA 公司提供,而适配器则需由
FPGA/CPLD 供应商提供。因为适配器的适配对象直接与器件的结构细节相对应。
逻辑综合通过后必须利用适配器将综合后网表文件针对某一具体的目标器
件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、逻辑布局
布线操作。适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时
产生可用于编程的文件。
仿真
在编程下载前必须利用 EDA 工具对适配生成的结果进行模拟测试,就是所
谓的仿真。
仿真就是让计算机根据一定的算法和一定的仿真库对 EDA 设计进行模拟,
以验证设计,排除错误。仿真是在 EDA 设计过程中的重要步骤。图 1-5 所示的
时序与功能门级仿真通常由 PLD 公司的 EDA 开发工具直接提供(当然也可以选
用第三方的专业仿真工具),它可以完成两种不同级别的仿真测试。
(1)时序仿真。就是接近真实器件运行特性的仿真,仿真文件中已包含了
器件硬件特性参数,因而,仿真精度高。但时序仿真的仿真文件必须来自针对具
体器件的适配器。综合后所得的 EDIF 等网表文件通常作为 FPGA 适配器的输入
文件,产生的仿真网表文件中包含了精确的硬件延迟信息。
(2)功能仿真。它是直接对 VHDL、原理图描述或其它描述形式的逻辑功
能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程,仿真过程不
涉及任何具体器件的硬件特性。不经历适配阶段,在设计项目编辑编译(或综合)
后即可进入门级仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短,
对硬件库、综合器等没有任何要求。对于规模比较大的设计项目,综合与适配在
计算机上的耗时是十分可观的,如果每一次修改后的模拟都必须进行时序仿真,
显然会极大地降低开发效率。因此,通常的做法是,首先进行功能仿真,待确认
设计文件所表达的功能满足设计者原有意图时,即逻辑功能满足要求后,再进行
综合、适配和时序仿真,以便把握设计项目在硬件条件下的运行情况。
下载和硬件测试
把适配后生成的下载或配置文件,通过编程器或编程电缆向 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 的硬件系统进行统一测试,以便
最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。
专用集成电路设计流程
专用集成电路 ASIC(Application Specific Integrated Circuits)是相对于通用
集成电路而言的,ASIC 主要指用于某一专门用途的集成电路器件。ASIC 分类大
致如图 1-6 所示,分为数字 ASIC、模拟 ASIC 和数模混合 ASIC。
专用集成电路 ASIC 设计方法
对于数字 ASIC,其设计方法有多种。按版图结构及制造方法分,有半定制
(Semi- custom)和全定制(Full-custom)两种实现方法,如图 1-7 所示。
ASIC 的全定制方法是一种基于晶体管级的,手工设计版图的制造方法。设
计者需要使用全定制版图设计工具来完成,设计者必须考虑晶体管版图的尺寸、
位置、互连线等技术细节,并据此确定整个电路的布局布线,以使设计的芯片的
性能、面积、功耗、成本达到最优。显然,在全定制设计中,人工参与的工作量
大,设计周期长,而且容易出错。
图 1-6 ASIC 分类 图 1-7 ASIC 实现
方法
然而利用全定制方法设计的电路,面积利用率最高,性能较好,功耗较低,
有利于降低设计成本,提高芯片的集成度和工作速度,以及降低功耗。在通用中
小规模集成电路设计、模拟集成电路,包括射频级集成器件的设计,以及有特殊
性能要求和功耗要求的电路或处理器中的特殊功能模块电路的设计中被广泛采
用。
ASIC 的半定制法是一种约束性设计方式,约束的目的是简化设计,缩短设
计周期,降低设计成本,提高设计正确率。半定制法按逻辑实现的方式不同,可
再分为门阵列法、标准单元法和可编程逻辑器件法。
门阵列(Gate Array)法是较早使用的一种 ASIC 设计方法,又称为母片
(Master Slice)法。需预先设计和制造好各种规模的母片,其内部成行成列,并
等间距地排列着基本单元的阵列。除金属连线及引线孔以外的各层版图图形均固
定不变,只剩下一层或两层金属铝连线及孔的掩膜需要根据用户电路的不同而定
制。每个基本单元是以三对或五对晶体管组成,基本单元的高度和宽度都是相等
的,并按行排列。设计人员只需要设计到电路一级,将电路的网表文件交给 IC
数字
ASIC
数模
混合 模拟
ASIC ASIC
ASIC
ASIC 设计方法
全定制法 半定制法
门阵列法 标准单元法 可编程逻辑器件法
厂家即可。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 产品。
一般设计的流程
一般的 ASIC 从设计到制造,需要经过若干步骤,如图 1-8 所示。
图 1-8 ASIC 设计流程
(1)系统规格说明(System Specification)。分析并确定整个系统的功能,
要求达到的性能、物理尺寸,确定采用何种制造工艺、设计周期和设计费用。建
立系统的行为模型,进行可行性验证。
(2)系统划分(System Division)。将系统分割成各个功能子模块,给出子
模块之间信号连接关系。验证各个功能块的行为模型,确定系统的关键时序。
(3)逻辑设计与综合(Logic Design and Synthesis)。将划分的各个子模块用
文本(网表或硬件描述语言)、原理图等进行具体逻辑描述。对于硬件描述语言
描述的设计模块需要用综合器进行综合获得具体的电路网表文件,对于原理图等
描述方式描述的设计模块经简单编译后得到逻辑网表文件。
(4)综合后仿真(Simulate after Synthesis)。从上一步得到网表文件,进行
系统规范说明 系统划分
逻辑设计
与综合
综合后仿真版图设计
baud
clk
resetL bclk
u_rec
resetL
bclk
rxd
rec_ready
[7:0]rdata[7:0]
u_xmit
clk
bclk
resetL
xmit_cmd
[7:0] xdata[7:0]
txd
xmit_done
rec_ready
rdata[7:0][7:0]
rxd
xmit_donexmit_cmd
xdata[7:0] [7:0]
txd
bclk
resetL
clk
版图验证
参数提取
与后仿真
R
S
QD
0
1R
S
QD
0
1R
S
QD
0
1
R
S
QD
0
1
q[3:0]
rst
clk
ce
ld
d[3:0]
制版、流片 芯片测试
仿真验证。
(5)版图设计(Layout Design)。版图设计是将逻辑设计中每一个逻辑组件、
电阻、电容等以及它们之间的连线转换成集成电路制造所需要的版图信息。可手
工或自动进行版图规划(Floorplanning)、布局(Placement)、布线(Routing)。
这一步由于涉及逻辑到物理实现的映射,又称物理设计(Physical Design)。
(6)版图验证(Layout Verification)。版图设计完成以后进行版图验证,主
要包括版图原理图比对(LVS)、设计规则检查(DRC)和电气规则检查
(ERC)。在手工版图设计中,这是非常重要的一步。
(7)参数提取与后仿真。验证完毕,进行版图的电路网表提取(NE),参数
提取(PE),把提取出的参数反注(Back-Annotate)至网表文件,进行最后一步
仿真验证工作。
(8)制版、流片。送 IC 生产线进行制版,光罩和流片,进行试验性生产。
(9)芯片测试。测试芯片是否符合设计要求,并评估成品率。
面向 FPGA 的 EDA 开发工具
EDA 工具在 EDA 技术应用中占据十分重要的位置,EDA 的核心是利用计算
机完成电子设计全程自动化,因此,基于计算机环境的 EDA 软件的支持是必不
可少的。由于 EDA 的整个流程涉及不同技术环节,每一环节中必须有对应的软
件包或专用 EDA 工具独立处理,包括对电路模型的功能模拟、对 VHDL 行为描
述的逻辑综合等。因此单个 EDA 工具往往只涉及 EDA 流程中的某一步骤。这里
就以 EDA 设计流程中涉及的主要软件包为 EDA 工具分类,并给予简要介绍。
EDA 工具大致可以分为 5 个模块:设计输入编辑器、仿真器、HDL 综合器、适
配器(或布局布线器)和下载器。
当然这种分类不是绝对的,还有些辅助的 EDA 工具没有在上面的分类中,
如物理综合器,例如 Synplicity 的 Amplify 和 Mentor 的 Precision Physical
Synthesis、HDL 代码分析调试器,例如 Debussy、形式验证(Formal
Verification)工具。
由于对于一般设计使用不是很多,在这里就不再详细讲述。另外每个
FPGA/CPLD 生产厂家为了方便用户,往往都提供集成开发环境,如 Altera 的
Quartus II。
设计输入编辑器
在以上曾对设计输入编辑器或称设计输入环境作了部分介绍,它们可以接受
不同的设计输入表达方式,如原理图输入方式、状态图输入方式、波形输入方式
以及 HDL 的文本输入方式。在各可编程逻辑器件厂商提供的 EDA 开发工具中,
一般都含有这类输入编辑器,如 Xilinx 的 ISE、Altera 的 MAX+plus II 和 Quartus
II 等。
通常专业的 EDA 工具供应商也提供相应的设计输入工具,这些工具一般与
该公司的其它电路设计软件整合,这点尤其体现在原理图输入环境上。如
Innovada 的 eProduct Designer 中的原理图输入管理工具 DxDesigner(原为
ViewDraw),既可作为 PCB 设计的原理图输入,又可作为 IC 设计、模拟仿真和
FPGA 设计的原理图输入环境。比较常见的还有 Cadence 的 Orcad 中的 Capture
工具等。这一类的工具一般都设计成通用型的原理图输入工具。由于针对
FPGA/CPLD 设计的原理图要含有特殊原理图库(含原理图中的 Symbol)的支持,
因此其输出并不与 EDA 流程的下步设计工具直接相连,而要通过网表文件(如
EDIF 文件)来传递。
由于 HDL(包括 VHDL、Verilog HDL 等)的输入方式是文本格式,所以它
的输入实现要比原理图输入简单得多,用普通的文本编辑器即可完成。如果要
求 HDL 输入时有语法色彩提示,可用带语法提示功能的通用文本编辑器,如
UltraEdit、Vim、XEmacs 等。当然 EDA 工具中提供的 HDL 编辑器会更好用些,
如 Aldec 的 Active HDL 中的 HDL 编辑器、Altium 的 DXP 2004 中的 HDL 编辑
器。
另一方面,由于可编程逻辑器件规模的增大,设计的可选性大为增加,需要
有完善的设计输入文档管理,Mentor 提供的 HDL Designer Series 就是此类工具
的一个典型代表。
有的 EDA 设计输入工具把图形设计与 HDL 文本设计相结合,如在提供
HDL 文本编辑器的同时提供状态机编辑器,用户可用图形(状态图)来描述状
态机,最后生成 HDL 文本输出。如 Visual HDL、Mentor 公司的 FPGA Adantage
(含 HDL Designer Series)、Active HDL 中的 Active State 等。尤其是 HDL
Designer Series 中的各种输入编辑器,可以接受诸如原理图、状态图、表格图等
输入形式,并将它们转成 HDL(VHDL/Verilog)文本表达方式,很好地解决了
通用性(HDL 输入的优点)与易用性(图形法的优点)之间的矛盾。
设计输入编辑器在多样、易用和通用性方面的功能不断增强,标志着 EDA
技术中自动化设计程度的不断提高。
HDL 综合器
由于目前通用的 HDL 语言为 VHDL、Verilog HDL,这里介绍的 HDL 综合
器主要是针对这两种语言的。
硬件描述语言诞生的初衷是用于电路逻辑的建模和仿真的,但直到
Synoposys 推出了 HDL 综合器后,才改变了人们的看法,于是可以将 HDL 直接
用于电路的设计。
由于 HDL 综合器是目标器件硬件结构细节、数字电路设计技术、化简优化
算法以及计算机软件的复杂结合体,而且 HDL 可综合子集标准化过程缓慢,所
以相比于形式多样的设计输入工具,成熟的 HDL 综合器并不多。比较常用的,
性能良好的 FPGA/CPLD 设计的 HDL 综合器有以下 3 种。
● Synopsys 公司的 FPGA Compiler II、DC-FPGA 综合器。
● Synplicity 公司的 Synplify Pro 综合器。
● Mentor 子公司 Exemplar Logic 的 LeonardoSpectrum 综合器和 Precision
RTL Synthesis 综合器。
较早推出综合器的是 Synopsys 公司,它为 FPGA/CPLD 开发推出的综合器
是 FPGA Compiler 及 DC-FPGA。为了便于处理,最初由 Synopsys 公司在综合器
中增加了一些用户自定义类型,如 Std_logic 等,后被纳入 IEEE 标准。对于其它
综合器也都只能支持 VHDL 中的可综合子集。FPGA Compiler 中带有一个原理图
生成浏览器,可以把综合出的网表用原理图的方式画出来,便于验证设计,还附
有强大的延时分析器,可以对关键路径进行单独分析。
Synplicity 公司的 Synplify Pro 除了有原理图生成器、延时分析器外,还带有
一个 FSM Compiler(有限状态机编译器),可以从提交的 VHDL/Verilog 设计文
本中提出存在的有限状态机设计模块,并用状态图的方式显示出来,用表格来说
明状态的转移条件及输出。Synplify Pro 的原理图浏览器可以定位原理图中组件
在 VHDL/Verilog 源文件中的对应语句,便于调试。
Exemplar 公司的 Leonardo Spectrum 也是一个很好的 HDL 综合器,它同时可
用于 FPGA/CPLD 和 ASIC 设计两类工程目标。Leonardo Spectrum 作为 Mentor
的 FPGA Adantage 中的组成部分,与 FPGA Adantage 的设计输入管理工具和仿
真工具有很好的结合。
当然也有应用于 ASIC 设计的 HDL 综合器,如 Synopsys 的 Design Compiler,
Synplicity 的 Synplify ASIC,Cadence 的 Synergy 等。
HDL 综合器在把可综合的 VHDL/Verilog 程序转化成硬件电路时,一般要经
过两个步骤:第一步是 HDL 综合器对 VHDL/Verilog 进行分析处理,并将其转
成相应的电路结构或模块,这时是不考虑实际器件实现的,即完全与硬件无关,
这个过程是一个通用电路原理图形成的过程;第二步是对应实际实现的目标器件
的结构进行优化,并使之满足各种约束条件,优化关键路径等。
HDL 综合器的输出文件一般是网表文件,如 EDIF 格式(Electronic Design
Interchange Format.),文件后缀是.edf ,是一种用于设计数据交换和交流的工业
标准文件格式的文件,或是直接用 VHDL/Verilog 语言表达的标准格式的网表文
件,或是对应 FPGA 器件厂商的网表文件,如 Xilinx 的 XNF 网表文件。
由于综合器只完成 EDA 设计流程中的一个独立设计步骤,所以它往往被其
它 EDA 环境调用,以完成全部流程。它的调用方式一般有两种:一种是前台模
式,在被调用时,显示的是最常见的窗口界面;另一种称为后台模式或控制台模
式,被调用时不出现图形界面,仅在后台运行。
综合器的使用也有两种模式:图形模式和命令行模式(Shell 模式)。
仿真器
仿真器有基于组件(逻辑门)的仿真器和 HDL 语言的仿真器之分,基于组
件的仿真器缺乏 HDL 仿真器的灵活性和通用性。在此主要介绍 HDL 仿真器。
在 EDA 设计技术中仿真的地位十分重要。行为模型的表达、电子系统的建
模、逻辑电路的验证乃至门级系统的测试,每一步都离不开仿真器的模拟检测。
在 EDA 发展的初期,快速地进行电路逻辑仿真是当时的核心问题,即使在现在,
各设计环节的仿真仍然是整个 EDA 工程流程中最耗时间的一个步骤,因此仿真
器的仿真速度、仿真的准确性、易用性成为衡量仿真器的重要指标。按仿真器对
设计语言不同的处理方式分类,可分为编译型仿真器和解释型仿真器。
编译型仿真器的仿真速度较快,但需要预处理,因此不便即时修改;解释型
仿真器的仿真速度一般,可随时修改仿真环境和条件。
按处理的硬件描述语言类型分,HDL 仿真器可分为 VHDL 仿真器、Verilog
仿真器、Mixed HDL 仿真器(混合 HDL 仿真器,同时处理 Verilog 与 VHDL)
和其它 HDL 仿真器(针对其它 HDL 语言的仿真)。
Model Technology 的 ModelSim 是一个出色的 VHDL/Verilog 混合仿真器。它
也属于编译型仿真器,仿真执行速度较快。
Cadence 的 Verilog-XL 是最好的 Verilog 仿真器之一,Verilog-XL 的前身与
Verilog 语言一起诞生。
按仿真的电路描述级别的不同,HDL 仿真器可以单独或综合完成以下各仿真
步骤:
(1)系统级仿真。
(2)行为级仿真。
(3)RTL 级仿真。
(4)门级时序仿真。
按仿真时是否考虑硬件延时分类,可分为功能仿真和时序仿真,根据输入仿
真文件的不同,可以由不同的仿真器完成,也可由同一个仿真器完成。
几乎各个 EDA 厂商都提供基于 Verilog/VHDL 的仿真器。常用的 HDL 仿真
器除上面提及的 ModelSim 与 Verilog-XL 外、还有 Aldec 的 Active HDL、
Synopsys 的 VCS,Cadence 的 NC-Sim 等。
适配器(布局布线器)
适配器的任务是完成目标系统在器件上的布局布线。适配,即结构综合通常
都由可编程逻辑器件的厂商提供的专门针对器件开发的软件来完成。这些软件可
以单独或嵌入在厂商的针对自己产品的集成 EDA 开发环境中存在。例如 Lattice
公司在其 ispLEVEL 开发系统嵌有自己的适配器,但同时提供性能良好、使用方
便的专用适配器:ispEXPERT Compiler;而 Altera 公司的 EDA 集成开发环境
MAX+plus II、Quartus II 中都含有嵌入的适配器(Fitter);Xilinx 的 Foundation
和 ISE 中也同样含有自己的适配器。
适配器最后输出的是各厂商自己定义的下载文件,用于下载到器件中以实现
设计。适配器输出以下多种用途的文件。
● 时序仿真文件,如 MAX+plus II 的 SCF 文件。
● 适配技术报告文件。
● 面向第三方 EDA 工具的输出文件,如 EDIF、VHDL 或 Verilog 格式的文
件。
● FPGA/CPLD 编程下载文件,如用于 CPLD 编程的 JEDEC、POF、ISP 等
格式的文件;用于 FPGA 配置的 SOF、JAM、BIT 等格式的文件。
下载器(编程器)
把设计下载到对应的实际器件,实现硬件设计。软件部分一般都由可编程逻
辑器件的厂商提供的专门针对器件下载或编程软件来完成。
Quartus II 概述
由于本书给出的实验是基于 Quartus II 的,其应用方法和设计流程对于其它
流行的 EDA 工具的使用具有一定的典型性和一般性,所以在此对它作一些介绍。
Quartus II 是 Altera 提供的 FPGA/CPLD 开发集成环境,Altera 是世界最大可
编程逻辑器件供应商之一。Quartus II 在 21 世纪初推出,是 Altera 前一代
FPGA/CPLD 集成开发环境 MAX+plus II 的更新换代产品,其界面友好,使用便
捷。在 Quartus II 上可以完成 节所述的整个流程,它提供了一种与结构无关
的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
Altera 的 Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的
需要,也是单芯片可编程系统(SOPC)设计的综合性环境和 SOPC 开发的基本
设计工具,并为 Altera DSP 开发包进行系统模型设计提供了集成综合环境。
Quartus II 设计工具完全支持 VHDL、Verilog 的设计流程,其内部嵌有 VHDL、
Verilog 逻辑综合器。Quartus II 也可以利用第三方的综合工具,如 Leonardo
Spectrum、Synplify Pro、FPGA Compiler II,并能直接调用这些工具。同样,Quartus
II 具备仿真功能,同时也支持第三方的仿真工具,如 ModelSim。此外,Quartus II
与 MATLAB 和 DSP Builder 结合,可以进行基于 FPGA 的 DSP 系统开发,是
DSP 硬件系统实现的关键 EDA 工具。
Quartus II 包括模块化的编译器。编译器包括的功能模块有分析/综合器
(Analysis & Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器
(Timing Analyzer)、设计辅助模块(Design Assistant)、EDA 网表文件生成器
(EDA Netlist Writer)和编辑数据接口(Compiler Database Interface)等。可以
通过选择 Start Compilation 来运行所有的编译器模块,也可以通过选择 Start 单
独运行各个模块。还可以通过选择 Compiler Tool (Tools 菜单),在 Compiler
Tool 窗口中运行该模块来启动编译器模块。在 Compiler Tool 窗口中,可以打开
该模块的设置文件或报告文件,或打开其它相关窗口。
此外,Quartus II 还包含许多十分有用的 LPM(Library of Parameterized
Modules)模块,它们是复杂或高级系统构建的重要组成部分,在 SOPC 设计中
被大量使用,也可在 Quartus II 普通设计文件一起使用。Altera 提供的 LPM 函数
均基于 Altera 器件的结构做了优化设计。在许多实用情况中,必须使用宏功能模
块才可以使用一些 Altera 特定器件的硬件功能。例如各类片上存储器、DSP 模块、
LVDS 驱动器、PLL 以及 SERDES 和 DDIO 电路模块等。
图 1-9 中所示的上排是 Quartus II 编译设计主控界面,它显示了 Quartus II 自
动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适
配、编程文件汇编(装配)、时序参数提取以及编程下载几个步骤。在图 1-9 下
排的流程框图,是与上面的 Quartus II 设计流程相对照的标准的 EDA 开发流程。
Quartus II 编译器支持的硬件描述语言有 VHDL(支持 VHDL’87 及
VHDL’97 标准)、Verilog HDL 及 AHDL(Altera HDL),AHDL 是 Altera 公司自
己设计、制定的硬件描述语言,是一种以结构描述方式为主的硬件描述语言,只
有企业标准。
Quartus II 允许来自第三方的 EDIF 文件输入,并提供了很多 EDA 软件的接口,
Quartus II 支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设
计方式完成的模块(组件)进行调用,从而解决了原理图与 HDL 混合输入设计的
问题。在设计输入之后,Quartus II 的编译器将给出设计输入的错误报告。Quartus
II 拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。对于使
用 HDL 的设计,可以使用 Quartus II 带有的 RTL Viewer 观察综合后的 RTL 图。
在进行编译后,可对设计进行时序仿真。在作仿真前,需要利用波形编辑器编辑
一个波形激励文件,用于仿真验证时的激励。编译和仿真经检测无误后,便可以
将下载信息通过 Quartus II 提供的编程器下载入目标器件中了。
图 1-9 Quartus II 设计流程
IP(Intellectual Property)核
IP 就是知识产权核或知识产权模块的意思,在 EDA 技术和开发中具有十分
重要的地位。美国著名的 Dataquest 咨询公司将半导体产业的 IP 定义为用于
ASIC 或 FPGA/CPLD 中的预先设计好的电路功能模块。IP 分软 IP、固 IP 和硬 IP。
软 IP 是用 VHDL 等硬件描述语言描述的功能块,但是并不涉及用什么具体
电路组件实现这些功能。软 IP 通常是以硬件描述语言 HDL 源文件的形式出现,
应用开发过程与普通的 HDL 设计也十分相似,只是所需的开发软硬件环境比较
昂贵。软 IP 的设计周期短,设计投入少。由于不涉及物理实现,为后续设计留
有很大的发挥空间,增大了 IP 的灵活性和适应性。软 IP 的弱点是在一定程度上
使后续工序无法适应整体设计,从而需要一定程度的软 IP 修正,在性能上也不
可能获得全面的优化。
固 IP 是完成了综合的功能块。它有较大的设计深度,以网表文件的形式提
交客户使用。如果客户与固 IP 使用同一个 IC 生产线的单元库,IP 应用的成功率
会高得多。
硬 IP 提供设计的最终阶段产品是掩膜。随着设计深度的提高,后续工序所
需要做的事情就越少,当然,灵活性也就越小。不同的客户可以根据自己的需要
图形或
HDL编辑
编程器
设计输入
综合或编译
适配器件
下载
仿真
Analysis & Synthesis
(分析与综合)
Filter
(适配器)
Assembler
(编程文件汇编)
Timing Analyzer
(时序分析器)
订购不同的 IP 产品。由于通信系统越来越复杂,PLD 的设计也更加庞大,这增
加了市场对 IP 核的需求。各大 FPGA/CPLD 厂家继续开发新的商品 IP,并且开
始提供“硬件”IP,即将一些功能在出厂时就固化在芯片中。
实际上,IP 的概念早已在 IC 设计中使用,应该说标准单元库(Standard Cell
library)中的功能单元就是 IP 的一种形式。IC 生产厂(Foundry)为扩大业务,
提供精心设计并经过工艺验证的标准单元,以吸引 IC 设计公司(往往是
Fabless,无生产线 IC 公司)成为他的客户,同时向客户免费提供相关的数据资
料。于是 IC 设计师十分乐于使用成熟、优化的单元完成自己的设计,这样既可
以提高效率,又可以减少设计风险。设计师一旦以这些数据完成设计,自然也就
必须要到这家 Foundry 去做工艺流片,这就使 Foundry 达到了扩大营业的目的。
标准单元使用者除与 Foundry 签订“标准单元数据不扩散协议”之外,无须另
交单元库的使用费,因此 Foundry 并没有直接获取 IP 的收益,只是通过扩大营
业间接收到单元库的 IP 效益,这就是 IP 的初级形式。
今天的 IP 已远远超出了这个水平,IP 已经成为 IC 设计的一项独立技术,成
为实现 SOC 设计的技术支撑以及 ASIC 设计方法学中的学科分支。
从集成规模上说,现在的 IP 库已经包含有诸如 8051、ARM、PowerPC 等微
处理器,320C50 等数字信号处理器,MPEG-II、JPEG 等数字信息压缩/解压器在
内的大规模 IC 模块。这些模块都曾经是具有完整功能的 IC 产品,并曾广泛用来
与其它功能器件一起,在 PCB 上构成系统主板。如今微电子技术已经具有在硅
片上实现系统集成的功能,因此这些昔日的 IC 便以模块“核”(Core)的形式嵌
入 ASIC 或 SOC 之中。
从设计来源上说,单纯靠 Foundry 设计 IP 模块已远不能满足系统设计师的要
求。今天的 IP 库需要广开设计源头,汇纳优秀模块,不论出自谁家,只要是优
化的设计,与同类模块相比达到芯片面积更小、运行速度更快、功率消耗更低、
工艺容差更大,就自然会有人愿意花钱使用这个模块的“版权”,因此也就可以纳
入 IP 库,成为 IP 的一员。
目前,尽管对 IP 还没有统一的定义,但 IP 的实际内涵已有了明确的界定:
首先,它必须是为了易于重用而按嵌入式应用专门设计的。即使是已经被广泛使
用的产品,在决定作为 IP 之前,一般来说也须要再做设计,使其更易于在系统
中嵌入。比较典型的例子是嵌入式 RAM,由于嵌入后已经不存在引线压点
(PAD)的限制,所以在分立电路中不得不采取的措施,诸如数据线输入输出复
用、地址数据线分时复用、数据串并转换以及行列等分译码等,在嵌入式 RAM
中将被去除,不仅节省了芯片面积,而且大幅提高了读写速度。
其次是必须实现 IP 模块的优化设计。优化的目标通常可用“四最”来表达,即
芯片的面积最小、运算速度最快、功率消耗最低、工艺容差最大。所谓工艺容差
大是指所做的设计可以经受更大的工艺波动,是提高加工成品率的重要保障。这
样的优化目标是普通的自动化设计过程难以达到的,但是对于 IP 却又必须达到。
因为 IP 必须能经受得起成千上万次的使用。显然,IP 的每一点优化都将产生千
百倍甚至更大的倍增效益。因此基于晶体管级的 IP 设计便成为完成 IP 设计的重
要的途径。
再次,就是要符合 IP 标准。这与其它 IC 产品一样,IP 进入流通领域后,也
需要有标准。于是在 1996 年以后,RAIPD(Reusable Application-specific
Intellectual-property Developers)、VSIA(Virtual Socket Interface Alliance)等组织
相继成立,协调并制订 IP 重用所需的参数、文档、检验方式等形式化的标准,
以及 IP 标准接口、片内总线等技术性的协议标准。虽然这些工作已经开展了多
年,也制订了一些标准,但至今仍有大量问题有待解决。例如,不同嵌入式处理
器协议的统一、不同 IP 片内结构的统一等问题。
我国在 IP 设计方面尚处于起步阶段,与 IP 的应用需求形成明显的不一致,
这为我国未来的 IP 设计工程师提供了广阔的用武之地。
EDA 技术的发展趋势
随着市场需求的增长,集成工艺水平及计算机自动设计技术的不断提高,促
使单片系统,或称系统集成芯片成为 IC 设计的发展方向,这一发展趋势表现在
以下几个方面。
● 超 大 规 模 集 成 电 路 的 集 成 度 和 工 艺 水 平 不 断 提 高 , 深 亚 微 米
(Deep-Submicron)工艺,如 μm、90nm 已经走向成熟,在一个芯
片上完成的系统级的集成已成为可能。
● 由于工艺线宽的不断减小,在半导体材料上的许多寄生效应已经不能简
单地被忽略。这就对 EDA 工具提出了更高的要求。同时,也使得 IC 生
产线的投资更为巨大。可编程逻辑器件开始进入传统的 ASIC 市场。
● 市场对电子产品提出了更高的要求,如必须降低电子系统的成本,减小
系统的体积等,从而对系统的集成度不断提出更高的要求。同时,设计
的效率也成了一个产品能否成功的关键因素,促使 EDA 工具和 IP 核应
用更为广泛。
● 高性能的 EDA 工具得到长足的发展,其自动化和智能化程度不断提高,
为嵌入式系统设计提供了功能强大的开发环境。
● 计算机硬件平台性能大幅度提高,为复杂的 SOC 设计提供了物理基础。
但现有的 HDL 语言只是提供行为级,或功能级的描述,尚无法完成对复杂
的系统级的抽象描述。人们正尝试开发一种新的系统级设计语言来完成这一工作,
现在已开发出更趋于电路行为级的硬件描述语言,如 SystemC、SystemVerilog 及
系统级混合仿真工具,可以在同一个开发平台上完成高级语言,如 C/C++等,与
标准 HDL 语言(VeriIog 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(可编程片上系统),也
可以完成复杂电子系统的设计,只是代价将相应提高。
在新一代的 ASIC 器件中留有 FPGA 的空间。如果希望改变设计,或者由于
开始的工作中没有条件完成做足够的验证测试,稍后也可以根据要求对它编程。
有了一定的再修改的自由度。ASIC 设计人员采用这种小的可编程逻辑内核用于
修改设计问题,很好地降低了设计风险。增加可编程逻辑的另一个原因是,考虑
到设计产品的许多性能指标变化太快,特别是通信协议,为已经完成设计并投入
应用的 IC 留有多次可自由更改的功能是十分有价值的事,这在通信领域中的芯
片设计方面尤为重要。
现在,传统 ASIC 和 FPGA 之间的界限正变得模糊。系统级芯片不仅集成
RAM 和微处理器,也集成 FPGA。整个 EDA 和 IC 设计工业都朝这个方向发展,
这并非是 FPGA 与 ASIC 制造商竞争的产物,而对于用户来说,意味着有了更多
的选择。
习 题
1-1.EDA 技术与 ASIC 设计和 FPGA 开发有什么关系?
1-2.与软件描述语言相比,VHDL 有什么特点?
1-3.什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?
1-4.在 EDA 技术中,自顶向下的设计方法的重要意义是什么?
1-5.IP 是什么?IP 与 EDA 技术的关系是什么?IP 在 EDA 技术的应用和发
展中的意义是什么?
1-6.叙述 EDA 的 FPGA/CPLD 设计流程和 ASIC 的设计流程。
1-7.FPGA/CPLD 在 ASIC 设计中有什么用处?