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

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

3天内不再提示

Congestion修复实例及脚本分享-加Blockage array/keepout margin

jf_tpHP8OJR 来源:集成电路设计及EDA教程 2023-01-31 17:17 次阅读

分享一个Congestion的示例与解决这个Congestion用的2种方法以及对应的效果。

下面的一个Design有一个Macro的pin density非常高,有高达1万个Pin,每层都有出Pin,且Pin基本上都是一个Track放一个,因此在它周围非常容易产生Congestion问题。

什么控制都不加,默认Place的Cell分布以及Congestion挺好的:

33a3b7f8-973d-11ed-bfe3-dac502259ad0.png

Place congestion:

33d2719c-973d-11ed-bfe3-dac502259ad0.png

可是到了CTS之后发现Cell的摆放有很大的变化,Cell全部堆在了靠近Macro出pin的地方:

33f2cd8e-973d-11ed-bfe3-dac502259ad0.png

局部放大图(可以看到很多Buffer/inverter),density非常高:

341917dc-973d-11ed-bfe3-dac502259ad0.png

CTS阶段的congestion也变差很多:

344718ee-973d-11ed-bfe3-dac502259ad0.png

这个是对应的cell density分布图:

34a90c34-973d-11ed-bfe3-dac502259ad0.png

尝试了2种解决方案,都是有效的,这里分享一下两种方法以及对应的脚本。

方案1:加Hard placement blockage array

方案1: 在Place之前,在Macro周围要出Pin的地方创建Hard placement blockage array:

34f5dfe6-973d-11ed-bfe3-dac502259ad0.png

对应的tcl脚本:

setsite_height [get_attribute [get_core_area] tile_height]

setsite_width [get_attribute [get_core_area] tile_width]



create_placement_blockage_array -coordinate "$core_llx$core_lly$core_urx[expr $core_lly+2000]"-method checker -spacing 10 -height $site_height-width 4 -typehard -snap litho -prefix checkerboard_blkg



setALL_bbox [get_attribute [get_cells xxx/u_ra_m/u_sim_rram_multix4] bbox]



# remove placement blockage overlapped with analog macro

remove_placement_blockage [get_placement_blockage -within "$ALL_bbox"]

创建Hard placement blockage array的tcl proc分享

方案1的结果:

CTS之后可以看到Cell的分布散开了挺多,但是彼此之间还是有点拥挤的:

352e47be-973d-11ed-bfe3-dac502259ad0.png

CTS的congestion改善非常多,除了局部有黄色的Congestion(overflow=6的1个,overflow=5的33个)之外其他地方都是可以接受的,如果把blockage的间距和尺寸再减小一点的话会改善更多。

3547f24a-973d-11ed-bfe3-dac502259ad0.png

方案2: 加Keepout margin

由于方案1的Cell在hard placement blockage之间的Cell拥挤程度还是蛮高的,所以想到了方案2:在Place之后给Macro周围的Cell加Keepout margin,然后做优化,CTS的时候也会避免把它们靠的太近。

对应的脚本见知识星球

方案2的结果:

CTS之后的Congestion结果:

355f80cc-973d-11ed-bfe3-dac502259ad0.png

可以看到Congestion已经有了很大的改善,这种已经可以接受了。

对应Cell density的分布:

35af7e1a-973d-11ed-bfe3-dac502259ad0.png

在Macro周围Cell的分布,可以看到Cell分布的非常均匀:

35c1ad74-973d-11ed-bfe3-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    0

    文章

    18

    浏览量

    17290
  • design
    +关注

    关注

    0

    文章

    152

    浏览量

    45531
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14636
  • CTS
    CTS
    +关注

    关注

    0

    文章

    34

    浏览量

    13888

原文标题:Congestion修复实例及脚本分享 - 加Blockage array/keepout margin

文章出处:【微信号:集成电路设计及EDA教程,微信公众号:集成电路设计及EDA教程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux shell脚本分

    今天浩道跟大家分享shell脚本硬核干货,可以说是拿来即用序列!
    发表于 02-17 09:13 273次阅读

    Linux shell脚本分

    今天浩道跟大家分享几个Linux运维中常用到的shell脚本
    发表于 07-18 09:53 457次阅读
    Linux shell<b class='flag-5'>脚本分</b>享

    实例中教你修复晶振

      晶振损坏了,很多人苦于不知如何修复,今天我们就在实例中教你修复损坏的晶振。  实例一  一片经过测试员多次放回的主板,故障原因定为不开机。后经确认,该板开机不稳定,大部分时间能开机
    发表于 03-24 15:52

    全面介绍充满魔性的Placement

    上,在这个光圈内的区域不能放置其他单元。当几个Macro之间有congestion问题时,可以添加一些Keepout Margin,阻碍buffer, inverter的插入。4)Cell
    发表于 01-17 16:49

    ad2013 logo脚本分享!

    貌似现在ad2013里面没有logo的运行脚本,所以得自己添加一个运行脚本,这样后就能想ad9那样添加做图标咯。实际上这个运行脚本就是ad9里面拷贝过来的,不过添加到13里面是可以用的,下载后将其
    发表于 08-20 01:54

    xcodebuild archive通用打包脚本分

    xcodebuild archive 持续集成打包脚本
    发表于 03-06 07:15

    求分享NodeMcu Lua脚本实例

    求分享NodeMcu Lua脚本实例
    发表于 04-28 08:07

    Design Complexity、congestion、Timing

    随着FPGA规模越来越大,设计本身的复杂度也同样增加。Xilinx UFDM中也经常提到了Design Complexity这样一个概念。Timing/Complexity/congestion
    发表于 02-08 05:46 3175次阅读
    Design Complexity、<b class='flag-5'>congestion</b>、Timing

    数字后端基本概念介绍——Placement Blockage的9中人为约束

    congestion的问题,提高routing的效率。 Placement blockage的类型很多,一共分为9种,分别对应hard, hard_macro, soft, partial
    的头像 发表于 01-02 09:52 9223次阅读

    VBS脚本实例之一键升级哨位台核心板和底板程序脚本的资料说明

    本文档的主要内容详细介绍的是VBS脚本实例之一键升级哨位台核心板和底板程序脚本的资料说明免费下载。
    发表于 05-07 18:22 0次下载
    VBS<b class='flag-5'>脚本</b><b class='flag-5'>实例</b>之一键升级哨位台核心板和底板程序<b class='flag-5'>脚本</b>的资料说明

    如何使用符号执行的python实现攻击脚本分析平台

    传统的静态分析方法大多不能准确处理脚本与网络交互的过程,且会引入不可达路径,动态分析则需要搭建实验环境和手工分析。针对上述问题,提出一种基于符号执行的Python攻击脚本分析平台PyExZ3+。通过
    发表于 07-16 15:50 11次下载
    如何使用符号执行的python实现攻击<b class='flag-5'>脚本分</b>析平台

    JavaScript常用检测脚本实例代码免费下载

    本文档的主要内容详细介绍的是JavaScript常用检测脚本实例代码免费下载。
    发表于 02-03 17:02 6次下载

    109个实用shell脚本分

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。
    的头像 发表于 03-16 08:58 2262次阅读

    产生Congestion的主要原因

    Congestion也分为几种情况,和前端密切相关的是Logic Congestion(更多关于后端Congetsion问题,查看文末参考文章),主要原因是RTL设计问题导致,这种问题的现象从后端看上去就是Cell数没多少,就是线密。
    的头像 发表于 08-18 10:57 1575次阅读

    PR工具中blockage的定义、分类及其作用

    Blockage是PR工具中的一个重要概念,我今天就简单说一下它是什么,以及它的分类、作用,再说一下类似blockage的一些概念。
    的头像 发表于 12-06 16:01 358次阅读