zoukankan      html  css  js  c++  java
  • P & R 10

    作为一个后端设计者,所需要掌握的技能其实就是熟练的利用工具,为自己服务。 需要的知识是什么?说的简单点,就是如何把设计的PPA搞上去。 说的复杂点,那就得从PPA需要注意的每个点去一一剖析。这个就太需要篇幅了。我也不想展开去说。

    我们就先拿floorplan来做个例子简单说一下。floorplan是整个设计的起点,好比建房子的地基一样,好的地基才会造出牢固的房子。 不好的地基,估计没建几层就跨了。 经常会听到小伙伴在place的时候cell放不下去,timing很差,很多时候都和floorplan有关系。因为做floorplan的时候,影响PPA的因素很多。

    • power 怎么打:也看到有公众号相关的技术贴,分析怎么打 Power才能省route的资源,才能有比较好的IR drop,这都是和设计最后的PPA息息相关。当然也需要做power 分析才能决定最终的power 方案。 一般大的设计会有专人负责整个chip的power方案。(注:打power请参考《无边光景一时新,power-plan如何定》)

    • mem如何摆放,pin如何摆放:这些也是Floorplan要考虑的东西。Mem的位置决定了模块的摆放位置。所以设计者需要熟悉设计中的数据走向,根据走向来合理摆放。同时,你还要考虑congestion,要让一行mem或者一列mem有那种流线的感觉,不能太突兀。个人经验,堆出那种凹凸不平的mem要么就是浪费面积,要么就是congestion比较差。以前arm的A9 据说摆了100多版的Floorplan才给出了最后的reference FP 给客户。 所以mem的摆放是个技术活,也是个体力活。 如何衡量一个floorplan的好坏,还是要看PPA. 所以需要迭代的过程会比较多。 当然,熟练工会通过迭代的结果来分析工具的行为,然后再对FP做调整,这样往往会事半功倍。

    • FP形状和大小:如果是bottom-up的设计,那这个形状和大小可以有block的owner先定,往往会比较容易做。 但是如果是top-down的设计,做top的一般都是比较牛的人。他要给下面每个block做好划分,同时还要考虑每个block的pin的摆放。 在这方面,innovus 的功能是很强大的。 谁用谁知道。

    • module guide/blockage的添加:这个也是根据place的结果来看的,实际上现在innovus 的Giga place相当强大,真正的timing driven,以前那种要加成百上千的guide的时代已经一去不复返了,现在基本上先什么都不加,都可以给你一个比较好的结果了。

    当然,对于一个设计来说,没有最好的FP,只有更好的FP。 不管是白猫黑猫,能达到最后的PPA要求就是一个好的FP。 有时候一个完美的结果往往出现在你挪动了几个mem的位置,加了几个guide而突然出现的。那个时候的成就感是无以言表的。

    其实往往FP定好了,那你的design基本上已经成功了一大半了。 如前所述,定FP的时候,是需要迭代的,是需要看PPA的,基本上跑一个place_opt就能知道这个FP的好坏。所以FP和place关系最为密切。怎么去debug Place的结果? 看PPA。 方法有哪些? 看PPA。 能不能讲的详细点? 好吧,其实就是看timing好不好,congestion好不好。 Timing 不好,是因为module没放好? 加guide吧。 是因为congestion的问题导致不好?  那就解congestion吧。。 这个没有葵花宝典,只有多用心做几次就有经验了。 

    到CTS阶段的时候, 又是一个可以展开的话题。 因为cts其实就是一个小的pr flow,从place到route到opt都有。。 实际上现在工具都已经很智能很强大了,需要用户干涉的很少。比如innovus可以直接通过SDC来生成做CTS的spec。 对用户来说,啥都不要考虑。工具自己做,同时还帮你修timing。 那CTS最关注的是什么? 越到advance node,越关心latency,power。Skew反而不是最重要的指标。 所以要把树做短,树功耗做小,同时它的skew也不能太差,这个更多的是EDA需要解决的问题。 因为现在设计越来越复杂,以前的分步做树放到现在很适用了。

    后面的route和drc对设计者来说,只需要知道drc在lef的定义,知道怎么修就好了。但是实际上,大面积的drc一般可能就有两个原因:

    • design的问题:FP不合理? Place不合理?congestion太差?

    • 工具的bug。

  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/lelin/p/11407235.html
Copyright © 2011-2022 走看看