天天看点

00——Phsical Design初稿2021-09-06上午

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开始)

00——Phsical Design初稿2021-09-06上午

例:一个完整的设计

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
           
00——Phsical Design初稿2021-09-06上午
00——Phsical Design初稿2021-09-06上午
gds.lib放在一个文件夹里

1.DATA preparation——数据准备

00——Phsical Design初稿2021-09-06上午

·Pin list file→PPA file——port信息:IO的顺序、摆放、位置

00——Phsical Design初稿2021-09-06上午

Floorplan 平面图:摆放IP、IO

00——Phsical Design初稿2021-09-06上午

布图规划是应用板设计的体现。

·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

00——Phsical Design初稿2021-09-06上午
  • 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)

00——Phsical Design初稿2021-09-06上午

手动放置位置,写了用到的层和金属

LEF、Timing lib在IP库里都会带

LEF Cell View(Milkyway参考库(ref文件))

00——Phsical Design初稿2021-09-06上午

只描述到M1,底层无所谓,还会写上PIN的位置

图形是由下面的代码转化的

·Gate level Netlist 门级网表——Verilog

体现与标准单元的关系,是从前端给的。

参考:什么是门级网表
00——Phsical Design初稿2021-09-06上午

·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
           
00——Phsical Design初稿2021-09-06上午

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需要优先考虑

00——Phsical Design初稿2021-09-06上午

优先考虑一些特殊要求,比如:

  • 距离相等
  • 数据不需要同时到达
  • 时钟和数据都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小供电最好

00——Phsical Design初稿2021-09-06上午

Floorplan adjustment 调整

00——Phsical Design初稿2021-09-06上午

布局→place→尝试绕线→时序收敛

由routable和Timing判断Floorplan合不合理
  • Floorplan:微调SRAM位置,检查电源plan,调整芯片size,添加布线金属等
  • Placement:创建place guide,设置模块密度,保留布线通道等

Power Distribution(power plan)——配电

把需要供电的吃到电,减少压降

RDL和metal7用线连起来

00——Phsical Design初稿2021-09-06上午

配电的目标是:

•连接电源pads和逻辑单元的VDD/VSS之间的金属线。

•将压降降至最低

•尽量减少地弹(ground bounce)

•VDD压降和VSS地弹之和小于5%*VDD(静态)

Placement

stdcell的place是工具自动完成的,placement是把stdcell拼起来
00——Phsical Design初稿2021-09-06上午

1.平面图决定stdcell的放置位置。

2.每个cell等高不等宽。

3.放置在row上。

placement的目标是——

❑ 确定cell的位置。

❑ 最小的timing violation and congestion(时序冲突和拥塞)。

3.Timing 优化

原因

解决timing violation,修复wire load线负载模型 (预估stdcell之间的连线)和真实的RC loading的差距

前端拿来的是理想的,后端有真实绕线
00——Phsical Design初稿2021-09-06上午

物理层的面积 placement远大于线负载区域

方法

如何进行timing优化

定时优化的任务包括:

  1. 首先,清除max、load max、transition冲突。(会导致大的delay)
  2. 清除setup/hold的time violation冲突。
  3. 最大限度地减少关键path的延迟。
  4. 触发器脉冲(flip flop pulse)宽度检查。(最小宽度)
  5. clock负载检查。(高电平)

Timing优化的办法包括:

  1. 调整up/down cell的大小

    ——同一段功能不同size的stdcell,驱动不够所以要增大减小size

  2. 插入缓冲区(buffers) ——距离过远
  3. split loading分载 64→32*2这样分裂
  4. 重构/复制

4.Clock Tree Synthesis(CTS)

原因:为了同步所有的flip-flops(触发器)

00——Phsical Design初稿2021-09-06上午

将单个clock net转换为多级缓冲树,因为cell的驱动能力

前端不需要buffer(缓冲)→后端需要接太多flip-flops(触发器→为了时钟同步→同步delay)。为了增加驱动必须接buffer降loading

目标

  1. 缩小clock skew——最大和最小的delay的差值(越小越好,能容易的修复setup/hold的时序冲突 time violations)
  2. clock transition time最小——couple noise(耦合噪音)变小;clock jitter(时钟抖动)变好
  3. 更少的clock缓冲来降低power功耗——功耗占full chip的20%~30%
  4. 最小的clock buffer level——降低OCV和clock jitter时钟抖动

5.Routing 绕线

stdcell之间;ip和stdcell之间有连线在netlist里,在这步接M2接stdcell的pin,自动绕线,如果不通就干预
00——Phsical Design初稿2021-09-06上午

绕线的目的是:

❑ 用金属线物理连接逻辑单元。

❑ 让连线绕线最短和面积最小化。

❑ 尽可能减少图层的变动次数以建立连接。

6.Verification验证

00——Phsical Design初稿2021-09-06上午

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

继续阅读