encounter 有局部place route功能吗?
请大侠赐教!
这个不了解,应该有的,area place
Encounter support Area-based routing with nanoroute, but it dose not support area-based placement since placement is a global operation anyway.
But you can control module-based placement density.
感谢回复!控制density是可以的,但是不是很好控制,总是有阻塞出现。可能是因为经验不足,所以暂时在解决
阻塞的问题上还没有很好的办法。
Encounter support Area-based routing with nanoroute, but it dose not support area-based placement since placement is a global operation anyway.
But you can control module-based placement density.
做ECO修复的时候是有局部的
ENCOUNTER可以指定布哪些信号线 至于只在某个区域布线 除非其他地方你都盖blockage
看来兄弟是被拥塞折腾够呛,首先从placement入手,试下下面的指令:
setPlaceMode -congestion high -timing false -module_padd $module_name 1.2
placeDesign
这样的placement结果应该不会坏。
然后分析下你的拥塞是在那个步骤发生的:placement or CTS? 在那个模块发生的:算法模块 or 寄存器阵列?
如果是算法模块,则针对该模块用Padding;如果是寄存器阵列,并且在CTS后发生,就要考虑用Clock-gate-aware的placement和ckClone/ckDeClone
多谢楼上的各位!
楼上的说的命令我试过了,可能是在局部不同吧
我是这样写的脚本:
setPlaceMode -modulePadding {* 1.2}
setPlaceMode -congEffort high
placeDesign -prePlaceOpt
但是placement之后的效果并不理想。恶化的结果就是placement不均匀,部分由阻塞,部分又比较空,corner的部分空的比较厉害。所以就比较迷糊!实在不行就放大一点面积了。
把timing项设成false。
Encounter我不大熟悉啊。我用的是ICC。
在ICC中有一个命令"
set_keepout_margin -type {soft|hard} -outer {$fillter2 0 $filler2 0} [get_cellaoi* ]
这个是在某个特定的Cell边上+ padding,预留一些空的位置,主要用来减少局部的Congestion用的,我想Encounter也有类似的功能。
ICC里头还有一个命令”
set_congestion_options-max_util {$intial_val+2%} -coordinate {X1 Y1 X2 Y2}]
这样子就可以比较好的控制Congestion的问题了。
你还的查看一下是不是Feedthrough造成局部Cong比较高。
学习了,谢谢楼上的大大们!
可以用看不到的command congOpt
或是有特別造成congestion的cell請服用specifyCellPad
或是有特別容易congestion的module, 除了module pad 還可以用specifyInstPad
然后分析下你的拥塞是在那个步骤发生的:placement or CTS? 在那个模块发生的:算法模块 or 寄存器阵列?
如果是算法模块,则针对该模块用Padding;如果是寄存器阵列,并且在CTS后发生,就要考虑用Clock-gate-aware的placement和ckClone/ckDeClone