数字后端流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字后端流程
1. 数据准备。
对于CDN 的Silicon Ensemble而言后端设计所需的数据主要有是Foundry厂提供的标准单元、宏单元和I/O Pad的库文件,它包括物理库、时序库及网表库,分别以.lef、.tlf和.v的形式给出。
前端的芯片设计经过综合后生成的门级网表,具有
时序约束和时钟定义的脚本文件和由此产生的.gcf约束文件以及定义电源Pad的DEF(Desi gn Exchange Format)文件。
(对synopsys 的Astro 而言,经过综合后生成的门级网表,
时序约束文件SDC 是一样的,Pad的定义文件--tdf ,.tf 文件--technology file,Foundry厂提供的标准单元、宏单元和I/O Pad的库文件就与FRAM, CELL view, LM view 形式给出(Milkway 参考库and DB, LIB file)
2. 布局规划。
主要是标准单元、I/O Pad和宏单元的布局。
I/O Pad预先给出了位置,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的区域由工具自动摆放。
布局规划后,芯片的大小,Core的面积,Row的形式、电源及地线的Ring和Strip都确定
下来了。
如果必要在自动放置标准单元和宏单元之后,你可以先做一次PNA(power netw ork analysis)--IR drop and EM .
3. Placement -自动放置标准单元。
布局规划后,宏单元、I/O Pad的位置和放置
标准单元的区域都已确定,这些信息SE(Silicon Ensemble)会通过DEF文件传递给PC(Ph ysical Compiler),PC根据由综合给出的.DB文件获得网表和时序约束信息进行自动放置标
准单元,同时进行时序检查和单元放置优化。
如果你用的是PC +Astro
那你可用write_milkway, read_milkway 传递数据。
4. 时钟树生成(CTS Clock tree synthesis) 。
芯片中的时钟网络要驱动电路中所
有的时序单元,所以时钟源端门单元带载很多,其负载延时很大并且不平衡,需要插入缓冲器减小负载和平衡延时。
时钟网络及其上的缓冲器构成了时钟树。
一般要反复几次才可以做出一个比较理想的时钟树。
---Clock skew.
5. STA 静态时序分析和后仿真。
时钟树插入后,每个单元的位置都确定下来了,
工具可以提出Global Route形式的连线寄生参数,此时对延时参数的提取就比较准确了。
SE把.V和.SDF文件传递给PrimeTime做静态时序分析。
确认没有时序违规后,将这来两个文
件传递给前端人员做后仿真。
对Astro 而言,在detail routing 之后,用starRC XT 参
数提取,生成的E.V和.SDF文件传递给PrimeTime做静态时序分析,那将会更准确。
6. ECO(Engineering Change Order)。
针对静态时序分析和后仿真中出现的问题,
对电路和单元布局进行小范围的改动.
7. Filler的插入(pad fliier, cell filler)。
Filler指的是标准单元库和I/O P
ad库中定义的与逻辑无关的填充物,用来填充标准单元和标准单元之间,I/O Pad和I/O P ad之间的间隙,它主要是把扩散层连接起来,满足DRC规则和设计需要。
8. 布线(Routing)。
Global route-- Track assign --Detail routing--Routing
optimization 布线是指在满足工艺规则和布线层数限制、线宽、线间距限制和各线网可
靠绝缘的电性能约束的条件下,根据电路的连接关系将各单元和I/O Pad用互连线连接起来,这些是在时序驱动(Timing driven ) 的条件下进行的,保证关键时序路径上的连线长度
能够最小。
--Timing report clear
9. Dummy Metal的增加。
Foundry厂都有对金属密度的规定,使其金属密度不要低于一定的值,以防在芯片制造过程中的刻蚀阶段对连线的金属层过度刻蚀从而降低电路的性能。
加入Dummy Metal是为了增加金属的密度。
10. DRC和LVS。
DRC是对芯片版图中的各层物理图形进行设计规则检查(spacing , width),它也包括天线效应的检查,以确保芯片正常流片。
LVS主要是将版图和电路网表进行比较,来保证流片出来的版图电路和实际需要的电路一致。
DRC和LVS的检查--EDA工具
Synopsy hercules/ mentor calibre/ CDN Dracula进行的.Astro also include LVS/DRC
check commands.
11. Tape out。
在所有检查和验证都正确无误的情况下把最后的版图GDSⅡ文件传递给Foundry厂进行掩膜制造
对于数字IC设计而言(我不知道其他方面的怎样,应该大同小异吧):
PAD定义可以用DC自动插入,亦可以采用手动修改网表的办法实现,可以单独使用,DC插入的PAD 会根据所用的库自动选择驱动能力最大的I/O单元,这样往往会超过实际的运动要求,同时增加了所做电路的电流和功耗,不是最佳的,若是手动的哈,是可以根据需要选择库中合适的驱动单元,可是这样你要首先了解你所用的库中这每一个驱动单元具体的规格,好像这个比较麻烦哦~~
定义PAD按照从左到右,从上到下的顺序,定义的语法如下:
pad padName padSide [padOrder] [padOffice] ["reflect"]
比如:
对于电源PAD我们采用手动插入方法,从库中可以查出合适的电源,pvdi与pv0i用于核心供电电源与地,pvde与pv0e用于IO供电的电源与地。
插入网表为:
λpvdi CORE_VDD(.PAD(VDD)); 核心电源
pv0i CORE_VSS(.PAD(VSS)); λ核心地
pvde IO_VDD(.PAD()); IO供电的电源λ
pv0e λ IO_VSS(.PAD()); IO供电地
对于系统时钟引脚、I/O总线引脚、输入与输出引脚通过DC插入。
利用如下命令:
λset_port_is_pad all_inputs()
set_port_is_padλ all_outputs()
set_pad_type -clock clk;指定系统时钟λ
λ set_pad_type -clock rst_n;指定复位信号
set_pad_type –clock ea_n; λ指定使能信号
λ insert_pads
采用上面的命令插入引脚后还需对时钟和地再处理一下,因其只是在时钟和地后面插入了缓冲单元,还需手工修改一下网表。
修改如下:
λpc3d01 pad_clk ( .PAD(clk), .CIN(pad1) );
pc3d01 pad_rst_n (λ .PAD(rst_n), .CIN(pad2) );
pc3c04 U44 ( .CCLK(pad1), .CP(clkb) ); λ
pc3c04 U43 ( .CCLK(pad2), .CP(rst_nb)λ );
由于缓冲单元的大小与引脚单元的大小相当,因此在布局的时候它占用一个PAD的位置。
这就是对PAD的例化。
PAD一般是在综合时加,当然如果全定制版图的话最后是手工加的,
诸如这种形式,在顶层的基础上加一个padtop层:
module padtop (ce,...)
wire cce....;
input ce,...;
...
top topU(.ce(cce),...)
pc3d01 U50 ( .PAD(ce), .CIN(cce) );
pc3d01 U51 ( .PAD(hms), .CIN(chms) );
pc3d01 U52 ( .PAD(vms), .CIN(cvms) );
pt3o03 U53 ( .I(n62), .PAD(eaa) );
pt3o03 U54 ( .I(n63), .PAD(eab) );
...
pvdi cU50 ( .PAD() );
pv0i cU51 ( .PAD() );
pvdi cU52 ( .PAD() );
...
pvde pU70 ( .PAD() );
pv0e pU71 ( .PAD() );
pvde pU72 ( .PAD() );
p14frell corner1 ();
p14frelr corner2 ();
....
Warning: Target library has no pads in it. No pads inserted. (OPT-1011)
Error: Insert pads terminated abnormally. (OPT-1008)
普通PAD没什么特别的。
Power PAD需要综合后手动加到网表中进行PR。
有两个办法:
1,在设计的顶层模块例化PAD模块,把PAD当作blackbox在综合时设置成dont_touch;2,直接在综合后的网表中例化PAD;
个人愚见,还请高手详解。