芯片IC设计开发流程:前端设计和后端设计阶段

EDA/IC设计

1052人已加入

描述

面试时被问到了对IC设计流程的理解,隐约觉得和FPGA的整套流程有点像,但确实没接触过,在此总结一下。

芯片开发流程如下图所示,芯片设计被分为两个阶段:前端设计和后端设计阶段。

IC设计

前端设计

1.1 市场需求分折文件

(Market Rcouirement Document,MRD)

芯片开发的第一项工作,是一个市场调研报告,说明了潜在市场规模和可获取市场规模。

客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求;

1.2 架构文件

这是一个关于系统构成和芯片架构的高层次描达文件,涉及芯片的高层次操作、引脚分配与定义、软件编程模型、可测性、寄存器定义以及应用模型等。

1.3 微架构文件

它包括芯片内部操作的细节、时钟和复位方案、主要模块的功能描述、典型数据路径描述、缓冲区需求分析、吞吐率和延迟分析、中断和功率管理等问题。

这是多个设计者在采用高级语言( Verilog或VHDL)进行设计时所依照的蓝图。

1.4 RTL设计

芯片被划分成多个块,每个块又被划分成多个模块。多个设计者使用Verilog 或VHDL共同承担设计工作。使用Lint和其他结构工具以保证所有的设计遵循共同的基本设计指导原则。

Lint工具用于检查RTL代码错误,其检查的范用从基本的矢量宽度不匹配到时钟交叉和同步问题。使用一个好的代码分析工具对RTL代码进行检查以便在早期就发现设计和代码中的错误是非常有益的。

常见的商用代码分析工具有:Atrenta的Spyglass、Synopsys的Leda、Cadence的Surelint、Springsoft的nLint和eritools的HDLint等。

1.5 验证

1.5.1 功能验证

在RTL设计完成后,需要对其进行功能验证。

它需要一个testbench验证环境,基于此环境可以生成测试激励并进行设计验证。

System Verilog, OVM/UVM是目前最新的验证语言和验证方法,可以进行受约束的随机化验证。

通常需要一个高层次的,对测试场景进行描述的文件。

仿真工具用于通过各种测试用例对设计进行仿真。每一种测试用例都会针对芯片的某些功能进行测试。仿真工具记录所有内部信号在每个时钟周期的状态值,这对于发现设计错误的内部细节非常重要。商用的仿真工具有Silvaco的SILos、Mentor的Modelsim和Questa、Cadence的nCSim、Synopsys的VCS等。

1.5.2 模拟

芯片设计时,经常会使用FPGA进行系统模拟验证。FPGA与芯片类似,都使用综合后的网表实现所需要的功能,但FPGA更为灵活。FPGA最初是一块空白的芯片,用户的设计经过综合后得到比特文件,烧录到FPGA中之后可以实现与芯片相同的功能。FPGA可以反复烧录,易于进行设计修改。

使用FPGA实现芯片功能,在系统中进行实际验证,有助于从系统级对芯片的功能进行实际验证,可以先期就开发软件和驱动程序,这些都有助于在流片之前发现隐藏较深的设计缺陷。

目前,FPGA模拟已经成为芯片开发流程中的一个标准环节。

后端设计

2.1 综合

综合是使用软件工具将RTL代码(Verilog或VHDL)转换为逻辑门(与门、或门和触发器等)的过程。综合工具可以按照某些原则,如最小面积或最佳定时特性,生成综合后的网表。

在开始综合之前,我们需要编写综合约束文件。综合约束文件中需要说明的一些重要内容包括以下几点:

时钟频率:这是综合工具需要知道的最重要的信息,它决定了满足定时要求的情况下两个触发器之间可以有多少级逻辑电路。

优化目标:最小面积或最佳定时特性。如果工作频率较低,定时不存在问题,那么我们可以将综合过程的优化目标确定为最小面积;如果定时要求苛刻,那么综合的优化目标应该为最佳定时特性,此时综合工具可能会将某些电路设计为并行或流水线结构,这会增大芯片面积,但定时特性会更好。

输出延迟和输入延迟:当一个模块的输出与另一个模块的输人相连接时,我们需要对输出引脚的输出延迟和输人引脚的输入延迟进行描述。

展平(fattening)与保持层次(keeping hierarchy):当保持层次时,RTL代码在模块级进行综合,其输入输出引脚被保留。当设计被展平后,综合时不考虑模块之间的边界。

一些常用的综合工具有,

ASIC:Synopsys的DC(Design Compiler)、Cadence(RTL Compiler)和Magma的Talus等。

FPGA:Mentor的Precision、Synopsys的Synplify family、Xilinx的XST、Altera的Quartus、Magma的BlastFPGA等。

2.2 STA

STA ( Statie Timing Analysis., 静态定时分析)是一种用于发现芯片在综合或布局布线之后的逻辑是否满足定时要求的方法。RTL代码综合和布局在线之后,就可以将逻辑门及逻辑门之间互联信导线的延迟参数提取出来,这一过程称为延迟提取。在同步设计中,信号从一个触发器的输出、经过多个逻辑门之后进入另一个触发器的输入端。

STA工具可以计算出从一个触发器的输出到另一个触发器入之间的最大延迟,最大延迟值应小于1个时钟周期,这样才能保证输出的信号在本周期内到达下一个触发器,并且不会出现建立时间不满足要求的问题。STA工具还会计算从一个触发器的输出到另一个触发器输入之间的最小延迟,最小延迟用于确保延迟值大于触发器所需要的保持时间。

常见的STA工具有,Synopsys Prime Time、Cadence CTE(Common Timing Engine)、Mentor SST Velocity、Magma等。

2.3 门级仿真

门级仿真是在包含定时信息的情况下检查芯片功能是否正确。

此时芯片内部的所有延迟都放标注出来,因此所有内部节点和逻辑门的逻辑值变化都包含了实际的延迟。这反映了真实芯片的操作行为。

2.4 布局布线(layout)

在这一阶段,layout 工具将综合后的网表读入,所有逻辑门都以晶体管和其他基本元件的方式出现。

有些芯片的layout是由布局布线工具自动完成的。

有些高频设计需要以手工的方式进行布局布线。

2.5 提交设计数据(tape-out)

芯片布局布线后,可以提取出精确的定时信息并反馈给STA工具进行精确的定时特性检查。此后还需要进行设计规则检查(Design Rule Check,DRC)。这些工作都完成后,就可以将设计数据提交给芯片制造厂了。早期进行芯片设计时,都是以磁带来存储芯片设计数据的,因此称为tape-out。目前多以电子文档的方式提交数据,已经不使用磁带了,但这一称呼沿用至今。

系统实现

3.1 实验室测试

芯片的工程样片需要安装在预先设计好的评估板上进行实际应用测试。

第一次所投的芯片被称为工程样片,目的是发现芯片在实际应用时存在的问题并解决这些问题。

第二次所投芯片如果经过全面测试后没有发现任何问题,那么这一批芯片就可以作为正式的产品。

有些博客在前后端划分有不一样,有的前端将综合和STA包括进前端设计中。

因此其前端包括:规格制定、详细设计、HDL编码、仿真验证、逻辑综合、STA和形式验证,前端设计的结果就是得到了芯片的门级网表电路;

后端划分更细,包括:

DFT:Design For Test,可测性设计。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。

DFT工具有Synopsys的DFT Compiler。

布局规划(FloorPlan):布局规划就是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等;布局规划能直接影响芯片最终的面积。

工具为Synopsys的Astro。

CTS:Clock Tree Synthesis,时钟树综合,时钟的布线;由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小,这也是为什么时钟信号需要单独布线的原因。

CTS工具有Synopsys的Physical Compiler。

布线(Place & Route):普通信号布线,包括各种标准单元(基本逻辑门电路)之间的走线;比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上就是这里金属布线可以达到的最小宽度,从微观上看就是MOS管的沟道长度。

寄生参数提取:由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生信号噪声,串扰和反射;这些效应会产生信号完整性问题,导致信号电压波动和变化,如果严重就会导致信号失真错误;提取寄生参数进行再次的分析验证,分析信号完整性问题是非常重要的。

工具Synopsys的Star-RCXT。

版图物理验证:对完成布线的物理版图进行功能和时序上的验证,验证项目很多,如LVS(Layout Vs Schematic)验证,简单说,就是版图与逻辑综合后的门级电路图的对比验证;DRC(Design Rule Checking),设计规则检查,检查连线间距,连线宽度等是否满足工艺要求;ERC(Electrical Rule Checking),电气规则检查,检查短路和开路等电气 规则违例。

工具为Synopsys的Hercules。

实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题。

物理版图以GDS II的文件格式交给芯片代工厂(Foundry)在晶圆硅片上做出实际的电路,再进行封装和测试,就得到了实际看见的芯片。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分