目录
FPGA全称是Field Programmable Gate Array,中文名叫现场可编程门阵列
ASIC全称是Application Specific Integrated Circuit,是指专用集成电路
(1)ASIC:需制作掩模;设计时间长,硬件不能升级;芯片面积小,性能可以得到较好的优化;适合芯片需求量大的场合:片量用于平摊昂贵的光罩掩模制版费,降低单片生产成本。
(2)FPGA/CPLD:可以编程,不需要后端设计/制作掩模;开发门槛较低,设计时间较短,可方便和快速地升级优化硬件;芯片面积大,性能不够优化 ;适合芯片需求量小的场合:不用支付昂贵的光罩掩模制版费。作为数字ASIC设计流程中的必要步骤:ASIC设计中前端设计的FPGA原型验证(HDL功能验证)。
FPGA | ASIC | |
灵活性 | 高 | 低 |
开发流程与周期 | 开发时间短、开发流程更简单 | ASIC更加复杂,尤其是全定制设计,需要大量的人力物力进行设计开发,但体积小、功耗低 |
速度和性能 | FPGA内部都是通用的结构,它可以根据需求的不同去实现乘法器、多路选择器等等组合逻辑,在结构上的通用性必然导致性能冗余 | ASIC内部都是固定的结构 |
成本 | 小批量的,FPGA成本低 | 大批量的,ASIC成本低 |
行业现状 | Xilinx(赛灵思)和Altera(阿尔特拉) |
(1)数字IC:处理数字信号,可以做成很大的规模;
ASIC:(需制作掩模),Application Specific Integrated Circuit 专用集成电路;
FPGA/CPLD:(可以编程,不需制作掩模),Field Programmable Gate Array 现场可编程门阵列;Complex Programmable Logic Device 复杂可编程逻辑器件;
(2)模拟/射频IC:处理模拟信号,规模远不如数字IC,放大器( RF放大器、中放、运放、功放);比较器;振荡器;混频器;模拟PLL;稳压稳流源等
(3)数模混合信号IC: ADC、DAC;某些Driver;电源管理等等
(4)SOC:System on Chip(系统集成电路,片上系统)
(1)满足功能和性能的要求(性能:速度、功耗);
(2)降低芯片成本(包括:设计、制造、测试);
(3)延长芯片的使用寿命,如热均匀分布等;
(4)缩短芯片面市时间(Time-to-Market);
数字IC设计方法:
层次化:从高层次的系统抽象描述,逐级向下进行设计/综合、验证,直到物理版图级的低层次描述(系统(功能)级→寄存器传输级(RTL)→门级→电路级→ 物理版图级);
结构化:把复杂的系统划分成一些可操作的模块,允许多个设计者同时设计,而且某些模块的可以复用;
一、确定项目需求
市场需求--调研--可行性研究--论证--决策--任务书
1. 确定芯片的具体指标:
①物理实现
制作工艺(代工厂及工艺尺寸);
裸片面积(DIE大小,DIE由功耗、成本、数字/模拟面积共同影响);
封装(封装越大,散热越好,成本越高)。
②性能指标:
速度(时钟频率);
功耗。
③功能指标:
功能描述
接口定义
2. 系统级设计:
用系统建模语言(高级语言 如matlab,c等)对各个模块描述,为了对方案的可行性进行验证
二、前端设计(RTL前端+功能验证(最终得到的是RTL Source Code))
RTL级代码----功能仿真----逻辑综合----等价性检查,形式验证----静态时序分析
1. RTL 寄存器传输级设计
利用硬件描述语言,如verilog对电路以寄存器之间的传输为基础进行描述;
2. 功能验证(动态验证、前仿真):
对设计的功能进行仿真验证,需要激励驱动,是动态仿真。
仿真验证工具:Mentor公司的 Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证。
该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。
3. 逻辑综合(Design Compile):
把代码语言描述的模块转化成包含与,或,非,寄存器等基本的逻辑单元的网表,需要指定特定的综合库,添加约束文件;逻辑综合得到门级网表(Netlist)。
4. 形式验证(静态验证):
从功能上,对综合后的网表进行验证,检查验证生成的网表功能是否与设计的电路功能相同。 常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。
等价性检查用到Synopsys的Formality工具。
5. STA静态时序分析:
从时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例。
工具:Synopsys的prime time。
6. DFT(design for test)可测性设计:
常用方法:在设计中插入扫描链,将非扫描单元(如寄存器)变为扫面单元。
工具:Synopsys的DFT Compiler。
三、后端设计(逻辑综合+后仿真(最终得到的是GDSII文件))
布局规划—布局布线----版图物理验证(包括LVS和DRC等)----流片
1. 布局布线(Place and Route):
布局规划主要是标准单元、I/OPad和宏单元的布局。I/O Pad预先给出了位置,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的区域由工具自动摆放。布局规划后,芯片的大小,Core的面积,Row的形式,电源及地线的Ring和Strip都确定下来了。如果必要在自动放置标准单元和宏单元之后,你可以先做一次PNA(power network analysis)。
包括时钟树插入(布局时钟线),布局布线用到Synopsys的IC Compiler(ICC)工具。
在布线(普通信号线)之前先布局时钟线,即时钟树综合CTS(Clock Tree Synthesis),用到Synopsys的Physical Compiler工具。
2. 寄生参数提取(Extrat RC):
提取延迟信息
3. 静态时序分析(STA):
加入了布局布线延迟,更真实的时序分析
4. 版图物理验证:
对完成布线的物理版图进行功能和时序上的验证(包括DRC和LVS等),DRC(设计规则检查)、LVS(版图一致性检查)
工具:Mentor:Calibre
Synopsys:Hercules
Cadence:Diva/dracula
5. 生成GDSII文件,Tap_off 流片
数字前端设计工具 | 编写RTL代码工具 | gvim / notepad++ |
功能验证 | Mentor公司的QuestaSim Synopsys的VCS Cadence的NC-Verilog | |
数字逻辑综合工具 | Cadence:Genus Synopsis:(DC) Design Compiler | |
形式验证 | Synopsys的Formality | |
静态时序分析STA | Synopsys的PT(Prime Time) | |
数字后端设计工具 | 布局布线(Place and Route) | Synopsys的Astro Synopsys的(ICC)IC Compiler (ICC是Astro的下一代取代产品) |
时钟树综合CTS(Clock Tree Synthesis) | Synopsys的Physical Compiler | |
DRC(设计规则检查)、LVS(版图一致性检查) | Mentor:Calibre Synopsys:Hercules Cadence:Diva/dracula |
FPGA设计流程: RTL级代码----功能仿真-----逻辑综合-----门级仿真-----布局布线----时序仿真----版级验证与仿真
典型 FPGA 的开发流程一般如下图所示, 其包括功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。
1、功能定义/器件选型
在 FPGA 设计项目开始之前需要进行方案论证、系统设计和 FPGA 芯片的选型等准备性工作,在确定并评估好方案后需要进行系统功能的定义和模块的划分。
在设计方法上,一般都采用自顶向下的设计方法,首先将整个系统划分成若干个基本模块,然后再将每个基本模块划分为下一层次的基本单元,这样依次划分后确定好各个模块的功能以及各个模块需要设计的输入输出信号,再通过 EDA 工具进行各个模块的设计。
2、设计输入( Design Entry)
设计输入是指在 EDA 工具中,通过使用该开发软件设计出所希望得到的系统或电路的一个过程。
最常使用的方式是通过硬件描述语言( HDL)的方式来描绘设计出最终的数字电路。另一种设计方式是使用原理图输入的方法进行设计输入。
3、功能仿真( RTL-Simulation)
功能仿真也称为综合前仿真,用户设计好数字逻辑后需要检查自己的设计是否符合预期,在不需要综合之前通过仿真软件对电路进行逻辑验证。在功能仿真器件电路可以不用考虑延迟等因素,仅对初步的功能进行检验。通过建立测试平台即 Testbench,利用波形编译器(仿真软件)和硬件描述语言建立好波形文件和激励信号,在仿真软件上会模拟实际电路的波形显示出输出波形信号,并生成报告文件。
常用的硬件描述语言的仿真工具有 Model Tech 公司的 ModelSim、 VCS、 Ncsim 以及 NC-VHDL 等软件。
4、 综合优化( Synthesis)
综合即针对给定的电路实现功能和实现该电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理获得一个能满足上述要求的电路设计方案。
常用的综合工具有 Synplicity 公司的 Synplify/Synplify Pro 软件以及各个 FPGA 厂家自己推出的综合开发工具。
5、 综合后仿真
综合后仿真是用来检查综合结果是否和原设计一致。
后仿真与前仿真的区别在于: 前仿真是指综合前的仿真,如在 Modelsim 对撰写的代码直接进行仿真,而后仿真是综合后的仿真,也就是功能仿真。
6、 布局布线( Place & Routes)
布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中从而决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。
7、 时序仿真( Timing)
时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估计。
8、 板级仿真与验证
板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证,在实际的工作中一般接触较少。
9、 编程与调试
设计的最后一步就是芯片的编程与调试。编程是指将 FPGA 开发工具最后产生使用的数据文件(位数据流文件, Bitstream Generation)加载到 FPGA 芯片中。
逻辑分析仪(Logic Analyzer, LA)便是 FPGA 设计的主要调试工具。目前,主流的 FPGA 芯片生产商都提供了内嵌的在线逻辑分析仪(如 Xilinx ISE 中的 ChipScope、 Altera QuartusII 中的 SignalTapII 以及 SignalProb),它们只需要占用芯片少量的逻辑资源便可达到同样的效果,在实际的工程调试中发挥了极大的作用。