分享一个congestion的示例与解决这个congestion用的2种方法以及对应的效果。
下面的一个design有一个macro的pin density非常高,有高达1万个pin,每层都有出pin,且pin基本上都是一个track放一个,因此在它周围非常容易产生congestion问题。
什么控制都不加,默认place的cell分布以及congestion挺好的:
place congestion:
可是到了cts之后发现cell的摆放有很大的变化,cell全部堆在了靠近macro出pin的地方:
局部放大图(可以看到很多buffer/inverter),density非常高:
cts阶段的congestion也变差很多:
这个是对应的cell density分布图:
尝试了2种解决方案,都是有效的,这里分享一下两种方法以及对应的脚本。
方案1:加hard placement blockage array
方案1: 在place之前,在macro周围要出pin的地方创建hard placement blockage array:
对应的tcl脚本:
set site_height [get_attribute [get_core_area] tile_height]set site_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 -type hard -snap litho -prefix checkerboard_blkgset all_bbox [get_attribute [get_cells xxx/u_ra_m/u_sim_rram_multix4] bbox]# remove placement blockage overlapped with analog macroremove_placement_blockage [get_placement_blockage -within $all_bbox]
创建hard placement blockage array的tcl proc分享
方案1的结果:
cts之后可以看到cell的分布散开了挺多,但是彼此之间还是有点拥挤的:
cts的congestion改善非常多,除了局部有黄色的congestion(overflow=6的1个,overflow=5的33个)之外其他地方都是可以接受的,如果把blockage的间距和尺寸再减小一点的话会改善更多。
方案2: 加keepout margin
由于方案1的cell在hard placement blockage之间的cell拥挤程度还是蛮高的,所以想到了方案2:在place之后给macro周围的cell加keepout margin,然后做优化,cts的时候也会避免把它们靠的太近。
对应的脚本见知识星球
方案2的结果:
cts之后的congestion结果:
可以看到congestion已经有了很大的改善,这种已经可以接受了。
对应cell density的分布:
在macro周围cell的分布,可以看到cell分布的非常均匀:
浅谈耦合线的定义
70迈智能后视镜评测 799元的厚道定价感动人心
HSPA技术能否将网络升级至HSPA+
欠拟合和过拟合是什么?解决方法总结
泰景信息科技 个人电脑电视解决方案通过 Windows Me
Congestion修复实例及脚本分享-加Blockage array/keepout margin
Qorvo面向汽车HMI提供基于压感技术的完整解决方案
XKCON祥控钢铁企业温室气体排放在线监测系统
物联网安全隐私问题——WOIC互通币所提出的解决方案
思特威推出全新5MP DSI-2技术全性能升级SC系列图像传感器新品SC5336P
资讯:联想中国PC份额39.3%创新高
各种液位计的工作原理及应用
对于硅碳复合材料的包覆结构之蛋黄壳型的详细解析
wifi4和wifi5和wifi6的区别
SPDT开关和开关滤波器矩阵演示
基本RS触发器、同步RS触发器、D触发器
河套IT TALK——TALK 9:无人驾驶技术瓶颈难突破,苹果泰坦现实考量忙掉头
POA为嵌入式设备提供了什么
英飞凌与Eatron合作推进电池管理管理解决方案
仅2mm大小无线温度传感器,可通过通讯获取能量与信息