Floorplan

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

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

如何衡量floorplan的QA?

[哥简单点说]:floorplan是布局布线最重要的环节之一,也是体现一个工程师技术能力是否全面、是否够专业的一环。没做过floorplan的PR工程师都不要在别人面前瞎显摆你是资深PR工程师。从整个chip上来看,floorplan包含了IO的规划、电源网络的规划、block的摆放以及analog模块的摆放等等。每一项都需要时间和经验去锤炼的;从每个block来看,floorplan又包含了IOport的规划、属于该模块的电源网络的精细规划以及hardmacro的摆放等。想摆好hardmacro也是一门学问,可以结合designdata flow,也可以借助EDA工具的辅助。无论是block的电源网络规划,还是fullchip的电源网络规划,都需要经验、经验、还是经验。16nm以下更advanced的nodes,PG的好坏不但影响你的IR-drop、EM等指标是否满足,而且也会影响performance和congestion等。IO的规划更是一门学问,不仅考虑板级要求,功能要求,还要考虑chip的ESD等。

哥简单点说]:根据上面说的,floorplan里面包含很多东西,遇到哪方面的问题就找相应的解决方法。比如:常见的congestion问题,在比较合理cellU-rate的floorplan下,routing还是不通,这时候,你除了抱怨工具之外,也可以考虑一下你floorplan的问题,一般步骤是,先做个placement,看看congestionmap;结合data flow,再看看各个module的位置是否合理,有没有被分散或者分布不合理;还可以结合celldensity map,看看哪些区域明显density过高等等。再比如,你在分析timing的时候criticalpath中明显buf、inv很多,这个时候你也要结合floorplan看看,什么原因把这些path拉长了,一般都是memory摆放不合理造成的。

[哥简单点说]:IR-drop和EM没问题,那你的电源网络一般没问题(也会影响timing的);在top看和其它block连接没有congestion和timing问题,那你的IO规划一般没问题;block内你的congestion和timing都OK了,你的floorplan也一般没问题。Floorplan一般都是没有最好,只有更好。Innovus有灵活的floorplan人机交互的命令,可以快速的辅助你一些人肉活;innovus有丰富的floorplancheck方法,可以早期的发现你floorplan的问题,特别在16nm以下的工艺里,一堆要求需要在floorplan的时候先检查;innovus还有方法辅助你自动的摆放macro的位置,懒人的好工具等等。

Placement:

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

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

如何衡量placement的QA?

[哥简单点说]:placement貌似是EDA工具自动化程度非常高的一步。你懒得话,就可以少学点。想做好的话,也需要理解design,有STA的经验,会分析congestion,也要有点DFT的基本知识,以及低功耗的常用知识。当然,16nm以下,placement也要有很多rule去遵守,一般tool都会自动处理,但真的有违反,你也要知道怎么回事。

[哥简单点说]:一般遇到的问题是congestion和timing。Congestion分析解决的方法,首先你要结合log或report以及map来判断一下是局部的congestion还是全局的。全局的congestion,就需要看看你floorplan的因素(见floorplan部分);局部的congestion还是有很多方法的,比如:standard cell区域,用blockage来控制density以减少这些地方的routing需求;hard macro区域的话,也需要加上soft blockage或partial blockage(尽量不要把register放进channel,除非必要)或加大channel spacing;如果congestion出现在某些特定的module,你不妨试试module padding;如果在某些多pin的standard cell周围老是有routing问题,不妨试试在这些cell周围或者两边加点margin;也有些是PG的问题,造成routing congestion,需要结合map仔细对照一下即可;还有些congestion可能来源于你的netlist质量,目前EDA综合工具加上congestion的考虑,也可以优化这部分带来的困扰。Timing的问题也是placement阶段需要注意的,分析方法一般也是看log,分析report,结合layout,发现critical path的原因来解决。这里省略上千字,太多了,哥就不一一说了。

[哥简单点说]:placement完,你分析一下congestion,看看timing结果都没啥问题,表示可以进入下一阶段了。这个时候也不能说万事大吉,也有可能cts后发现的一些问题,必须placement重做,或者routing后,correlation很差,也有可能返工placement的。Innovus自带的很多神器,比如GigaPlace, GigaOpt,  早期时钟树估计与useful skew优化的timing的全局覆盖等,使得innovus在placement阶段还是取得很不错的成绩,特别是在16nm以及以下的高级工艺节点上。

CTS:

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

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

如何衡量CTS的QA?

首先需要对design的clock structure有总体认识。认识越清楚,越有帮助。其次,需要了解CTS的基本概念,这涉及到CTS的原理、skew transition的意义、以及对constraint和面积之间的相互影响。再就是需要熟悉EDA工具CTS的行为模式。

Debug步骤:

  • 检查clock tree上latency是否正常。

  • 检查每个clock tree的skew是否达到设计的要求。

  • 从timing report看是否有由于clock skew 造成 big Slack。

QA的衡量:

  • 检查clock tree的latency是否足够短。如果出现特别长的clock tree,很可能是constraint出问题,造成tree structure出错了。

  • 检查clock cell的面积和数目,从总体来说当然是越小越好,这样对latency,对power都会有好处。

  • 检查transition是否达标,检查是否只有很少数的transition没有达到constraint的要求。

  • 检查skew是否达到要求。

  • 检查timing report,看是否有由于clock tree的skew不合理,造成大的violation。

CCOPT:

  • Innovus的ccopt是采用调节register skew的方式,来build tree的。

  • ccopt会自动的读取mmmc里sdc的定义,自动的产生spec file,非常的智能化,对于一些不熟悉design的engineer,也能跑出比较好的结果。

  • ccopt是concurrent opt,跑完ccopt之后可以直接进入routing

Route:

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

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

如何衡量Route的QA?

需要的技能:

  • 理解制造工艺的特点。

  • 理解设计规则的要求。

  • 理解各个金属的电阻电容分布情况。

  • 理解各个功能模块之间的逻辑连接关系。

  • 理解重要和次要逻辑连接的顺序。

  • 给重要的逻辑连接配置合理的约束。

  • 理解PinAccess之间的依赖性,配置合理的pinaccess约束。

  • 预估congstion的区域,设置合理的约束阻止congestion出现

Route的问题一般体现在DRC修不掉,debug route问题一般从drc 入手:

同一种DRC类型很多:

  • 检查DRC的定义是否有问题。有,改正rule。

  • 拿掉这条rule,route是否能快速收敛。可以,工具问题。

DRC集中在某一区域:

  • 检查是否有congestion.有,则在BLOCK 边缘,加halo,pblkg, 或者移动block, 预留route资源。

  • 在逻辑连接集中的区域:改变功能模块的位置,避免逻辑连接交叉。

  • 在某一个走线方向上:检查是否有route blkg和power wire占用的route资源,增加layer或者减少route blkg。

某些netstiming比较差:

  • net 有detour:增加detour的约束,减少detour.

  • via 个数过多:增加约束, force route优化via 个数。

  • 使用底层走线过多:增加约束,force上层走线。

  • net RC过大:增加NDR, 使用shield.

QA衡量的标准:

  • 在最小的面积上能够route完成。标准: DRC clean。

  • 合理优化重要逻辑连接。标准:timing closure.

P&R 7的更多相关文章

  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. 用MyEclipse远程debug

    第一步 编辑 tomcat下的文件startup.sh文件,我的路径是 /root/apache-tomcat-6.0.24/bin/startup.sh 命令:vim startup.sh将decl ...

  2. RabbitMQ使用注意事项

    用ConnectionFactory创建的TCP连接要复用,因为创建新的TCP连接比较耗时. IModel(信道)是轻量级的,可以用时创建. channel.BasicQos(0, 1, false) ...

  3. 搭建GithubPages静态博客踩过的坑

    前言 搭建了属于自己的GitHub Page作为个人博客,上手Hexo+Material感觉比较花哨,后改用Yilia主题效果良好.期间发现并解决了一些问题,贴出值得记录的部分作为参考: 维护 书写 ...

  4. 巨杉TechDay回顾 | 技术人的夏天 · 就是这么燃!

    在All in Cloud的云计算时代,业务和应用正在不断“云化”,在此过程中云原生(Cloud Native)理念应运而生.作为云化改造的重要部分,云数据库因其天生的弹性扩展能力以及灵活.易用等特点 ...

  5. AcWing 1023. 买书 完全背包

    //完全背包 求方案数目 //f[i][j] 只从前i个物品中选,且总体积恰好为j的方案的集合 //f[i][j]=f[i-1][j]+f[i-1][j-v*1]+f[i-1][j-v*2]+...f ...

  6. 2020算法设计竞赛 C 汉诺塔

    作者:珩月链接:https://ac.nowcoder.com/discuss/367149来源:牛客网 将木板按照Xi从小到大排序,将这时的Yi数列记为Zi数列,则问题变成将Zi划分为尽可能少的若干 ...

  7. thinkphp3.2 中 Memcache 的配置和使用(memcahe的使用场景)

    Thinkphp的默认缓存方式是以File方式,在/Runtime/Temp 下生成了好多缓存文件. TIPS: TP3.2支持的缓存方式有:数据缓存类型,支持:File|Db|Apc|Memcach ...

  8. Redis 数据结构的底层实现 (二) dict skiplist intset

    一.REDIS_INCODING_HT (dict字典,hashtable) dict是一个用于维护key和value映射关系的数据结构.redis的一个database中所有的key到value的映 ...

  9. VIM键盘映射 (Map)

    http://www.pythonclub.org/linux/vim/map VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命 ...

  10. String类中的equals方法总结(转载)

    转载:https://blog.csdn.net/qq_25827845/article/details/53868815 1.String源码中equals大致写法: public boolean ...