00——Phsical Design数字后端
-
- 一、数字后端流程
-
- 例:一个完整的设计
- 1.DATA preparation——数据准备
-
- ·Pin list file→PPA file——port信息:IO的顺序、摆放、位置
-
- Floorplan 平面图:摆放IP、IO
- ·Wire Bond and Finger Map
-
- Wire Bonding 接口文档
- Finger Map
- ·LEF(Library Exchange File) 库交换文件
-
- LEF Header(Tech File)
- LEF Cell View(Milkyway参考库(ref文件))
- ·Gate level Netlist 门级网表——Verilog
- ·RC tech file(RTL Compiler)
- ·timing constraints(SDC)
- Timing Library(NLDM,CCS,ECSM)
- First Place and Don't Touch
-
- First Plac——部分IP需要优先考虑
- don‘t touch
- 2.FloorPlan & Place——平面布置图&摆放(自动)
-
- power、IO & blocks
- Floorplan adjustment 调整
- Power Distribution(power plan)——配电
- Placement
- 3.Timing 优化
-
- 原因
- 方法
- 4.Clock Tree Synthesis(CTS)
-
- 原因:为了同步所有的flip-flops(触发器)
- 目标
- 5.Routing 绕线
- 6.Verification验证
-
- STA Setup/Hold
- Formal Function check
- SI Glitch check
- Power Simulation/Low Power check
- DRC/LVS
- DFM
一、数字后端流程
前端从RTL→Netlist→PR后端(后端从scan netlist开始)
例:一个完整的设计
module add_decoder_x (mem0,mem1,cs,en,add);
output mem0,mem1,cs;
input en;
input [31:30] add;
reg mem0,mem1,cs; /*register是寄存器的意思*/
always 0 (add or en)
begin
(mem0,mem1,cs)=3'b0;
casex({add,en})
3'b101 : mem0 = 1'b1;
3'b111 : mem1 = 1'b1;
3'b0?1 : cs = 1'b1;
endcase
end
endmodule
gds.lib放在一个文件夹里
1.DATA preparation——数据准备
·Pin list file→PPA file——port信息:IO的顺序、摆放、位置
Floorplan 平面图:摆放IP、IO
布图规划是应用板设计的体现。
·Wire Bond and Finger Map
Wire Bonding 接口文档
这个文档是design house和封装厂的接口。它描述了设计者对于芯片的封装要求。封装厂会根据这份文档完成封装设计,其结果需要design house的设计工程师确认。
Bonding Map中含有的信息包括,封装类型、die size、scribe line和seal ring宽度,还有PAD opening的尺寸和坐标。这些坐标通常是后端工程师从版图中提取的,前端工程师需要计算一下是否合理。最后还有最重要的,就是wire bonding的信息。它指定了每一个PAD opening需要bonding到哪一个finger,哪些PAD之间需要做bonding,哪些PAD需要bonding到substrate,哪些bonding是需要多根wire的。multi-wire bonding有助于减小电感,抑制SSN,当然其缺点是增加了成本。
Finger Map
- Ball assignment and bonding consider sufficient S.I. and power quality.
-
Pad assignment correspond to substrate design rule.
引脚排列方式符合design rule
·LEF(Library Exchange File) 库交换文件
LEF Header(Tech File)
手动放置位置,写了用到的层和金属
LEF、Timing lib在IP库里都会带
LEF Cell View(Milkyway参考库(ref文件))
只描述到M1,底层无所谓,还会写上PIN的位置
图形是由下面的代码转化的
·Gate level Netlist 门级网表——Verilog
体现与标准单元的关系,是从前端给的。
参考:什么是门级网表
·RC tech file(RTL Compiler)
用来提取电容文件,是工厂给的
·timing constraints(SDC)
设计约束(时序约束),是前端给的
对信号的约束
create_clock -name {CLKR_TSTCLK_v0} -period 10 -waveform { 0.000 5.000 } /*> -period 10 —— 周期10
> -waveform{0.000 5.000} —— 上升沿0-5*/
set_multicycle_path -through [list \
[get_pins AUX_TOP/U_EXTHOSTBRIDGE_AUX/WDATAFIFO/G13299/Y] \
-to [get_pins AUX_TOP/U_EXTHOSTBRIDGE_AUX/F2/G13445/Y] ] -setup -end 2
Timing Library(NLDM,CCS,ECSM)
定义power、pin、电容等约束
pin(Y) {
• direction : output ;
• function : "(A&B)" ;
• max_capacitance : 1.3113 ;
• max_transition : 2 ;
• min_capacitance : 0.001 ;
• internal_power() {
• related_pin : "A" ;
• when : "B" ;
• fall_power(pwr_tin_oload_7x7) {
• index_1("0.03, 0.0654369, 0.189828, 0.427371, 0.797451,1.31672, 2");
• index_2("0.001, 0.024571, 0.10731, 0.26531, 0.51147, 0.85686, 1.3113");
• values("0.0219344, 0.0224672, 0.0229511, 0.0230905, 0.0231408, 0.0231651, 0.0231768",\
• cell_rise(tmg_ntin_oload_7x7) {
• index_1("0.03, 0.0654369, 0.189828, 0.427371, 0.797451, 1.31672, 2");
• index_2("0.001, 0.024571, 0.10731, 0.26531, 0.51147, 0.85686, 1.3113");
• values("0.09922, 0.138288, 0.25111, 0.461, 0.787618, 1.2452, 1.84572",
First Place and Don’t Touch
First Plac——部分IP需要优先考虑
优先考虑一些特殊要求,比如:
- 距离相等
- 数据不需要同时到达
- 时钟和数据都from/to IP模块
IP指设计好的可以移植到别的芯片中的模块(可以是电路或者是版图),能够买卖
don‘t touch
1.SDC文件无法约束此类路径。
2.通过手动逐个打开,set_max_delay设置最大延迟,或set_min_delay设置最小延迟来检查延迟。
IP模块的的timing library几乎都是假的。
3.对于我们来说,develop a mix model flow to signoff the interface非常重要
2.FloorPlan & Place——平面布置图&摆放(自动)
power、IO & blocks
1.根据PPA文件放置IO和IP。
2.微调每个SRAM和模块位置。
3.优先考虑first place关键cell。
4.power planning。
floorplan的目标是:
◆ 物理blocks的分区设计。
◆ 决定IO pads的位置、power pads的数量/位置和配电。
◆ 最小的congestion(拥塞)和关键path delay。
◆ 使芯片尽可能致密。
撑面积解决问题,chip小供电最好
Floorplan adjustment 调整
布局→place→尝试绕线→时序收敛
由routable和Timing判断Floorplan合不合理
- Floorplan:微调SRAM位置,检查电源plan,调整芯片size,添加布线金属等
- Placement:创建place guide,设置模块密度,保留布线通道等
Power Distribution(power plan)——配电
把需要供电的吃到电,减少压降
RDL和metal7用线连起来
配电的目标是:
•连接电源pads和逻辑单元的VDD/VSS之间的金属线。
•将压降降至最低
•尽量减少地弹(ground bounce)
•VDD压降和VSS地弹之和小于5%*VDD(静态)
Placement
stdcell的place是工具自动完成的,placement是把stdcell拼起来
1.平面图决定stdcell的放置位置。
2.每个cell等高不等宽。
3.放置在row上。
placement的目标是——
❑ 确定cell的位置。
❑ 最小的timing violation and congestion(时序冲突和拥塞)。
3.Timing 优化
原因
解决timing violation,修复wire load线负载模型 (预估stdcell之间的连线)和真实的RC loading的差距
前端拿来的是理想的,后端有真实绕线
物理层的面积 placement远大于线负载区域
方法
如何进行timing优化
定时优化的任务包括:
- 首先,清除max、load max、transition冲突。(会导致大的delay)
- 清除setup/hold的time violation冲突。
- 最大限度地减少关键path的延迟。
- 触发器脉冲(flip flop pulse)宽度检查。(最小宽度)
- clock负载检查。(高电平)
Timing优化的办法包括:
-
调整up/down cell的大小
——同一段功能不同size的stdcell,驱动不够所以要增大减小size
- 插入缓冲区(buffers) ——距离过远
- split loading分载 64→32*2这样分裂
- 重构/复制
4.Clock Tree Synthesis(CTS)
原因:为了同步所有的flip-flops(触发器)
将单个clock net转换为多级缓冲树,因为cell的驱动能力
前端不需要buffer(缓冲)→后端需要接太多flip-flops(触发器→为了时钟同步→同步delay)。为了增加驱动必须接buffer降loading
目标
- 缩小clock skew——最大和最小的delay的差值(越小越好,能容易的修复setup/hold的时序冲突 time violations)
- clock transition time最小——couple noise(耦合噪音)变小;clock jitter(时钟抖动)变好
- 更少的clock缓冲来降低power功耗——功耗占full chip的20%~30%
- 最小的clock buffer level——降低OCV和clock jitter时钟抖动
5.Routing 绕线
stdcell之间;ip和stdcell之间有连线在netlist里,在这步接M2接stdcell的pin,自动绕线,如果不通就干预
绕线的目的是:
❑ 用金属线物理连接逻辑单元。
❑ 让连线绕线最短和面积最小化。
❑ 尽可能减少图层的变动次数以建立连接。
6.Verification验证
STA Setup/Hold
28HLP sta标准
电压是0.9*C
Formal Function check
SI Glitch check
Power Simulation/Low Power check
DRC/LVS
DFM
52.sram的位置会影响摆放、timing和绕线
53.如何摆放sram 一般是一大片出现
每个module关系比较近的要靠在一起 按G找一个group的
54.congestion解决不掉就要重来
55.时序收敛
优化时序之前要
看timing report
分析摆放
解决congestion问题
完成CTS之后要确认你的verilation
56.时序收敛的方法
57.绕线资源紧张会发生short
不能发生congestion issues