P&R 6
Floorplan:
要做好floorplan需要掌握哪些知识跟技能?
通常,遇到floorplan问题,大致的debug步骤跟方法有哪些?
如何衡量floorplan的QA?
Floorplan基本上是后端硅农最花时间的部分,一般是在解决三个问题:
IP、MEM、I/Opin、PAD/BUMP规划:琐碎重复且龟毛,可能就是在讲一个后端工程师在摆floorplan,经常的经历就是试过9527个FP后最后才发现第一个结果最佳。一般跟前端要一份data flow再去搞FP是明智选择,当然同时有前端详解各个不同模块的之间的联系和时序约束那是更棒。IP/IO的文档内一般会有一些place&route的建议,比如PLL周边的是否需要place halo/Litho,端口接线层次要求、方式(是否直连不可交叉),不可与哪些device临近摆放。
各种physical cell的放置:WELLTAP、ENDCAP、DECAP、PowerSwitch这些玩意儿在前端的世界里不代表什么,而跑到后端的世界里属于稍有闪失便会DRCfail 甚至打回重来的窘迫境地。熟读FAB提供的DRC file必要至极,各种基于DRC、DFM、甚至是后期PV tool run time的考量都会收录其中。
Power plan:想要chip跑的快,供电不足怎么行,FP里占比重较大的一部分就是Power plan,怎么创建一个合理且强壮的power network,上能绕线欢畅不阻塞,下可静态动态不降压,一般成熟case会有一个沿用的Power plan结构,而新开case也不担心,可以拿DRC file里各互联层的max density为上限参考,多跑几版给Power analysis tool去确认。通常都会建议FP完成后去做一些P&R工具内部的verify,检查Physical cell之间有否place violation,检查power 有否缺via有否short,更稳妥的可以做个快速placement然后填满fill去跑 DRC&PA。DRC关注baselayer的问题,看有无Latch up问题或者边界cell冲突,PA可以大致看下power network有否特别薄弱的地方,看到一些犄角旮旯的遗漏问题。
就像clock skew和clock latency是检查cts QA的标准一样,floorplan QA的标准应该是placement结果,打开place data一看便知,关键路径所在模块是否被别的模块在place阶段冲的七零八落溃不成军?共享mbist的memory是否鹊桥相望天水一方?好好的两个REG有无翻越Macro去talking?
Placement:
要做好placement需要掌握哪些知识跟技能?
通常,遇到placement问题,大致的debug步骤跟方法有哪些?
如何衡量placement的QA?
Placement有三板斧,叫推开、聚拢、强锁死。
推开:常见做法是padding,可以是为了double height或者多pin的复杂组合逻辑甚至是整个routing congestion过多的module预先占routing resource,也可以是PA hot spot点大面积聚集时分散power mesh的压力。
聚拢:基本就是搞小团体,用instance group把希望在一起的inst, module, macro 撮合在一起。虽然P&R工具现在对path的分析优化能力越发强劲,但合理的group至少对runtime是福音。
强锁死:有时候有些inst在一万次place后发现无论怎样工具都没法给予非常合适的位置,就会需要用到一些强制锁定的小花招,比如pipeline打拍的DFF、DFT插入的某些mux、为了tree balance预先加入的anchor buffer都可以是强锁死的对象。
Placement遭遇的问题一般是timing导向或者congestion导向的,一个涉及timing可否meet,一个影响最后routing会不会有short或drc。一般都会根据timing report去调整inst group、region甚至重做整个FP或者调整sdc通过适度过约束来收敛timing;根据congestion map去预防之后可能存在的绕线问题,overflow是一个重要参考参数,而且现在的P&R工具基本都会引入合理的估算来模拟例如clock net因为应用了什么样的NDR而占据更多绕线资源的情况,使得place阶段的情况更接近最后的routing的情况。
CTS:
要做好CTS需要掌握哪些知识跟技能?
通常,遇到CTS问题,大致的debug步骤跟方法有哪些?
如何衡量CTS的QA?
CTS全称时钟树综合,是数字物理设计实现中最为关键的一步,一个好的时钟树可以有效保证绕线前后时序一致性。做好时钟树综合需要的知识技能没有特别的,STA是基础,然后同时对设计工艺有所熟悉,比如clock cell 类型,绕线层次等。
CTS的问题通常主要有skew不满足(平衡型时钟树设计),树长过长等。以innovus为例,我们可以首先拿一个place db做一个快速的时钟树,set_ccopt_mode -cts_opt_type cluster ; ccopt_design-cts. 做完一个这样的时钟树,工具只修复了slew,并没有考虑时钟树平衡,这个阶段我们可以分析最长的时钟路径出现在哪,结合图形界面分析是否是placement不合理。同时我们也可以做一个快速的时钟树平衡,set_ccopt_mode -cts_opt_type trial; ccopt_design -cts.这是工具最理想状态做时钟树,通常这个阶段工具没法满足skew要求,到后期也不会满足,结合LOG信息我们可以快速定位是哪些sink不能做平。
通常评判时钟树质量主要是两方面,第一是反应时钟树功耗方面的,比如时钟树cell数量以及面积,时钟树线长。另外就是时序上的指标,比如时钟树insertiondelay, slew time, skew等。通常两个方面是互相关联的。
时钟树综合目前有两种设计理念,一是传统的平衡时钟树,另一种是cadence主打的时钟树并行时序优化。第一种旨在减小时钟树到不同sink点的差异,满足时序与否主要取决于数据路径。第二种建立在一个大致平衡的时钟树网络基础上,动态调整时钟树到不同sink的长短,结合数据路径的优化最大程度推高频率。通常,第二种设计方法用于高性能设计中比如CPU。
Route:
要做好Route需要掌握哪些知识跟技能?
通常,遇到Route问题,大致的debug步骤跟方法有哪些?
如何衡量Route的QA?
在先进工艺,绕线的工作越来越主要依赖于EDA工具的进步以及对先进工艺各种设计规则的支持。当然这并不代表PR工程师没有事情可以做了。绕线的好坏通常在flooplan阶段就决定了,我们要对设计的规格要非常熟悉比如金属层次,powermesh结构,macro 摆放等。
绕线问题最直观的体现就是DRC,我们可以结合Innovus route DB来分析。首先看DRC是零散分布还是集中出现在某些区域,通常这个和floorplan 有关,比如macro摆放,IO pin分布,细小沟道等。再结合金属层次具体分析,比如大量的DRC出现在出pin层M1,我们就要看看是否powermesh存在不合理,M1的spacing 和track 的offset选择是否合理考虑到了instance的pin access 。
首先是DRC clean,其次是是否有效合理利用金属层,在关键路径上是否出现大量的detour,是否合理规避SI的出现。
Innovus最大的优势是并行运算能够快速修DRC,而且能够保障可复现性。Innovus在先进工艺尤其16nm以下,对double pattern 的设计规则有更加成熟和有效的支持。
另外现在innovus基于时序的绕线也越来越强大,更加合理安排绕线资源,让时序收敛。
DRC:
要做好DRC需要掌握哪些知识跟技能?
通常,遇到DRC问题,大致的debug步骤跟方法有哪些?
对于数字P&R来说一般会遇到的DRC问题集中在两部分,一部分是在P&R工具内部的可检查出的DRC,或是因为某些std cell的本身因为cell layout的关系造成的某些cell内部的obs会跟特定方向走线有violation,或是特定某几个cell之间abut一起会有drc。另一部分是只能在PV工具出现在P&R工具内无法发现的问题,原因是各种各样,可能是PV工具的run set与PR工具的tech file并不一致,可能是GDS和LEF在互转中出现精度问题,甚至可能就是tool bug。前者现在某些FAB大厂常会提供一份针对cell的约束来防止以上问题,但也不排除遗漏需要自己去做一些补充约束。后者需要仔细定位问题发生的节点,是tech还是gds,然后及时跟FAB或EDA厂商沟通更新出问题的部分。初入行时听过一句话叫做没有修不掉的DRC,没有压不了的chip size,对于TO时间至上的后端来说,某些问题甚至要用一部分手动干预 (routing blockage )的方式解决,但因为工艺的变迁,10nm、7nm节点的DRC rule数量相较以前几乎是指数级别的增加,千万不要尝试用完全手动的方式去修正一个绕线密集区的space, enclosure, EOL问题,否则修一个DRC下一轮冒一百个的结果分分钟教你做人。
P&R 6的更多相关文章
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 利用python进行数据分析2_数据采集与操作
txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?
0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...
- 应用r.js来优化你的前端
r.js是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器的文件请求.要使用 ...
- 使用R画地图数据
用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. ...
- c#使用Split分割换行符 \r\n
c# 使用Split分割 换行符,方法如下(其余方法有空再添加): string str = "aa" + "\r\n" + "bb"; ...
- JAVA调用R
JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的 ...
- Windows Form调用R进行绘图并显示
R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上. 1 前提准备 安装R软件,需要安装32位的R软件,6 ...
- react-native Simulator com+r不能刷新模拟器
这个问题是我按了com + shift + K 调出Simulatior 的时候出现的, 然后虚拟机就刷新不了了, 怎么按com+r都不好使. 在Simulatior的菜单栏选择Hardware -- ...
随机推荐
- LINUX使用SSH远程终端时,如何将运行时间长的程序在后台挂起,下次SSH登陆时继续使用同一个SHELL?
我在某个平台上购买了一个云服务器,LINUX操作系统无图形化界面,硬盘空间较小.虽然在平台上可以通过其自带网页版VNC界面登陆SHELL进而操控云主机,但是每次需要操控都得打开网页登陆进平台,然后再进 ...
- Python RSA
# -*- coding: utf-8 -*- from Crypto import Random from Crypto.Hash import SHA from Crypto.Cipher imp ...
- 小匠_碣 第三周期打卡 Task06~Task08
Task06:批量归一化和残差网络:凸优化:梯度下降 批量归一化和残差网络 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0.标准差为1. 标准化处理输入数据使各个特征的 ...
- C++-数据抽象入门
一.假定数据是如何存储的 隐藏某些实现逻辑时,我们是想要隐藏绘制子弹的细节.我们是通过使用一个可以调用的函数,而不是直接写出绘制子弹到屏幕上的代码来实现的.这里同样可以使用一个函数来隐藏棋盘存储的细节 ...
- django入门与实践(续)
完善博客 博客页面设计 页面概要 1.博客主页面 主页面内容 文章标题列表,超链接 发表博客按钮(超链接) 列表编写思路 取出数据库中所有文章对象 将文章对象们打包成列表,传递到前端 前端页面把文章以 ...
- vs2019 scanf 解决 C4996问题
1. 首先选择项目 2. 然后选择最下面那行的 工程属性, 其后于此处 3. 添加上 :_CRT_SECURE_NO_WARNINGS 最后保存,使用 scanf 读取即无报错了
- cmd命令和快捷键
命令 含义 盘名: 从C盘到其他盘时输入 dir 查看当前文件夹下的内容 cd 目录名称 选择目录 cd.. 退回当前目录的上一级目录 cd\ 回到根目录 md 目录名称 创建目录 rd 目录名称 删 ...
- 3.创建springboot程序
有两种方式创建springboot项目 第一种方式:在官网上创建(基本上不用) Spring官方提供了非常方便的工具 Spring Initializr:https://start.spring.io ...
- java_基础_注解
注解(annotation),不是注释(comment) 注解可以对程序做说明,这一点和注释一样但是,注解还可以被其他程序读取,这是注释所不具备的 内置注解:@Override(表示重写父类方法)—— ...
- 每天进步一点点------Allegro 建立封装的一般步骤
在制作封装之前,先确定你需要的焊盘,如果库中没有,那就要自己画了,(我就是自己画的) 制作二极管1N5822 SMD,实际尺寸:480milX520mil 一.添加元件焊盘 1 启动Allegro P ...