0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于方法学flow来聊聊APR工具placement

sanyue7758 来源:处芯积律 2023-05-29 09:51 次阅读

众所周知,在prePlace阶段打完Power后,需要使用APR工具把网表中存在的例化完的instance来全局放置在core内,这个布局阶段(place)会暴露出设计Case在不加任何约束下按工具默认的globaldensity等设置摆放cell所存在的风险。

实际上在后端范围,工程师通常提到的高风险模块指的就是congestion较高的模块以及时序风险较高的模块,这两者实际上都和place有着千丝万缕的联系,前者可能是因为place阶段不合理/面积切分不合理导致局部绕线资源紧张,后者则有可能因为place的原因使得局部density过高导致timing eco阶段hold插爆引起不能修的short drc。

这篇文章小编就来以APR placement flow为例,分析工具在place阶段到底做了哪些事情,并且结合项目心得,讲述几种常见的解congestion的方法和思路。

实际上placement不止和route最后的drc结果息息相关,更是和下个阶段的cts时钟树密切相关,一个优秀的placement,摆的寄存器的位置比较合理/紧凑的话可以让cts解drv的时候线长减短,进而减少很多为了解transition而插的INV,进而一定程度上优化时钟树长和skew。

数字电路中,单元的放置是很规范的,std cell的面积都是site的整数倍,而row是由site大小决定生成的,std cell也通常为一倍/二倍row高度,对应的std cell也会snap到row上放置,其实从综合工具DCG看初始状态这些cell全部都是堆叠摆放的。而placement最重要的任务,就是把这些cell摆好,不能有Overlap,不能有legalization的问题,不能有FE DRC。这就很类似于一堆散乱的乐高积木,我们要把它一个个的在地上(core row)铺好,但是又要摆放的符合前端代码(RTL)关系。

19c4c590-fd3e-11ed-90ce-dac502259ad0.png19e9feb4-fd3e-11ed-90ce-dac502259ad0.png

1a38fa28-fd3e-11ed-90ce-dac502259ad0.png

上述内容就是指导innovus进行block placement的基础flow了,由注释可以发现主要包括设置placemode;设置opt mode,设置OCV derate参数加严时序,add_tie_cell来钳位住logic 0/1的Pin,一端接pg net,一端接constant pin;进行Place以及Place_opt操作;存完db后,报timing以分析时序,也许有些ICer会疑惑PlaceOpt怎么就一个place_opt_design就一笔带过了?事实上,APR布局布线的PlaceOpt阶段工具是其中的一个重要步骤,主要负责对芯片的物理布局进行优化,以满足电气约束和布局规则。

PlaceOpt阶段工具的主要作用如下:

优化芯片的物理布局:PlaceOpt阶段工具可以通过对芯片的物理布局进行优化,使得芯片的面积更小、功耗更低、性能更好。PlaceOpt阶段工具会针对芯片的电气约束和布局规则进行优化,以达到最佳的布局效果。

解决布局冲突:在布局布线的过程中,可能会出现布局冲突的情况,比如两个器件之间的距离过近,或者某些器件之间的间距不符合规定等。PlaceOpt阶段工具可以检测这些冲突,并进行解决,以保证芯片的物理布局符合规范。

优化时序和功耗:PlaceOpt阶段工具可以通过优化芯片的物理布局,来改善芯片的时序和功耗。例如,可以通过减小器件之间的距离,来缩短信号传输的时间,从而提高芯片的时序性能。又如,可以通过合理的布局,来降低芯片的功耗。

生成布局报告:PlaceOpt阶段工具会生成布局报告,其中包括芯片的面积、功耗、时序等信息,以便设计人员对布局结果进行评估和调整。

需要注意的是,PlaceOpt阶段工具只是APR布局布线过程中的一个步骤,它需要与其他工具配合使用,才能完成整个布局布线的过程。例如,在PlaceOpt阶段工具之后,还需要进行时钟树合成、布局布线、后仿真等步骤,以完成芯片设计的整个流程。那么问题来了,如果在place完毕后,工程师在查阅log/报告时候发现局部区域overflow(congestion)确实很大,存在很大的绕线风险时候一般怎么解决呢?

可以通过调整flooplan来解决,通常MEM的沟道/出PIN位置附近会有纵向/横向的overflow,这种congestion通常可以通过调整沟道宽度/MeM的相对位置(使得走线规整)解决

打PlaceBlk,对于cell density过高的区域可以加partitial place blk来降低density,可以密度逐层递增,打多层

增加keepout margin,通过设置Pin keep out来给PIN足够空间出

打routing blk,对于Macro周边底层signal如M2 M3等出PIN导致的signal overflow尤其是拐角处,在周边区域走线资源充足的情况下,可以对堵塞区域设置对应层的no_signal rblk,route完毕后删掉,以免报drc错误

设置padding,对于高Pin Density的区域,经常有AIO,MUX,MBIT等多Pin std cell,虽然cell的密度不高,但是走线出Pin太多,这种情况可以通过设置一类lib cell的padding来解,通常可以加1~2site的距离,不够再加,注意,这样操作很有可能会影响timing,需要谨慎使用。

merge bit,对于寄存器导致发生overflow的区域,工程师可以设置Merge bit以减少时钟PIN

修改RTL代码,有可能是逻辑设计不合理,MUX等多PIN逻辑太多了,后端确实解不了

修改Power Plan,对于H overflow,则加密纵向走线,放松横向Power走线,反之加密横向Power走线,放松纵向Power走线

规划std cell,整理signal 线,在Power net高层空间允许的情况下,走高层NDR来释放风险

少部分的signal线,可以自己手动拉线走高层/或者换层

最终杀招,和项目经理商量要不要增加点面积,或者砍点macro放到其他模块去,H overflow就增加高度,V overflow就增加宽度。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5342

    浏览量

    120305
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59770
  • apr
    apr
    +关注

    关注

    0

    文章

    11

    浏览量

    6480
  • MEM
    MEM
    +关注

    关注

    0

    文章

    6

    浏览量

    8458
  • DCG
    DCG
    +关注

    关注

    0

    文章

    7

    浏览量

    2371

原文标题:基于方法学flow来聊聊APR工具placement

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SystemVerilog 的VMM验证方法学教程教材

    SystemVerilog 的VMM 验证方法学教程教材包含大量经典的VMM源代码,可以实际操作练习的例子,更是ic从业人员的绝佳学习资料。SystemVerilog 的VMM 验证方法学教程教材[hide][/hide]
    发表于 01-11 11:21

    IC开发flow及个阶段使用的工具

    及个阶段使用的工具。3.信号的跨时钟域同步。包括单比特和多比特,对于单比特自然用两级寄存器同步最为方便。对于多比特,常考察异步FIFO以及握手方法。要理解亚稳态的概念以及避免亚稳态的方法。...
    发表于 07-22 07:12

    编程方法学讲义factorial-trace

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载

    编程方法学讲义Scheme-Examples

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载

    编程方法学讲义Functions-As-Data

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载

    编程方法学讲义More-Concurrency

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载

    编程方法学讲义Scheme-Functions

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义Networking-With-Python

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载

    编程方法学讲义Python-Basics

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义Computer-Architecture

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义Unix-Development

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    方法学讲义memory

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义Computer-Architecture

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义stack-implementation

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:19 0次下载

    编程方法学讲义Course-Informati

    斯坦福大学公开课: 编程方法学-分课时课件与作业。
    发表于 12-14 20:37 0次下载