• innovus笔记——mem(macro)太多,怎么才能摆出符合数据流的mem呢?


            情景再现:

            读入design后,调整好floorplan box,接下来就是摆放mem,如果此时mem的数量多达几百个,不知道这些mem的相互关系?不知道具体的数据流向,也没有guide或者前期的floorplan经验来指导摆放mem,那该怎么办呢?难道只能通过摆放多版mem的摆放来最终决定那一版是摆放的合理吗?(尝试多版,还不一定能得到比较好的结果)

          下面介绍一种快捷实用的方法,只用跑一次就能得到design的数据流向以及符合数据流向的mem大致摆放位置,大大节省后端的run time

    第一步:

            正常的读入design的数据;

    第二步:

            调整floorplan box到顶层切的形状。同时询问顶层,本模块的pin应该是放置die box的那条边;添加boundry cell、tapcell等(floorplan形状和pin的位置对mem的摆放有非常大影响,因此需要提前设置)

    第三步:

            不需要打power相关net,直接忽略

    第四步:

            设置place阶段mode,主要围绕setPlaceMode命令下的相关设置。希望和正常run place flow的placeMode设置相同,主要是为了和正常run place stage的时候的correlation做的好一些。

    第五步:

            开始设置command,如下:

    1. #命令版本为innovus版本18
    2. #设置congestion effort
    3. #设置inst gap(如果需要)
    4. #设置max_density
    5. #设置完mode后,键入下面命令
    6. place_design -concurrent_macros

    run完上面命令后,会得到mem和std摆放情况,如下图1

    注释:最大外框为die box、黄框为core box、红框为pin location、A—K组黑框表示跑完命令后工具根据design的数据流而摆放的mem group、绿色为模拟std摆放。

            根据下图1就可以大致知道mem应该摆放的位置,以及哪些std是和mem的关联性比较强。比如A、B、C组mem是和pin关联性比较强的,如果pin的位置发生改变,那么对应的mem也需要摆放在pin的周围。F、G、I应该放置在一起,并且和pin的关联性较弱。同时发现K组mem和G组mem的周围std比较聚集,这就需要考虑在真正摆放mem后,在K和G mem的出pin地方会不会出现congestion的问题。

                                                                            图1 

    根据上面图1的guide后摆放的正式mem的位置,如下图2

                                                                                图2 

    第六步:

            得到mem具体位置信息以及可能需要打的place blockage信息后,将mem和blockage用脚本写出。重新restore init后的db,soure先前保存的mem以及blockage的脚本。接下来开始正常打power和后续place流程。这样就可以只run一次就能大致知道mem的摆放位置啦,后续再根据place后真正的timing和congestion进行微调就可以啦,大大提升效率。

  • 相关阅读:
    泰山OFFICE技术讲座:字体的间距研究2
    JAVA概述
    一分钟学习数据安全—自主管理身份SSI可验证凭证
    博弈论之SG函数
    设计模式——中介者模式
    软件设计师 下午题第四题
    微信小程序入门->小程序简介,小程序商城项目案例,小程序入门案例及目录结构
    现代 CSS 解决方案:数学函数 Round
    删除Windows网络连接的网络编号,网络号,有线网卡的网络1,网络2....,快速批量删除每次增加的网络序号
    零基础学算法100天第8天——双指针(基础算法)
  • 原文地址:https://blog.csdn.net/qq_43012895/article/details/132606210