P&R 4
Floorplan
要做好fp需要掌握哪些知识和技能?
通常遇到fp问题大致的debug步骤和方法有哪些?
如何衡量fp的QA?
通常FP是做PR 最关键也最具技术含量的一个环节。相对于后续的PR步骤,工程师对fp有着很大的自主权,但同时对工程师专业知识的广度和深度都有着较高要求。如果你需要负责一个有一定规模的芯片的顶层FP设计,那么你需要具备以下方面的知识。
网表层次结构和dataflow:一般情况下同一hierarchy下的memory在做FP时是放在一起的,它们的位置并没有硬性的规定,但是memory的位置会影响到stdcell的摆放,进而影响到最后timing的收敛,所以fp的designer需要了解整个design的dataflow,知道模块间的数据流向和交互,以此为依据来推算出每个模块所对应的memory的摆放位置。此外对于规模较大的FP,顶层FPdesigner还需要做一些模块切分,划分出一些规模较小的sub-block,以此来缩短整个芯片的设计周期。这也要求designer对网表结构,模块规模有较深的认识。
timing constraint (SDC):SDC里定义了时钟的名字,源头和频率,所以designer必须了解SDC才能分辨出design中哪个clock和相关的memory是最关键的,哪些是相对比较容易满足timing要求的,再据此来安排FP的摆放。
芯片封装类型,以及所使用到的IO和 IP的工作特性:顶层FP的设计还需考虑到芯片所选用的封装类型(比如flipchip或wirebound),不同的封装形式对IO的要求也是不同的。另外一些特殊IP(比如一些模拟器件)也会有一些特殊的物理设计需求,比如它的位置由于封装的原因可能是固定的,不能随便安放;它pin上的金属线连接有特定的电阻和电容要求等。所以在做FP之前,必须熟读IPvender提供的user guide。
芯片所用工艺对FP 的特殊要求:不同的工艺对FP的要求也是不同的。在以前比较老旧的工艺节点上,特殊的FP要求并不多。但进入先进工艺节点后,尤其是进入FinFET工艺后,foundry对FP有许多特殊要求,比如cell不能随便翻转,需要加TAP CELL, BOUNDARY CELL,需要创建一些特殊的row或者layer等。所以必须对相关工艺节点的知识有充分的了解。
UPF和low power的相关知识:如果你做的是一个带UPF的low power design,那么你还必须掌握一些low power的知识和技术。比如power switch一般都是FP designer来创建,power switch的数量,分布和连接都需要designer通过分析和多次迭代尝试来得到。
Power分析的相关知识:对于FP来说,供电网络(PGnetwork)的创建也是一个难点,用哪几层金属做PG连线,用多大的pitch,多宽的线宽,什么样的连接方式都不是一口就能答上来的问题。PG线太宽会减少signal route的资源,太窄会有IR drop和EM的问题。所以FP designer还需要和做power分析的人合作来确定一个合适的PG网络。
由于FP所涉及的因素和环节比较多,很难总结出debug fp问题的一些通用的方法和流程。我的建议是可以在早期就做一些FP的DRC check,还有IO ring的单独的LVS,让潜在的问题尽量在早期暴露出来,避免时间上的浪费。另外也是在早期去做一些power分析,检查电源网络是否满足IR drop和EM的要求。
衡量一个FP的好坏并没有一个固定的标准,一般来说能使得后面的PR流程顺利进行下去,能满足timing,DRC,power要求的FP都是一个成功的FP。当然,也有一些固定的指标我们是可以去考量的,比如说尽量少的面积浪费(节约成本),尽量多的block reuse(减少人力成本)等。此外,对于同一个design,如果你做出的FP和其他人相比能更快的达到timing和DRC收敛,那么我们会认为你的FP的QA高于其它FP。
Placement
要做好placement需要掌握哪些知识和技能?
通常遇到placement问题大致的debug步骤和方法有哪些?
如何衡量placement的QA?
相比FP,Placement更多的是对EDA工具能力的考验。所以,对工具的掌握也就成了最重要的一个技能。Designer需要知道工具有哪些命令或者变量是可以优化timing的,哪些命令可以优化power。当然designer也需要清楚design的特性才能更好地使用工具,精准地找到对应的命令和flow。比如你需要知道你的design难点在哪里,是timing还是congestion,针对不同的困难你所需要的flow也不同。
通常遇到的placement的问题都和timing或者congestion有关。Timing violation较大时,可以先报出WNS对应的timingpath并逐行分析,看看有没有不合理的cell delay或者net delay。如果有,再分析是由什么原因引起的,是FP不合理造成的还是工具行为不合理造成的,然后再做出相应的调整。如果是FP引起的,还需要调整FP再重新跑placement。如果遇到congestion严重的情况,一方面可以调整工具的一些选项或命令,另一方面也有可能需要调整FP。
衡量placement的结果也是基于PPA三个指标,timing、power合理,没有congestion的问题,我们就认为placement的结果能够接受,可以接着进行后续的PR步骤。
合理的timing WNS和TNS
合理的congestion overflow
合理的cell density (std utilization一般不能增加太多)
CTS
要做好CTS需要掌握哪些知识和技能?
通常遇到CTS问题大致的debug步骤和方法有哪些?
如何衡量CTS的QA?
做CTS需要了解和考虑的要点:
工具做CTS的主要feature和命令
时钟结构,主时钟及频率,最快时钟及频率
Library中clock buffer/inverter 的特性
Clock需要用到的NDR rule
如何做func mode和scan mode的CTS
做CTS遇到问题的时候大多数情况下designer都需要用工具报出clock path,看看CTS的问题具体发生在哪个节点,然后还需trace clock structure,看看时钟树的连接关系,找出问题原因。
衡量CTS QA的因素:
较短的clock latency
较小的clock skew
ROUTE
要做好route需要掌握哪些知识和技能?
通常遇到route问题大致的debug步骤和方法有哪些?
如何衡量route的QA?
做ROUTE需要了解和考虑的要点:
工具做ROUTE的主要feature和命令
Design所用到的工艺的物理特性
Design中是否有特殊绕线要求的net存在
如何尽量避免noise的影响
常见的route问题:
大量routingDRC:可能是routing congestion引起的,可以通过查看congestion map来检查,如果是由于congestion引起,可能需要修改fp,或改变placement流程来改善congestion情况。
如果大量DRC都是发生在同一cell类型上,可能是这个类型的cell的layout出现问题
有可能是不恰当的routing设置引起大量的DRC。
衡量route QA:
DRC 数量越少越好
Noise越小越好
Total Routing length 较短
较少的clock buffer/inverter 数量
DRC
要做好DRC需要掌握哪些知识和技能?
通常遇到DRC问题大致的debug步骤和方法有哪些?
解决DRC问题主要要了解相关工艺的design rule,只有这样才能真正理解DRC violation的意义和原因。
P&R 4的更多相关文章
- [原]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 -- ...
随机推荐
- nginx 部署php项目 404
服务器重启了一下 然后访问程序报错404的情况 文件存在位置没有问题 niginx配置根目录没有问题 最后检查到端口的时候发现php-fpm的9000端口未打开 service php-fpm res ...
- 设置一个数量不定item的位置
let dis;//item宽度加item之间gap的宽度item.setPosition((i<arr.length/2?-1:1) * Math.abs(i - arr.length/2 + ...
- python:文件读写
#!/usr/bin/python# -*- coding:utf-8 -*- #!/usr/bin/python# -*- coding:utf-8 -*- file1 = open('a.txt' ...
- python数据赋值后,修改新数据,原数据如何保证不被修改?
python中对象,赋值后是同一地址,如果是可变对象,对其中一个修改会影响到另一个,如果要生成完全新的对象,应使用deepcopyimport copydata1=copy.deepcopy(data ...
- vector 牛逼 +lower_bound+ upper_bound
vector 超级 日白 解决的问题空间问题,可以自由伸缩. 一下用法: 向量大小: vec.size(); 向量判空: vec.empty(); 末尾添加元素: vec.push_back(); / ...
- how to activate XMind8 to pro version.
From activate Xmind 8. in step 3: run ./setup.sh in sudo command, and use the following command to r ...
- zookeeper入门之介绍与安装
一:zookeeper是什么 What is ZooKeeper? ZooKeeper is a centralized service for maintaining configuration i ...
- JS高级---函数的几个成员
函数的几个成员 函数中有一个name属性----->函数的名字, name属性是只读的, 不能修改 函数中有一个arguments属性--->实参的个数 函数中有一个length属性--- ...
- JS高级---一个神奇的原型链
一个神奇的原型链 <script> var divObj=document.getElementById("dv"); console.dir(divObj); //d ...
- python之路之html
def index(request): print request.POST print request.GET print request.FILES for item in request.FIL ...