FLOORPLAN:

  • 做好floorplan要掌握哪些知识技能

  • 遇到floorplan问题,大致的debug步骤和方法有哪些

  • 如何衡量floorplan的QA

以上是驴神提的五大点问题。鄙人狠狠地反驳了驴神的提问。后端实现工作是一个不可分割的整体,最终能收获什么样的果实,在你种下种子的那一刹那就已经注定了;至于中间的浇水施肥打药,那都是按部就班的工作了。整个后端过程就是一个混沌过程,floorplan是输入,gds和netlist是输出,中间是一团笼罩着混沌过程的迷雾。但是作为一个后端熟手、老司机,理应做到眼中有码心中无码,当你完成你的floorplan的时候,中间的迷雾在心中自动消散,最后能得到什么样的结果大致就有数了。

言归正传,floorplan作为后端工作的起始点,是后段工作最关键的节点;floorplan的质量,直接决定了这个design的上限。那么floorplan要做哪些事情呢?除了画个框框,摆摆memory,画画powermesh,还有规划placement blockage (hard/soft/partial), route guide (by layer/by percentage), cell guide (region/fence), 加physicalcell, 做一些preplace等等。做floorplan, 首先需要有良好的艺术鉴赏眼光!一个好的floorplan,一定是一个美的floorplan!只有每一个细节都显示出美感的floorplan,才会是一个好的floorplan!

当我们从头开始做一个floorplan的时候,一定要意识到,floorplan直接决定了placement的质量,决定了route的质量;io的位置、memory的位置、cellguide这些,都是种子,是给EDA工具的种子,基于这些种子,工具才能做出一个placement结果;同样,当placement 确定的时候,route 的结果也基本决定了。所以在做floorplan 的时候,一个合格的工程师应该要掌握设计的数据流向,和工艺的基本特性。那么floorplan的一些重要步骤应该注意哪些事项呢,简单的说:

  • IO/IP的规划。首先要熟读IO/IP的application note,掌握各个IP/IO的使用方法,有没有特殊的绕线需求,有没有特殊的place需求;对于顶层design,要了解IO的power domain对各种特殊cell的要求;对于blocklevel,如果需要自行决定io pin的位置,那么可以通过innovus的editPin功能很轻易的完成设置;

  • Memory位置的摆放。Memory 的摆放严重影响到 placement 和 routing 的质量。首先应该根据设计的数据流对 memory 位置进行粗调,然后应该根据 routing 的估算和drc的要求来进行微调。Memory 的位置对齐,出pin的方向,以及 channel 的宽度都是需要精细计算的;因此熟练使用 innovus 的floorplan toolbar的相关功能可以极大的提高我们做floorplan的效率;

  • Placement blockage的设置。根据设计工艺的特点,DRC的要求,在memory/IP/power domain周围盖上hard placement blockage是常见做法;在channel里面根据timing的需求和绕线资源的计算,往往也要加上soft 或者 partial blockage;

  • Cell guide的设置。根据设计的数据流,我们有时候会希望约束一些module摆放到特定的位置;innovus提供了三种不同的约束: guide/region/fence, 来满足不同的需求。Guide的使用往往需要对design特别了解,并且经过很多尝试和分析才能得到较好的结果;

  • Power mesh的规划。记住一个原则:永远优先选用细而密的 power mesh 而不是粗而稀的 power mesh;

  • 在完成floorplan之后,先用innovus检查一遍是否有违规的地方;

  • 要对floorplan质量进行评估,最好的办法就是直接跑一遍place+route。

如果floorplan没有问题,就可以正式进入到APR阶段。EDA工具发展到现在这个阶段,后端工程师的方法学也在不断更新。传统的后端方法里面,place/cts/route 泾渭分明,丁是丁卯是卯;但是在innovus最新的early clock flow里面,place阶段就把cts/route统统尝试了一遍;而useful skew的使用,和innovus cts engine的进化,使得user几乎不再需要去debug clock tree structure,不再需要设置一大堆ignorepin/floating pin/exclude pin/stop pin之类(工程师要失业了!?);传统地看clock tree skew的评价标准,在今天基于useful skew的工具方法学下面也不再适用了。因此,正如前文所述,place/cts/route 从来没有像今天这样紧密的结合在一起,形成一个密不可分的整体。

通过innovus的early clock flow+useful skew的使用,我们能比以前达到更高的frequency,而整个设计方法也变得更加简单。那么在这么智能化的工具面前,我们工程师还可以做些什么来帮助提高设计质量呢?

  • 适当的cell guide。如前文所述,适当的cell guide相当于种下了一颗优质的种子,使得最后能结出丰硕的果实;

  • 适当的path group。尽管innovus通常不需要设置很多path group,但是对于少数critical path,适当的path group 设置也是有益处的;

  • 适当的over constraint。因为earlyclock flow的使用,工具在 placement 阶段就能看得前所未有的清晰;因此一个适当的over constraint能帮助工具取得一个最好的QoR,过犹不及。

那么既然现在工具这么智能,QoR这么好,是不是我们工程师就可以把流程脚本往服务器一丢,然后等着看 post route 结果就行啦呢?No!永远不要停止对中间结果的检查:

  • 不停追踪log file,有没有什么异常发生;

  • 检查每一步的结果,包括但不限于:run time,  timing, route over flow / violations, drv vioaltions, clock tree latency, derate / uncertainty setting, crosstalk delay.

P&R --From 陌上风骑驴看IC的更多相关文章

  1. 我面试过没有上万人也有十几个,简历要这么写才有hr要你

    今天终于有时间好好给大家写写关于如何写简历,给自己加分了. 这篇文章拖了很久了应该说,本来想在上周写的,但是事情实在是太多,又不想草草了事,所以搁置到现在.今天早上正好空出来了,就马上给大家码出来了. ...

  2. 趣谈编程史第3期-大器晚成的新晋流量Python发展史

    写在前面 这篇博文主要介绍javaScript的发展史,根据作者在B站发布的同名视频的文案整理修改而成,对视频感兴趣的博友可访问https://www.bilibili.com/video/av860 ...

  3. 谷歌 MapReduce 初探

    谷歌“三驾马车”的出现,才真正把我们带入了大数据时代,毕竟没有谷歌,就没有大数据. 上次的分享,我们对谷歌的其中一驾宝车 GFS 进行了管中窥豹,虽然只见得其中一斑,但是也能清楚的知道 GFS 能够把 ...

  4. 止不住的裁员潮:看京东前员工吐槽——绩效打C还希望我好好干

    昨天,京东裁员消息被证实,京东将在2019年末位淘汰10%的副总裁级别以上的高管. 在互联网职场交流社区,一名自称京东的员工如此吐槽:办完离职了心情大好,自由放飞,明天入职新公司,你给新员工打C,还希 ...

  5. R语言 入门知识--常用操作和例子

    1 R的下载.安转   (转)R有很多的版本,支持目前主流的操作系统MAC.Linux和WINDOWS系列.因为我个人是在WINDOWS下用R的,所以在这里将只介绍WINDOWS下R的下载&安 ...

  6. R You Ready?——大数据时代下优雅、卓越的统计分析及绘图环境

    作者按:本文根据去年11月份CSDN举办的“大数据技术大会”演讲材料整理,最初发表于2012年2月期<程序员>杂志. 0  R 的安装

  7. linux 中\r

    工作中遇到的一个处理\r和\n的问题,看了一下\r是啥... void File_translater::EspEntr(string& strSrc){ int iPos; while((i ...

  8. R处理大数据集

    R会把所有的对象读存入虚拟内存中.对我们大多数用户来说,这种设计可以提高与R相互的速度,但是当分析大数据集时,这种设计会降低程序运行速度有时还会产生跟内存相关的错误. 内存限制主要取决于R的build ...

  9. 通过Charles获取看书神器API

    Charles Charles是一个可以做HTTP代理/ HTTP监视器/反向代理的软件,使开发人员能够查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量.包括请求,响应和HT ...

随机推荐

  1. OpenCV中imread失败cvLoadImage成功

    MYLAF 环境说明 编程环境:Windows 10(64bit), VS2013, OpenCV 2.4.12; 编程语言:C/C++: MYLAF 现象 在代码中,调用imread读取图片失败,但 ...

  2. 手机app测试要点(复制文)

    一.简介 移动应用App已经渗透到每个人的生活.娱乐.学习.工作当中,令人激动.兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中.各类智能终端也在快速发布,而开发者对于全球移动设备的质量和性能 ...

  3. 编码 - 坑 - win10 下采用 utf-8, 导致 gitbash 中文字体异常, 待解决

    blog01 概述 使用 git 中, 遇到一个坑 背景 最近遇到一个 编码转换 问题 本来也 一知半解 要是有人能给我讲讲就好了 环境 win10 1903 git 2.20.1 1. 问题 概述 ...

  4. linux复制,网络报错

    我拷贝了过来的Linux虚拟机无法上网,我用ifconfig命令查询了一下发现只有eth1和lo设备,没有eth0.于是我在Google上搜索了一下, <VMWare克隆或复制Linux虚拟机后 ...

  5. H5 App设计者需要注意的问题

    我们通常在做H5 APP设计的过程中,遇到很多看似很小,且很容易被忽略的问题,正是这些小问题,一次次的撩拨用户的耐心,让用户对你的APP心生怨念.现在WeX5君呕血为大家整理出H5 APP设计的21条 ...

  6. wamp修改MySQL密码

    wamp默认密码为空 用户名为root: 左击wamp绿色小图标,打开phpMyAdmin ->执行 ->账号 ->找到用户名为root的修改权限&&点击修改权限 - ...

  7. vue updated

    updated方法的触发条件———— 当data中定义的数据有变化时就会加载updated方法

  8. 题解【洛谷P3884】[JLOI2009]二叉树问题

    题面 题解 这道题目可以用很多方法解决,这里我使用的是树链剖分. 关于树链剖分,可以看一下我的树链剖分学习笔记. 大致思路是这样的: 第\(1\)次\(dfs\)记录出每个点的父亲.重儿子.深度.子树 ...

  9. 题解【CJOJ1070/UVA】嵌套矩形

    P1070 - [Uva]嵌套矩形 Description 有 n 个矩形,每个矩形可以用两个整数 a, b 描述,表示它的长和宽.矩形 X(a, b) 可以嵌套在矩形 Y(c, d) 中当且仅当 a ...

  10. webpack4.41.0配置一(基础配置webpack文件,入口出口,实现打包)

    1.查看node.js版本.npm版本和webpack版本(使用webpack4时,请确保node.js的版本>=8.9.4) 2.我先重新卸载了webpack和webpack-cli(全局) ...