数字 IC top-down 设计流程
拿到一个芯片设计项目,首要做的事就是确定好系统功能、性能、物理尺寸、
设计模式、制造
工艺、设计周期、设计费用等等。芯片项目的总体规划确定好之后,接着就要
从技术层面上设计芯
片,芯片流程一般分为前端设计和后端设计连个过程。
前端设计:
1.设计输入
确定芯片的具体逻辑功能,设计合理的算法(如有必要,可将芯片划分子模
块),使用 HDL 语言
(常用 VHDL 或 Verilog)描述芯片(模块)功能,写出可综合级别的代码。
HDL 语言可以直接用各种
文本编辑器编写(要注意后缀),也可以用仿真器自带的文本编辑器编写。如
果逻辑结构不是很复
杂,或者电路形式有特定的要求,不宜用 HDL 语言描述,这时可以考虑用原理
图编辑器直接画出原理
图,或者直接编写出电路网表。常用的输入工具有 Cadence 的 Composer,
Synopsys 的 Viewdraw 等。
2.前端仿真( RTL 级)
用仿真工具对 HDL 代码作前仿真,做理想状况下的功能验证,观察 HDL 仿真结
果是否满足要求。
仿真工具主要有 Synopsys 公司的 V S S( VHDL)、 V C S( Verilog),
Cadence 公司的 NC-Verilog 和 Verilog-XL
( Verilog), Leapfrog( VHDL) ,Mentor Graphics 公司的 Modelsim
( Verilog&VHDL)。还有些 FPGA
公司的仿真软件也不错,比如 Altera 公司的 Quartus。
3.逻辑综合
前仿真通过以后,就可以把代码拿去综合了,逻辑综合是指把 HDL 语言描述转
化成电路门级网表,
并进行逻辑和时序电路的优化。综合需要设定约束条件,还需要基于特定的综
合库。不同的库中,
门电路基本标准单元( standard cell)的面积,时序参数是不一样的。所以,
选用的综合库不一样,
综合出来的电路在时序,面积上是有差异的。输出文件也可以有多种格式,常
用的有 EDIF 格式
( Electronic Data Interchange Format 电子数据交换格式)。综合工具
Synopsys 公司的比较强,
如 DC( Design Compiler), BC( Behavior Compiler), Cadence 的有 Ambit,
PKS。有些 FPGA 用的第
三方综合工具功能也很强大,如 Cadence 的 Synplify, Synopsys 的 FPGAExpress 和 FPGA-Compiler,
Mentor 的 Leonardo Spectrum。
4. 形式验证
是从功能上对综合后的网表进行验证。常用的就是等价性检查方法,以 HDL 为
参考,对比综合生
成的网表功能,验证他们是否在功能上存在等价性。这样做是为了保证在逻辑
综合过程中没有改变
原先 HDL 描述的电路功能。形式验证工具有 Synopsys 的 Formality, Mentor 的
FormalPro。
这些都没有问题了就可以进入后端设计了。
后端设计:
5.数据准备
后端设计需要 foundry 提供的和前端设计产生的一些数据。
例如对于 Cadence 的 SE( Silicon Ensemble)而言所需的数据主要有 Foundry
厂提供的标准单元
(全定制设计也可由自己设计标准单元)、宏单元和 I/O Pad 的库文件,它包括
物理库、时序库及网
表库,分别以.lef、 .tlf 和.v 的形式给出。前端的芯片设计经过综合后生成的
门级网表,具有时序约
束和时钟定义的脚本文件和由此产生的.gcf 约束文件以及定义电源 Pad 的 DEF
( Design Exchange
Format)文件。对 synopsys 的 Astro 而言, 经过综合后生成的门级网表,
时序约束文件 SDC 是一样
的,Pad 的定义文件--tdf, .tf 文件--technology file,Foundry 厂提供的标
准单元、宏单元和 I/O
Pad 的库文件就与 FRAM, CELL view, LM view 形式给出(Milkway 参考库 and
DB, LIB file)
标准单元版图。标准单元分为单元库和全定制两种。单元库一般是 foundry 给
定的,全定制的话,
版图是由自己公司专门的版图工程师画的, Layout 工具有 Cadence Virtuoso
layout editor,另外
还有 Laker 等使用也很广泛。版图画完后往往要做一下 DRC 验证( Design Rule
Checking 设计规则检
查,检查连线间距,连线宽度等几何规则是否满足工艺要求), LVS 验证
( Layout Vs Schematic 版图
与逻辑综合后的门级电路图的参数对比验证),这要借助 Cadence 的 Diva,
Dracula 或者 Mentor 公司
的 Calibre 或者 Synopsys 公司的 Hercules, LVS 上 Hercules 功能尤显强大。
6.自动布局布线( Auto place & route,简称 APR)
利用前面做好的网表和单元版图生成整块芯片版图。可用工具有 Synopsys 公司
的 Astro( Avant!
的 Apollo), Cadence 的 design framework,Silicon Ensembler, Envisia
place &route DSM,Design
Planner,Gate Ensemble。
( 1)布局规划,主要是标准单元、 I/O Pad 和宏单元(如 IP 模块, RAM 等)的
布局。 I/O Pad 一般
是预先给定了位置的,而宏单元则根据时序要求进行摆放,标准单元则是给出了
一定的区域由工具自
动摆放。布局规划后,芯片的大小,Core 的面积,Row 的形式、电源及地线的
Ring 和 Strip 就都确定下来
了。如果有必要,在自动放置标准单元和宏单元之后, 可以先做一次
PNA(power network analysis)
--IR drop(电压降) and EM(电迁移)。布局规划能直接影响芯片最终的面
积。
( 2) Placement(标准单元放置)。布局规划后,宏单元、 I/O Pad 的位置和放
置标准单元的区域
都已确定,这些信息由 SE( Silicon Ensemble)通过 DEF 文件传递给
PC(Physical Compiler 物理综合
工具),PC 根据由逻辑综合给出的.DB 文件获得网表和时序约束信息进行自动放
置标准单元,同时进行
时序检查和单元放置优化。如果是用 PC +Astro,则可用 write_milkway,
read_milkway 传递数据。
( 3) Routing(布线)是指在满足工艺规则和布线层数限制、线宽、线间距限
制和各线网可靠绝
缘的电性能约束的条件下,根据电路的连接关系将各单元和 I/O Pad 用互连线连
接起来,这些是在时
序驱动(Timing driven ) 的条件下进行的,保证关键时序路径上的连线长度能
够最小。基本流程是:
Global route-- Track assign --Detail Dummy Metal 的增加(详见第 10
步)。
( 4)布局布线中需要注意的是 CTS( Clock Tree Synthesis,时钟树综合),
简单点说就是时钟
的布线。由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的
连到各个时序单元,
使时钟从同一个时钟源到达各个时许单元的延迟差异最小。而且有的时序单元,
对时钟源来说负载很
多,其负载延时很大也会造成不平衡,这是就需要插入缓冲器减小负载和平衡延
时。从而因此时钟信
号一般需要单独布线。这些时钟网络及其上的缓冲器构成了时钟树。一般要反
复几次才可以做出一
个比较理想的时钟树。 CTS 工具常用 Synopsys 的 Physical Compiler。
7.寄生参数提取及后仿真
( 1)由于芯片里面的导线等本身存在的电阻,相邻导线之间还有互感,耦合电
容等,他们都会在
芯片内部会产生信号噪声,串扰和反射。这些效应会产生信号完整性问题,导
致信号的电压波动和
变化,如果严重就会导致信号失真错误。因此从 layout 进行寄生参数提取
( extract),反标到前面
的网表中,再次分析验证信号完整性问题是非常重要的。常用的参数提取工具
有 Synopsys 的 Star-RC
XT, Cadence 的 Nautilus DC,软件生成的带有完整的延时信息的设计文件格式
一般有: *.vho,*.sdf
文件。
( 2) STA( Static Timing Analysis 静态时序分析)是采用穷尽分析方法来提
取出整个电路存在的
所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立时间
( setup time)和保持时
间( hold time)是否满足时序要求,通过对最大路径延时和最小路径延时的分
析,找出违背时序约
束的错误。因为时钟树插入后,每个单元的位置都确定下来了,工具可以提出
Global Route 形式的连
线寄生参数,此时对延时参数的提取就比较准确了。例如 SE 把.V 和.SDF 文件传
递给静态时序验证工具
进行分析。而对 Astro 而言,在 detail routing 之后, 用 starRC XT 进
行参数提取,生成的.V 和.SDF
文件传递给 PrimeTime 做静态时序分析,那将会更准确。时序验证工具有
Cadence 的 Pearl, Synopsys
的 Prime Time 等。这些流程都没有问题后,就可以将.v 和.sdf 文件送去前端
人员那里进行后仿真,
即 DTA(动态时序分析),再次验证逻辑功能,后仿真应做 SI(信号完整性)
分析。
8. ECO(Engineering Change Order)
针对静态时序分析和后仿真中出现的问题,对电路和单元布局进行小范围的改动。
后仿真和前面
的布局布线阶段可能需要反复的循环进行才能达到设计要求,这需要前端人员
和后端人员的良好配
合。
9.芯片功耗分析
实际的后端流程还包括电路功耗分析,功耗分析常用的工具有 Prime power,
Power Compiler 等。
10.Filler 的插入(pad filler, cell filler)和 Dummy 金属的添加
Filler 指的是标准单元库和 I/O Pad 库中定义的与逻辑无关的填充物,用来填
充标准单元和标准单元
之间,I/O Pad 和 I/O Pad 之间的间隙,它主要是把扩散层连接起来,满足 DRC 规
则和设计需要。另外还
因为 Foundry 对金属密度一般都有规定,使其金属密度不要低于一定的值,以防
在芯片制造过程中的
刻蚀阶段对连线的金属层过度刻蚀从而降低电路的性能,加入 Dummy Metal 就
是为了增加金属的密
度。
11.整体物理版图验证
主要包括 LVS, DRC, ERC( Electrical Rule Checking 电气规则检查,检查短
路,开路等电气规
则违例)。工具前面已经介绍,这一步的完成基本上就是是整个芯片设计阶段
完成,下面的就是芯
片制造了。物理版图以 GDSII 的格式交给掩膜版厂做掩膜,然后到芯片代工厂
( Foundry)流片( tape
out),在晶圆硅片上做出实际的电路。流片出来后要对样片进行各种测试,满
足要求后就可以批量
生产了。
附:
DFT( Design For Test 可测性设计)。 IC 设计时内部往往都设计为自带测试电
路的结构, DFT 的目
的就是在设计的时候就考虑将来的测试。 DFT 的常见方法就是,在设计中插入
扫描链,将非扫描单元
(如寄存器)变为扫描单元, DFT 工具 Synopsys 的 DFT Compiler, Mentor 的
FastScan 等,需前后端设
计员合作,并参与 tapeout 后测试。还有随着制造工艺不断进步产生的 DFM
(可制造性设计)问题等
等。
总结:
Specification ->Architecture->RTL->SIM->DC->SIM->PT->DC->ASTRO->PT-
>DRC,LVS, ERC->TAPE OUT
数字 IC 设计中常见文件格式:
.alf: Advanced Library Format describing IC technology, cells and
blocks
.cif: Caltech Intermediate Format,纯文本的中间文件,主要用于版图的导
入输出,不用于生产
.ctlf: Compiled Timing Library Format
.db: data base
.def:design exchange format
.dspf:寄生参数交互格式
.edif: Electronic Data Interchange Format
.gcf: General Constraint Format
.GDSII: Graphic Design System II, Foundry 最常用的最终版图格式
.lef: Layout Exchange Format
.lib: DC 工具用的库文件格式
.sdf:增量标准延时格式,用作静态时序分析模块 Prime Time 的输入
.spef:标准寄生参数交换格式
.tdf:工艺库对 pad 的定义文件
.tf : Technology File format
.tlf: timing library format
.v: Verilog 源代码
.vhd: VHDL 源代码
.vho:带延时的门级网表文件,用于 vhdl 代码在第三方仿真 tools 下运行
----本人于网上找的资料,仅用于阅读