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

一、数字后端流程

前端从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优化
定时优化的任务包括:

  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(触发器)

在这里插入图片描述
将单个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,自动绕线,如果不通就干预

在这里插入图片描述
绕线的目的是:
❑ 用金属线物理连接逻辑单元。
❑ 让连线绕线最短和面积最小化。
❑ 尽可能减少图层的变动次数以建立连接。

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

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值