我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?
拾陆楼知识星球
历史文章:
常用dbGet命令
dbGet快速入门
使用"Cut Rectilinear"功能可以调整floorplan形状,使其变成非矩形多边形(polygon)。
Floorplan-Edit Floorplan-Cut Rectilinear
需要注意的是:
1) 此时layout应该处于"Floorplan View"
2) 使用cut rectilinear之后若工具报告Warning:
**WARN: (IMPSYT-4P516): Failed to run the command because it attempts to change the top cell to rectilinear. Please set enableRectilinearDesign to 1 first before calling this command.
这时要设置如下命令再去切die boundary。
"setPreference EnableRectilinearDesign 1"
不同于ICC2报floorplan的die size/core boundary那么方便,innovus要繁琐一点,这里分享一下,报告非矩形多边形floorplan boundary box的方法。
Die size
1)getObjFPlanPolygen
getObjFPlanPolygen cell [dbGet top.name]
坐标是一串数字,没有{}。
2)dbShape fplan boxes
dbShape -output polygon [dbGet top.fplan.boxes]
dbShape输出的polygon是有{}的。
Core size
1)dbShape core row list
dbShape -output polygon [dbGet top.fplan.rows.box]
优点是不用写脚本处理,一句命令就可以,缺点是没有row的地方就被省略了。
2)proc get_core_bndry
proc get_core_bndry {} {
set dieBox
[dbGet top.fplan.boxes]
set offset_l [dbGet top.fplan.core2left]
set offset_b [dbGet top.fplan.core2bot]
set offset_r [dbGet top.fplan.core2right]
set offset_t [dbGet top.fplan.core2top]
set bot_left [dbShape $dieBox MOVE "-$offset_r -$offset_t"]
set bot_right [dbShape $dieBox MOVE "$offset_l -$offset_t"]
set up_right [dbShape $dieBox MOVE "$offset_l $offset_b"]
set up_left [dbShape $dieBox MOVE "-$offset_r $offset_b"]
set coreBndry [dbShape -output polygon $bot_left AND $bot_right AND $up_right AND $up_left]
return coreBndry
}
get_core_bndry
上述脚本中如果四个offset值相同,用下面的命令更方便:
dbShape -output polygon $dieBox SIZE -$offset
横向offset相同,且纵向offset也相同可以用:
dbShape -output polygon $dieBox SIZEX -$offset_x SIZEY -$offset_y