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开始)
例:一个完整的设计
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
00——Phsical Design初稿2021-09-06上午相关推荐
- 2021/09/06 Terraform 从入门到精通(二)
P38 Route53 demo 在这个演示中,我将向你展示Route 53如何使用Terraform.这里我们有一个文件"route53.tf".有一个资源"aws_r ...
- 投票服务器维护时间,2021年06月21日维护预览,合服投票结果公布!
原标题:2021年06月21日维护预览,合服投票结果公布! 亲爱的玩家,大家好!!又到了每周的维护预览时间! 以下是本周维护内容: 1.本周维护之后, 新资料片<天粹英华>将在 局部服 ...
- 橘子CPS联盟操作手册2021.09
橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...
- 【跃迁之路】【578天】程序员高效学习方法论探索系列(实验阶段335-2018.09.06)...
[跃迁之路][578天]程序员高效学习方法论探索系列(实验阶段335-2018.09.06) @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航, ...
- 从腾讯朋友圈揭秘内部AI部门竞争关系,谁能像微信当年一样熬出头? By 微胖2017年11月10日 09:06 撰文 | 宇多田 在腾讯合作伙伴大会上,腾讯首席运营官任宇昕提出的「AI in All」
从腾讯朋友圈揭秘内部AI部门竞争关系,谁能像微信当年一样熬出头? By 微胖2017年11月10日 09:06 撰文 | 宇多田 在腾讯合作伙伴大会上,腾讯首席运营官任宇昕提出的「AI in All」 ...
- 2021.09.27 MySQL笔记
2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...
- 实习日志 (2021.09.13)
2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...
- 2021.09青少年软件编程(Python)等级考试试卷(三级)
2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...
- 2021.09.24—皮皮与帅帅的第二篇情话
2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...
最新文章
- icinga的idoutils插件
- 沿任意方向缩放、镜像、正交投影及切变及其推导
- 逆向查找_CTFer成长之路--一道数独逆向题目解题过程(算法分析、查找线索)...
- 为什么孙悟空能大闹天宫,却打不过路上的妖怪?
- Windows 7下实现×××连接自动创建
- C++——必须使用复制构造函数的情况
- oracle12cr2发布时间,Oracle 12cR2 发布在即
- 高性能MySQL读书笔记 (五)
- 关于BTA12-600B双向可控硅应用中遇到问题的思考
- 书名带冒号_冒号_冒号的用法和作用_冒号怎么打_标点符号网
- mysql数据驱动测试_[ddt02篇]十年测试老鸟帮您解析:ddt结合excel,csv,mysql实现自动化测试数据驱动...
- Stopping service [Tomcat]和Disconnected from the target VM排查
- 全屏的微粒子3D动画特效
- C++11中的时间库std::chrono(引发关于时间的思考)
- java nul 字符_Java字符串替换和NUL(NULL,ASCII 0)字符?
- python库numpy使用技巧(二)——随机抽取二维矩阵中多行或多列
- 【陈工笔记】# 期刊 # Elsevier 期刊的投稿模板
- 2021年中国低代码行业白皮书
- 计算机bootmgr丢失,bootmgr丢失无法开机
- 关于智慧城市的中对智慧的理解