微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > IC Compiler 不在Macro上层绕线

IC Compiler 不在Macro上层绕线

时间:10-02 整理:3721RD 点击:
请教大家一个问题:我现在在用TSMC 250nm工艺做设计,其中SRAM Macro是用ARM/Artisan的memory compiler生成的。工艺有5层金属,而生成的SRAM Macro只用到1-4层。现在我做电源设计的时候是准备在第5层金属上做很多水平的straps,但是IC Compiler绕线的时候总是不走Macro的上面,如附图所示。这样造成有些区域的IR Drop很不理想。我觉得理论上这个Macro的上面第5层金属是可以走线的,Artisan手册里也说可以。但是我试了很多方法就是不能让IC Compiler在Macro上面走线。请问大家有没有解决的办法?或者说一般Macro上面这一层都不走线?
Macro的LEF里面定义了OVERLAP layer,而且是占Macro整块面积。我试过修改这个layer使其面积变小,但结果只会让ICC在这个Macro下面放了很多Standard Cells,第5层金属依然没有线。
谢谢帮助!


你需要看看这个MACRO是不是有那层的route blk,如果有,你应该没有改对地方

谢谢回复!我看过Macro的LEF,里面没有METAL5 Blockage,所以很不理解。我正在研究怎么用ICC检查Blockage。

目测,你那些不是straps吧,感觉像是连接stdcell的special pg线。
确认你没弄错吧?你说的情况,M5从macro上跨过,没有任何问题,可以实现。

你试过手动在那上面拉metal5没?能走线不?

这些线是用ICC的template-based power network做的。我在做一些试验,这些straps位于METAL5,画的比较细,而且和底层stand cell的PG rail对齐,通过via连到下面的金属。template脚本附上了。我没有做power net的经验,请大牛再指点。

  1. template : mesh_m5_b {
  2. layer : METAL5 {
  3. direction : horizontal
  4. width : 2.4
  5. spacing : minimum
  6. number :
  7. pitch : 12.8
  8. offset_start : boundary
  9. offset_type : edge
  10. offset :
  11. trim_strap : true
  12. }

  13. advanced_rule : on {
  14. optimize_routing_tracks : off {
  15. }
  16. align_strap_with_stdcell_rail : on {
  17. layer : METAL5
  18. align_with_rail : true
  19. put_strap_in_row : false
  20. }
  21. }
  22. }

复制代码

我现在基本都是用脚本做的布线,还不太熟悉怎么去手修。我试验过先不摆放Macros,在METAL5上先画满PG线,然后再摆放Macros和Std Cells。这样倒是实现了我想要的走线和布局(附图),但是Std Cells出现了少量placement errors。
常规应该都是先摆放Macros再做PG Net吧?我感觉可能是脚本里有地方设置不对导致先放Macros然后做PG的时候出现问题。


0.25的设计,金属过电流能力应该很大吧,你的stripe做的这么密是不是有点过了?相应的绕线资源是不是也受影响?
怎么做都可以,没有绝对的对错,只有针对你的设计的合理的方案罢了。

通常 Top Metal Space Rule 比其他 Metal 寬, 可能你畫的Metal5 PG strap pair gap 不夠它 Route.

谢谢各位帮助!问题基本解决了,我的Macro库是用Milkyway的LEF IN做的。虽然LEF里没有用到Metal5以上的金属,但是Milkyway在做BPV的时候默认在Macro区域的每层金属都做了Blockage。脚本里有一个地方
setFormField make_macro metal_5 "block all",这里改成"merge",在Metal5就没有blockage了,straps也都通过了Macros上面。
第一次做后端,明显power部分做过分了。后期会根据布线实际情况再做调整。



谢谢!我用的这个compile_power_plan方法如果遇到了你说的这种情况,会报Error。我开始确实遇到了这样的情况,根据ICC的提示对间距做了调整。

我导的macro也是block all,做P/G strap会通过macro上方,请问有啥解决方法啊?

你的意思是不想让PG经过Macro上方?

是的,每一次我都得自己做blockage

这好像和我遇到的情况正好相反,请问你用的什么工具和命令做的power strap?我用的是IC Compiler的compile_power_plan。

ICC /create_power_straps ....

我简单试了一下这个命令,如果导入LEF的时候用"block all",这个命令也不会过我的Macro上面的。你再检查一下Milkyway的流程吧。

好的,我看了下route blockage没出来,我用的BPV

我们一般用abstract提取lef,abstract 可以对blockage 做具体设置

多多學習,這可能跟準備FRAM VIEW有關

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top