一些缩写
SoC:System on Chip 系统芯片,片上系统
PLD:Programmable Logic Device 可编程逻辑器件
PLA:Programmable Logic Array 可编程逻辑阵列
GAL:Generic Array Logic 通用阵列逻辑
FPGA:Field Programmable Gate Array 现场可编程门阵列
CPLD:Complex Programmable Logic Device 复杂可编程逻辑器件
CAD:Computer Aided Design 计算机辅助设计
CAE:Computer Aided Engineering 计算机辅助工程
EDA:Electronic Design Automation 电子设计自动化
HDL:Hardware Description Language 硬件描述语言
IP: Intellectual Property 知识产权
SOPC:System On Programmable Chip 可编程芯片系统
ASIC:Application Specific Integrated Circuit 专用集成电路
EDA(电子设计自动化)的粗略定义
所谓的EDA技术就是由计算机为工具,设计者基于EDA软件平台,采用原理图或硬件描述语言(HDL)完成设计输入,然后由计算机自动完成逻辑综合、优化、布局布线和仿真,直至完成目标芯片(CPLD,FPGA)的适配和编程下载工作(甚至是完成ASIC专用集成电路掩膜设计),上述辅助进行电子设计的软件工具及技术统称为EDA。
EDA技术三个发展阶段
1.CAD阶段
电子CAD阶段是EDA技术发展的早期阶段。在这个阶段,一方面,计算机的功能还比较有限,个人计算机没有普及;另一方面,电子设计软件的功能也较弱。
2.CAE阶段
在这个阶段,各种单点设计工具、各种设计单元库逐渐完备,并且开始将许多单点工具集成在一起使用,大大提高了工作效率。
3.EDA阶段
EDA技术可粗略分为系统级、寄存器传输级(RTL)、门级和版图级几个层次的辅助设计过程;EDA技术包括电子电路设计的各个领域,即从低频电路到高频电路、从线性电路到非线性电路、从模拟电路到数字电路、从PCB设计到FPGA开发等,EDA技术的功能和范畴如下图所示。
Top-down 设计与IP核复用
Top-down设计
Top-down设计,即自顶向下的设计。这种设计方法先从系统设计入手,在顶层进行功能框图的划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表。
在Top-down设计中,将设计分成几个不同的层次:系统级、功能级、门级和开关级等,按照自上而下的顺序,在不同的层次上对系统进行设计与仿真。
Top-down 设计必须经过“设计——验证——修改——设计——再验证”的过程,不断反复,直到得到的结果能够完全实现所要求的逻辑功能,并且在速度、功耗、价格和可靠性方面实现较为合理的平衡。不过,这种设计并非是绝对的,在设计的过程中,有时也需要用到自底向上的方法,就是在系统划分和分解的基础上,先进行底层单元设计,然后再逐步向上进行功能块、子系统的设计,直至构成整个系统。
Bottom-up 设计
Bottom-up 设计,即自底向上的设计,这是一种传统的设计思路。这种设计方式,一般是设计者选择标准集成电路,或者将各种基本单元,如各种门电路及加法器、计数器等模块做成基本单元库,调用这些基本单元,逐级向上组合,直到设计出满足自己需要的系统为止。这样的设计方法不仅效率低、成本高,而且容易出错。
在数字系统的设计中,主要采用Top-down的设计思路,而以Bottom-up设计为辅。
IP复用技术与SoC
IP,其原来的含义是指知识产权、著作权等,在IC设计领域可将其理解为实现某种功能的设计,IP核则是指完成某种功能的设计模块。
IP核分为硬核、固核和软核三种类型。软核指的是在寄存器级或门级对电路功能用HDL进行描述,表现为VHDL或Verilog代码。软核与生产工艺无关,不涉及物理实现,给后续设计留很大的空间,增大了IP的灵活性和适应性。用户可以对软核的功能加以裁剪以符合特定的应用,也可以对软核的参数进行设置,包括总线宽度、存储器容量、使能或禁止功能块等。硬核指的是以版图形实现的设计模块,它基于一定的设计工艺,通常用GDSⅡ格式表示,不同的客户可以根据自己的需要选用特定生产工艺下的硬核。固核是完成了综合的功能块,通常以网表形式提交客户使用。
软核使用灵活,但其可预测性差,延时不一定能达到要求;硬核可靠性高,能确保性能,如速度、功耗等,能够很快投入使用。
基于IP复用的开发给设计者带来了诸多好处,如节省时间、缩短开发周期、避免重复劳动等。
系统芯片(SoC),或称为芯片系统、片上系统,是指把一个完整的系统集成在一个芯片上,或者说是用一个芯片实现一个功能完整的系统。
EDA设计的流程
EDA设计的实现主要可选择两类器件,一类是可编程逻辑器件(PLD),另一类是专用集成电路(ASIC),这两类器件各有优点。
专用集成电路(ASIC)是指用全定制方法来实现设计的方式,它在最低层,即物理版图级实现设计,因此也称为掩膜ASIC。采用ASIC,能得到最高速度、最低功耗和最省面积的设计。它要求设计者必须使用版图编辑工具从晶体管的版图尺寸、位置及连线开始进行设计,以得到芯片的最优性能。在进行版图设计时,设计者需手工设计版图并精心地布局布线,以获得最佳的性能和最小的面积。版图设计完成后,还要进行一系列检查和验证,包括设计规则检查、电气规则检查、连接性检查
、版图与电路图一致性检查等,全部通过后,才可以将得到的标准格式的版图文件交给半导体厂家进行流片。半导体厂家基于母片通过一系列复杂的工艺制作芯片。ASIC的设计周期长,设计难度大,制造成本高昂,但可以设计出速度高、功耗低、尽量节省面积的芯片,适用于对性能要求很高和批量生产的芯片。
PLD是一种半定制的器件,器件内已做好各种逻辑资源,用户只需对器件内的资源编程连接就可实现所需要的功能,而且可以反复修改、反复编程,直到满足设计要求。用PLD实现设计直接面向用户,具有其他方法无可比拟的方便性、灵活性和通用性,硬件测试和实现快捷,开发效率高、成本低、风险小。
设计输入
设计输入是将设计者所设计的电路以开发软件的某种形式表达出来,并输入到对应软件中的过程。设计输入有多种表达方式,最常用的是原理图方式和HDL文本方式。
原理图输入
原理图是图形化的表达方式,使用元件符号和连线来描述设计。其特点是适合描述连接关系和接口关系,而描述逻辑功能比较繁琐。原理图输入对用户来讲很直观,尤其对表现层次结构、模块化结构更为方便。但它要求设计工具提供必要的元件库或逻辑宏单元。如果输入的是较为复杂的逻辑单元或逻辑库中不存在的模型,采用原理图数往往很不方便。原理图输入的设计可重用性和可移植性也差一些。
HDL文本输入
硬件描述语言(HDL)是一种用文本形式来描述和设计电路的语言。设计者可利用HDL来描述自己的设计,然后利用EDA工具进行综合和仿真,最后变为某种目标文件,再用ASIC或FPGA具体实现。
VHDL和Veriog各有优点,可用来进行算法级、寄存器传输级、门级等各种层次的逻辑设计,也可以进行仿真验证、时序分析等。由于HDL具有标准化特性,易于将设计移植到不同厂家的芯片中去,信号参数也容易改变和修改。采用HDL进行设计还具有工艺无关性,这使得工程师在功能设计、逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求,施加不同的约束条件,即可设计出实际电路。
PLD器件的设计往往采用层次化的设计方法,分模块、分层次地进行设计描述。描述器件总功能的模块放置在最上层,称为顶层设计;描述器件最基本功能的模块放置在最下层,称为底层设计。顶层和底层之间的关系类似于软件中的主程序和子程序的关系。层次化设计的方法比较自由,可以在任何层次使用原理图或硬件描述语言进行描述。一般做法:在顶层设计中,使用图形化表达连接关系和芯片内部逻辑到引脚的接口;在底层设计中,使用硬件描述语言描述各个模块之间的逻辑功能。
综合
综合指的是将较高级抽象层次的设计描述自动转化为较低层次描述的过程。有以下几种形式:
- 将算法表示、行为描述转换到寄存器传输级(RTL),即行为描述到结构描述
- 将RTL描述转换到逻辑门级(包括触发器),称为逻辑综合
- 将逻辑门表示转换到版图表示,或转换到PLD器件的配置网表表示;根据版图信息能够进行ASIC生产,有了配置网表,可完成基于PLD器件的系统实现。
综合器就是能够实现上述转换的软件工具。综合器能将原理图或HDL语言表达、描述的电路编译成由与或阵列、RAM、触发器、寄存器或逻辑单元组成的电路结构网表的工具。
布局布线
布局布线,或称为适配,可理解为将综合生产的电路逻辑网表映射到具体的目标器件中实现,并产生最终的可下载文件的过程。布局布线将综合后的网表文件针对某一具体的目标器件进行逻辑映射,把整个设计分为多个适合器件内部逻辑资源实现的逻辑小块,并根据用户的设定在速度和面积之间做出选择或折中。布局是将已分割的逻辑小块放到器件内部逻辑资源的具体位置,并使它们易于连线;布线则是利用器件的布线资源完成各功能块之间和反馈信号之间的连接。
布局布线后产生如下重要的文件:
- 芯片资源耗用情况
- 面向其他EDA工具的输出文件,如EDIF文件等
- 产生延时网表结构,以便于进行精确的时序仿真
- 器件编程文件,如用于CPLD编程的JEDEC、POF等格式的文件;用于FPGA配置的SOF、JAM、BIT等格式的文件。
仿真
仿真也称为模拟,是对所设计电路的功能进行验证。仿真包括功能仿真、时序仿真。补考信号延时等因素的仿真称为功能仿真,又称为前仿真;时序仿真又称为后仿真,它是在选择具体器件并完成布局布线后进行的包含延时的仿真。由于不同器件的内部延时不一样,不同的布局、布线方案也给延时造成很大的影响,因此在设计实现后,对网络和逻辑块进行延时仿真、分析定时关系、估计设计性能是非常必要的。
编程配置
把适配后生产的编程文件装入PLD器件中的过程称为下载。通常将对基于EEPROM工艺的非易失结构CPLD器件的下载称为编程,而将基于SRAM工艺结构的FPGA器件的下载称为配置。编程需要满足一定的条件,如编程电压、编程时序和编程算法等。有常用的两种编程方式:在系统编程和使用专用的编程器编程,现在的PLD器件一般都支持在系统编程,因此在设计数字系统和做PCB时,应预留器件的下载接口。