• 注册
  • 查看作者
  • 手把手教你做floorplan规划-数字后端设计实现floorplan篇

    手把手教你做floorplan规划-数字后端设计实现floorplan篇

    Floorplan是数字后端设计实现中最关键的步骤之一,floorplan做的好,能够加快时序的signoff以及physical方面DRC和LVS的signoff工作。如果floorplan做的不好,不仅仅是timing QOR会比较差,而且还会影响routabilty,从而影响芯片的面积。

    想要加吾爱IC社区微信技术交流群的,请先加小编微信,邀请入群(各位老铁,文章末尾的福利别忘记了哦)。

    1. 模块的partition

    block的形状往往是负责top实现的工程师给出的。一个比较有经验的数字后端工程师,在切模块形状的时候,往往会考虑如下几点:

    • 是否能够节省chip面积(比如IP边边角角,top用不到的区域,是否可以给block)

    • 基于block 现有的boundary,block implementation 的风险如何(需要对block的timing和physical有较深的认知)

    • pin assignment or IO placement(是否有feedthrough的需求等)

    • 考虑top和block 接口的timing

    图1 Abutted and Non-Abutted floorplan

     

    这里需要指出的是,top给你一个block的boundary后,你应该尽快去做模块的后端实现评估(Timing,Congestion,Area以及Hold fixing等情况)。假如评估后发现实现难度很大,或者搞不定,此时需要及时向负责人汇报,共同解决问题。虽然还是建议自己努力去解决问题,但是在实际项目中需要控制好时间节点,总不能评估半个月后发现不行,继续埋头苦干半个月吧。

    2. Voltage area creation

    对于multi-voltage和multi power domain的设计,有的数字后端工程师喜欢create voltage area,创建Voltage domain。有的则喜欢在前期阶段和前端沟通后,对不同的Voltage domain进行切分,比如将Gated domain,不同的voltage domain单独切出来,后端实现单独hardening,这样数字后端工程师实现时只需规划好各个模块的powerplan规划即可(不需要run based UPF flow)。

    对于一个flatten 的design,如果存在多个voltage domain,此时往往需要通过创建voltage domain,后端实现时需要load 对应的UPF,引导工具来做对应的placement(UPF坑可能比较多哦)。

    常见的创建voltage domain的方法有两种,如图2和图3所示。一种是各个voltage domain是abutted在一起的,另外一种则是各个domin间是存在channel(Non-Abutted)。

     

    图2 Voltage area (Abutted)

    图3 Voltage area (Non Abutted)

    3. Macro(含Memory,IP)和IO placement

    • 在摆放Memory和IP前必须注意poly的方向。90nm及以下工艺都要求memory,ip,io的poly orientation必须和standard cell的poly orientation保持一致(FAB提供的DRC runset会check这条rule)。

      建议阅读之前推送的文章,文中也涉及到Poly 方位的问题:

       

      Final netlist release前,你应该做好哪些工作?

    图4  Macro orientation示意图

    • 根据 data flow 和design hierarchy 来摆放Macro。如果有reference的floorplan,可以作为参考(仅仅是参考哦!),比如ARM的CPU和GPU,官方都会提供reference的。

    图5 Macro placement

    那么,如果你没有前端给你的 data flow,也可以通过icc中create_plan_group来创建对应的逻辑group,可以非常清楚地知道各个子模块间(含Memory)的逻辑连接关系,如图6所示。

    图6 通过查看逻辑连接关系规划placement

     

    •  出pin方向讲究多

      考虑绕线资源和timing。memory出pin方向尽量靠core logic区域。

    • memory之间是否需要留space

      如果两个memory之间的通道,你想工具摆放cell,那么需要确保它们之间有对应的power strap,否则会导致rail floating,如图7所示。如果需要留space,那留多少合适呢?留大了浪费面积,留小了则可能导致rail floating,绕线资源不够等问题(这个问题留给大家思考,比较简单)。

       

    图7 memory之间space规划

    • 原则上Memory要摆放在boundary边上。(为什么要摆放在四周?什么时候可以摆放在core区域?)

    • IP的摆放需要考虑和core logic保持一定space,这个space需要留多少,vendor都会给出一个建议值的,遵守他们的rule就行。

    4. 添加placement blockage和 routing blockage

    • memory之间需要加什么类型的blockage

      blockage分为hard,soft和partial 三种类型。具体功能这里不多说,大家都很清楚。如果memory之间想预留点空间,摆放buffer,则可以添加soft blockage或者partial blockage中的buffer only类型,如图8所示。图中SRAM之间的channel是否可以摆放Register? 如果不可以,为什么?

    • IP周围需要加placement blockage和routing blockage

      加placement blockage是防止core logic的standard cell 摆放太靠近IP,从而对IP造成干扰。加routing blockage是阻止core logic在IP限定range内走线。

    • IO需要和core logic区域保持一定的距离,防止LatchUp效应。

    图8 添加blockage示意图

    图9 LatchUp 示意图

     

    5. Adding power switch cell

    对于一个要做power domain的模块,我们需要添加power switch cell。通过这个power switch来控制该模块中standard cell电源的开关。power switch 有两种类型。一种是HEADER,通过关断VDD来实现poweroff。另外一种是FOOTER,通过关断VSS来实现poweroff。power switch cell有一个Global power pin,一个Local power pin。

    至于 power switch cell需要加多少合适,留给大家思考(主要考虑IR Drop)。

    数字后端实现IR Drop分析之Redhawk分析流程

    图10 power switch added in required power domain

    图11 Power switch 类型

     

    6. 添加一些特殊cell (Well Taps, EndCaps, Spare Cells, Metal ECO-able cells etc)

    • Well Tap cell

      目前大部分的standard cell library提供的标准单元都是tap-less(substrate connections are not done)。因此我们在floorplan阶段需要按照FAB的要求来添加Well-tap cell,将wells连接到VDD/VSS上。

    • EndCap Cells

      endcap cell 一般是摆放在Macro周围和每条row的首尾两端,主要目的是确保Macro周围的环境和core logic的环境是一样的。

    • Spare cells

      spare cell 字面的意思就是备用的cell。这里cell一般是用来做ECO用的。至于这类cell在哪个阶段insert,以何种方式insert,留给各位思考。另外还有一种是ECOCAP CELL,这类cell也是用来做ECO的(他们何有区别,各自的优缺点分别是什么?)。

      推荐阅读:

      数字后端设计实现后期碰到这些问题,如何做ECO?

     

    7.Qualify floorplan

     

    做完以上这些工作后,如何去quailfy 一个floorplan,powerplan呢?

     

    • verify_pg_nets 检查是否存在floating  pins (floating shapes是否可以skip?)

    • run drc to check poly orientation

    • review floorplan of IP with vendor

     

    由于篇幅有限,本文对于powerplan只是简单提及,powerplan完全可以作为一个专题来讲,留在后续做分享。

    相关文章推荐

    从数字IC后端设计实现看先进工艺7nm实现的各种挑战

    数字后端设计实现后期碰到这些问题,如何做ECO?

    数字IC后端工程师多久可以拿到60万年薪?数字后端工程师的技能

    教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告

    数字后端设计实现中这些低功耗设计经验,你真的懂了吗?

    深度解析create_clock与create_generated_clock的区别

    数字后端实现IR Drop分析之Redhawk分析流程

    CRPR(Clock Reconvergence Pessimism Removal)能补偿crosstalk吗?

    教你如何计算电路最高工作频率(静态时序分析之setup和hold time计算方法)

    数字IC后端笔试面试问答No.1-3(每日三问)

    教你轻松调DCT和ICC之间Timing与Congestion的一致性

    盘点数字芯片设计实现各个环节setup违例的修复方法

    数字IC后端设计实现floorplan及powerplan规划

     

    小编知识星球简介:

    在这里,目前已经规划并正着手做的事情:

    • ICC/ICC2 lab的编写
    • 基于ARM CPU的后端实现流程(已经发布)
    • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
    • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程(准备中)
    • 时钟树结构分析
    • 低功耗设计实现
    • 定期在星球布置作业题(星球已经支持布置作业功能)

    在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

    反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有六十二星球成员,感谢这六十二童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)

    好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力(文章末尾有广告,帮忙点下,谢谢!)。小编在此先谢过!与此同时,吾爱IC社区(52-ic.com)也正式上线了。吾爱IC社区(52-ic.com)是一个专业交流和分享数字IC设计与实现技术与经验的IC社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

    打赏的朋友,请长按下方二维码,识别小程序进行打赏,欢迎砸钱过来!小编晚饭能不能加个鸡腿,全靠它了,呵呵!

    作者微信:

     

  • 0
  • 0
  • 0
  • 2k
  • 单栏布局 侧栏位置: