Floorplan:

要做好floorplan需要掌握哪些知识跟技能?

明确Floorplan 处理的对象:对于数字设计的 Floorplan 来说,它是一个很依赖前后步骤的一个过程,这个可以看作是后端Layout 的开始,Floorplan 处理的对象我喜欢叫做Special Instance and Region,工具的进步已经可以从 RTL 级别,以及Synthesis 阶段去尝试做 Floorplan,而 Advanced Node,Physical Aware Synthesis 越来越成为必须。

如果把 Std Cell 做为一般的 Normal Cell,那么 Hard Macro,Pad 很明显是特殊的 Cell,还有 Low Power 相关的 Cell 也可以看作是特殊的 Instance,ESD,TCD,FinGrid 等等,剩下的就是一些功能上,性能上特殊的 Instance,举例来说有Clock Gen,IO Buffer,DDR related 等等。

而 Special Regin 包括你Power Domain,Blockage Area,Route Guide,Placement Guide 等都需要在 Floorplan 的时候做为一种物理约束告诉工具。

除此之外,Hierarchy Flow 还需要有 Top-Down 的能力。

总结来说,对这些基本的对象的各种属性、作用、常见问题、在工具中的 behaviour 等要了如指掌。

熟悉设计: Floorplan 的人不需要去做设计,但是做Floorplan 之前,需要仔细阅读设计的结构文档,特别是功能模块结构、Memory 使用文档、时钟文档、电源分布、Package 文档等等。最好结合网表查看工具来查看整个Design 的结构,而 Place Route 工具里可以让工具做Trial,做为你的初始版本,也作为你了解 Design 的一个途径。

通常,遇到floorplan问题,大致的debug步骤跟方法有哪些?

Floorplan 遇到问题?怎么会知道Floorplan 有问题呢?那就是放到placement去验证一下,关注的问题是就是我们的目标:PPA,当然还有Congestion。各项指标都要在一个经验可接受范围内,如果是新的尝试,第一版最好余量留大一点。

我个人的方法是半手工,在一定程度熟悉设计的基础上,写一些方便 Manual Work 的 Utility,提高 debug 的效率,这样你的操作看上去对当前设计很熟练。对出现问题的地方,比如placement blockage 加得不好,Power mesh 中缺少via,某些 timing 因为 instance 没有 fixed 等等,需要逐项排查。BTW,此时机器不能闲着,继续做 Route,看 Global Congestion Map 和 Real Route 有没有区别。

如何衡量floorplan的QA?

QA 很多,可以列十几二十个甚至更多,我就说说如何积累吧,多思考,多反馈(后续步骤对前续步骤的反馈),然后有些可以自动化的就直接用脚本去Check,在做 Manual Work 的时候,多利用工具和脚本,做得整齐犯错少。往下做到Placement,检查 DRC,检查 Power 是很有必要的,然后对 Floorplan 做反馈。

要做好placement需要掌握哪些知识跟技能?

Placement 相对来说不是一个那么需要交互的过程,就是你给什么样的初始输入,工具就按着当前设置进行 Placement,Placement 的对象是标准单元。

从我对 Placement 的粗浅认识,我觉得Placement 的关注点也就确定了,就是 Placement 的设置,这个步骤和Floorplan不同,Floorplan 目前来看更多的还是人的作用,而Placement更多的是如何和工具打交道,知识技能主要集中在熟悉工具方面,可以配合工具去了解 Placement 中有哪些 Physical Constraint。既然是算法驱动的,工具所需要的输入是有限的,不考虑AI的因素,你是可以穷尽影响工具 Placement 的所有条件的。

时序是贯穿整个IC 设计的技能,就不单独说了。

还是以总结结尾,需要掌握工具的Placement 过程和相关命令以及物理约束。

通常,遇到placement问题,大致的debug步骤跟方法有哪些?

Debug 总是从问题入手,再结合Placement 对每个问题的影响,比如 PPA 中的Performance,即 Timing 和Placement 结合就是物理信息对时序的影响。比如 Timing 有问题,transition很大,从版图上可以去看 cell 的相对位置,fanout,前一级的transition等一一排除找到原因。

最后还是要回到Placement 的设置上,通过具体的设置来引导工具进行问题的修复,比如Placement blockage 的放置,guide cell 的放置,全局max_transition的设置等。

还有就是要大胆假设,并去尝试自己的想法,很多时候Placement 和Floorplan 分不开,Placement 很多时候就是一个命令Run 了就出结果了,而很多设置要返回到Floorplan,当然也有些flow 将它们分得很清楚的。

如何衡量placement的QA?

Floorplan 本身会有自己的一些经验标准,而Placement 就完全是看最后的结果,通过工具提供的报告,去分析,也有很多Checklist,这个就需要慢慢积累,可以始终抓住两个原则PPA 和前后步骤的反馈。反馈最典型的就是Congestion,基本上 Route 的问题,需要从Floorplan开始后的每一个步骤都关注,还有一个比较典型的反馈是 DRC,Placement后做一版 Routing,来检查 PG,Detail Route 的 DRC 是很有必要的。

CTS:

要做好CTS需要掌握哪些知识跟技能?

Clock Tree Synthesis,这个话题很大。

Clock Modeling

首先你需要了解 Clock 这个大的话题,随便列几个概念,可以通过sdc 相关的内容取了解,sdc 对 Clock 做了很详细的约束,就是你需要了解的 Clock 的大部分内容。

  • cycle

  • skew

  • pulse

  • glitch

  • virtual clock

Clock Learning

需要能够快速获取 Clock Structure 的能力,如果你不是design的设计者,如何快速获得Clock 结构,有人开一次会就全懂了,有人到做完CTS 最后一天还是迷迷糊糊。

Clock Building

第二个是方法和技术,基本的就是buffering,怎么 buffering从cts 诞生到今天一直在不断被讨论。从最开始的 H Tree理论,到现在的 Concurrent Clock Data,需要去熟知。

还有很多细节问题可以去关注,有备无患你总有一天会遇到的,平时可以多看文章,做实验:

  • clock gating

  • ccd (usefule skew)

  • low power

通常,遇到CTS问题,大致的debug步骤跟方法有哪些?

如果 Clock 很多,那么首先的问题是如何定位是哪一支出问题了,这个可以使用二分法,或者灵感法。

对于具体出问题的 Clock,主要工作都是工具在做,我们所要做的就是确定我们加的时钟约束正确,工具理解的Clock 和我们想表达的是一致的,除此之外就是一些比较 tricky 的方法,可以去guide 工具。

但是 CCD 增加了 debug clock tree 的难度,也更多的关注于 Clock 对Performance 的贡献。

如何衡量CTS的QA?

传统的 CTS 的 Check 有不少,方法是一样的,首先关注 PPA,然后关注前后联系,能自动化的就不要手动去做,填Checklist 是一件很反人类的事情。

Route:

要做好Route需要掌握哪些知识跟技能?

Route 是Physical Design 比较靠尾的步骤,意味着胜利的已经在前方。在这个最后的阶段,需要掌握的内容也许就是问一个问题:你前面的准备都做好了吗?所以说Route 的技能是从全局来考虑的,当你做Floorplan 的时候要考虑你的Macro Placement 是不是会 block 很多Routing 资源,做 Power Plan 的时候需要考虑Power 和 Detail Routing 的 Tradeoff。如果单从知识来看,需要了解和 Metal Stack 相关的内容,比如Metal 的 Pitch,Thickness 怎么回事,via 如何定义,常见 DRC rule 有哪些,manhattan distance 是什么,如果你要做Flipchip Routing 相关的,需要了解更多的方法,这个我也不是很了解。

通常,遇到Route问题,大致的debug步骤跟方法有哪些?

Routing 最常遇到的问题是Congestion 问题和 DRC 问题,Congestion问题先从 Routing 资源分析开始,以及分析Congestion 相关资源涉及到的 net,解决办法就是从Net 和 Cell 入手,还可以从 PG 下手。

对于数字 PR 工程师,是使用工具让 DRC 最少,和 PV 的操作不同,所以,PR 工程师解决DRC 的方法也是从辅助手段开始,而不是直接对 DRC 本身去思考。我们使用Routing Guide,Move Cell 等手段来间接解决DRC 问题。

如何衡量Route的QA?

Routing Clean

DRC:

要做好DRC需要掌握哪些知识跟技能?

我只能从PR 工程师的角度来说,和 Routing 中讲的很像,了解一个工艺点的 DRC 规则,会使用工具去 Check 和反标回 PR tool 中查看。PR 工程师的技能还是集中在Floorplan 到 Routing 中,DRC 做为一种 Check 的手段。

通常,遇到DRC问题,大致的debug步骤跟方法有哪些?

和 Routing 中一样,对于数字工程师,基本方法不是直接去解决DRC 本身,而是用间接手段来防止 DRC 产生,让工具去修复DRC。

如何衡量DRC的QA?

看到 DRC check 笑脸。

P & R 9的更多相关文章

  1. [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  2. 利用python进行数据分析2_数据采集与操作

    txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...

  3. Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

    {#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...

  4. 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?

    0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...

  5. 应用r.js来优化你的前端

    r.js是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器的文件请求.要使用 ...

  6. 使用R画地图数据

    用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. ...

  7. c#使用Split分割换行符 \r\n

    c# 使用Split分割 换行符,方法如下(其余方法有空再添加):   string str = "aa" + "\r\n" + "bb"; ...

  8. JAVA调用R

    JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的 ...

  9. Windows Form调用R进行绘图并显示

    R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上. 1 前提准备 安装R软件,需要安装32位的R软件,6 ...

  10. react-native Simulator com+r不能刷新模拟器

    这个问题是我按了com + shift + K 调出Simulatior 的时候出现的, 然后虚拟机就刷新不了了, 怎么按com+r都不好使. 在Simulatior的菜单栏选择Hardware -- ...

随机推荐

  1. DVR

    DVR,全称为Digital Video Recorder(硬盘录像机),即数字视频录像机,相对于传统的模拟视频录像机,采用硬盘录像,故常常被称为硬盘录像机.它是一套进行图像计算存储处理的计算机系统, ...

  2. 为什么要使用NoSQL数据库

    NoSQL概念 随着web2.0的快速发展,非关系型.分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性(原子性.一致性.隔离性.持久性,一个支持事务的数据库,必需要具有这四种特性,否则 ...

  3. python面试的100题(19)

    61.如何在function里面设置一个全局变量 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变量. 如果要给全局变量在一个函数里赋值,必须使用glob ...

  4. JavaScript的流程控制

    JavaScript的流程控制 1.if...else if...else... 2.while 3.for 4.forEach 5.for...in... 完整代码如下: <!DOCTYPE ...

  5. python中os.sep的作用以及sys._getframe().f_back.f_code.co_xxx的含义

    https://blog.csdn.net/gufenchen/article/details/98338552

  6. P1010 幂次方(分治)

    https://www.luogu.com.cn/problem/P1010 刚刚看到这个题时,有点懵,如果说这是个数学题 比如说7,应该先求出7 = 4 + 2 + 1; 即先分解出里面应该有最多的 ...

  7. ORA-01789: 查询块具有不正确的结果列数

    问题描述 ORA-01789: 查询块具有不正确的结果列数 问题原因 sql语句用union时的 两个语句查询的字段不一致,好像顺序也要保持一致才行

  8. Java基础之使用Scanner类获取用户输入

    创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanne ...

  9. WPF学习笔记三之绑定

    1.绑定模式 <TextBlock Margin="10" Text="LearningHard" Name="lbtext" Fon ...

  10. 超大jtl解析jar包使用源于testfan

    解决超大jtl解析过慢时间过长问题: usage:  java  -jar  jmeter-graph.jar    jtl_path    interval_time (单位:s) 10G文件分析测 ...