电子设计自动化技术及其发展
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 技术有机融合软硬
EDA技术
IC 设计
FPGA/ CPLD
可编程ASIC
设计
混合
ASIC
设计
门阵列(MPGA)
标准单元(CBIC)
全定制(ASIC)
ASIC设计
ASIC
PCB设计
ASIC
PCB 设计
件电子设计技术以及对自动化设计与自动化实现最典型的诠释。由
于 FPGA 和 CPLD 的开发工具、开发流程和使用方法与 ASIC 有类似
之处,因此这类器件通常也被称为可编程专用 IC,或可编程 ASIC。
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 设计中,手工设计占了较大的比例。
一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块
画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相
应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与
调试。手工设计方法主要有以下缺点。
● 复杂电路的设计、调试十分困难。
● 由于无法进行硬件系统功能仿真,如果某一过程存在错误,查
1. 设计说明书
2. 建立VHDL行为模型
3.VHDL行为仿真
4.VHDL-RTL级建模
5. 前端功能仿真
6. 逻辑综合
7. 测试向量生成
8. 功能仿真
9. 结构综合
10. 门级时序仿真
11. 硬件测试
12. 设计完成
找和修改十分不便。
● 设计过程中产生大量文档,不易管理。
● 对于 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)封装,所有引脚都在芯片
的底面,焊接后普通的仪器仪表无法接触到所需要的信号点,因此无
法测试。
面向 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)法。需预先设计和制造好各种规模的母片,其
内部成行成列,并等间距地排列着基本单元的阵列。除金属连线及引
线孔以外的各层版图图形均固定不变,只剩下一层或两层金属铝连线
及孔的掩膜需要根据用户电路的不同而定制。每个基本单元是以三对
或五对晶体管组成,基本单元的高度和宽度都是相等的,并按行排列。
数字
ASIC
数模
混合 模拟
ASIC ASIC
ASIC
ASIC 设计方法
全定制法 半定制法
门阵列法 标准单元法 可编程逻辑器件法
设计人员只需要设计到电路一级,将电路的网表文件交给 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 产品。
一般设计的流程
一般的 ASIC 从设计到制造,需要经过若干步骤,如图 1-8 所示。
图 1-8 ASIC 设计流程
(1)系统规格说明(System Specification)。分析并确定整个系统
的功能,要求达到的性能、物理尺寸,确定采用何种制造工艺、设计
周期和设计费用。建立系统的行为模型,进行可行性验证。
(2)系统划分(System Division)。将系统分割成各个功能子模块,
给出子模块之间信号连接关系。验证各个功能块的行为模型,确定系
统的关键时序。
(3)逻辑设计与综合(Logic Design and 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]
制版、流片 芯片测试
体的电路网表文件,对于原理图等描述方式描述的设计模块经简单编
译后得到逻辑网表文件。
(4)综合后仿真(Simulate after Synthesis)。从上一步得到网表
文件,进行仿真验证。
(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 修正,在性能上也不可
能获得全面的优化。
图形或
HDL编辑
编程器
设计输入
综合或编译
适配器件
下载
仿真
Analysis & Synthesis
(分析与综合)
Filter
(适配器)
Assembler
(编程文件汇编)
Timing Analyzer
(时序分析器)
固 IP 是完成了综合的功能块。它有较大的设计深度,以网表文件
的形式提交客户使用。如果客户与固 IP 使用同一个 IC 生产线的单元
库,IP 应用的成功率会高得多。
硬 IP 提供设计的最终阶段产品是掩膜。随着设计深度的提高,后
续工序所需要做的事情就越少,当然,灵活性也就越小。不同的客户
可以根据自己的需要订购不同的 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 设计中有什么用处?