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的更多相关文章

  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. 解决jquery.pjax加载后的异常滚动

    个人博客 地址:http://www.wenhaofan.com/article/20181106154356 在使用jquery.pjax的时候发现每次加载完成后都会将滚动条滚动至顶部,用户体验极不 ...

  2. nginx配置长连接(ajax60秒请求超时)

    个人博客 地址:http://www.wenhaofan.com/article/20180911150337 1.在使用ajax做轮训的时候前台发出的ajax请求总是会在60秒之后返回405超时响应 ...

  3. re正则匹配模块_python

    一.re模块 1.模块功能 通过re模块的接口接入正则表达式语言,主要用于匹配字符串. 2.正则表达式元字符以及意义 . 代表任意一个字符(除了换行符\n) ^ 以什么开头 $ 以什么结尾 * 重复匹 ...

  4. Mike and strings

    Mike has n strings s1, s2, ..., sn each consisting of lowercase English letters. In one move he can ...

  5. Django 初试水(一)

    2020年注定是一个不平凡的一年!坚持就是胜利,一起加油! 至于为什么使用 Django,也不想说太多.个人喜欢,这里不做介绍.直接进入主题.show me the code!!! python 的环 ...

  6. pytest学习1-安装和入门

    一.安装pytest: 在命令行窗口下执行: pip install -U pytest 检查安装的pytest版本: pytest -v 二.运行第一个测试用例: import pytest def ...

  7. [CF705B] Spider Man - 博弈论

    [CF705B] Description ICG 游戏有若干个环,每次操作将一个环断成非空的两部分,节点数总和不变.集合初态为空,每次向集合中添加一个环,询问当前集合用于游戏的胜负. \(n \le ...

  8. 后台异常 - sql语句查询出的结果与dao层返回的结果不一致

    问题描述 sql语句查询出的结果与dao层返回的结果不一致 问题原因 (1)select 中,查询的列名称重复,数据出现错乱 (2)使用不等号,不等号(!=,<>),查询出来的结果集不包含 ...

  9. dict 字典合并

    实例 1 : 使用 update() 方法,第二个参数合并第一个参数 def Merge(dict1, dict2): return(dict2.update(dict1))   实例 2 : 使用 ...

  10. elasticSearch 起步(CentOS7 success)

    安装和启动 这里使用docker进行安装的 docker pull elasticsearch 然后使用 docker run -e ES_JAVA_OPTS="-Xms256m -Xmx2 ...