数字后端设计实现 | 数字后端PR工具Innovus中如何创建不同高度的row?

发布时间:2024年01月05日

吾爱IC社区星球学员问题:Innovus后端实现时两种种不同高度的site能做在一个pr里面吗?

答案是可以的。

在这里插入图片描述

Innovus支持在同一个设计中中使用不同的row,但需要给各自子模块创建power domain。这里所说的不同高度的row,有两种情况。

1)同一个design中虽然有多种row,但它们彼此是整数倍关系

比较典型的案例如咱们社区低功耗四核A7 top训练营课程中的power switch cell,Level Shifter Cell都是占用两倍row高度的cell。这时候我们就需要在floorplan阶段创建对应的row。

当然还有低功耗设计实现中要用到的Multibit Reg,通常它的row也是普通标准单元的整数倍,会占用2-4条row高度。

在这里插入图片描述
在这里插入图片描述

创建Row需要在设计导入阶段完成后就创建,具体命令和图形界面操作如下图所示。

在这里插入图片描述

2)同一个design中有需要若干种不同高度的row,且它们之间是非整数倍关系

这时候除了创建不同的site之外,还需要分别创建power domain,指定好每个power domain对应的module。这样后续工具在做placement时才能摆放到对应的power domain。

另外,需要提醒的是由于不同的tech lef工艺技术库文件中,会定义好不同的site尺寸。所以如果你目前设计中一个power domain是要用9Track,另外一个power domain要用12Track实现,那么就需要事先在tech lef中把这两套库涉及的site定义完整。
在这里插入图片描述

指定Power Domain时需要指定好每个PD的形状,它的形状可以是任意多边形。具体形状需要根据整个design的floorplan来切分。

innovus创建多边形的floorplan方法

在这里插入图片描述

无论多复杂的多边形,都可以划分成多个长方形,每个长方形都有各自的左下角和右上角的坐标。有了每个长方形的坐标后,整体形状就可以获取到了。

我们可以通过下面的命令来指定好各个PD的形状。

Legacy UI:
modifyPowerDomainAttr PD –disjointHInstBoxList { {A {ax0 ay0 ax1 ay1 ax2 ay2 ax3 ay3}}
{{B C} {bx0 by0 bx1 by1 bx2 by2 bx3 by3}} }
modifyPowerDomainAttr PD –addBlockBox {block1}

Common UI:
update_power_domain PD -disjoint_hinst_box_list { {A {ax0 ay0 ax1 ay1 ax2 ay2 ax3 ay3}}
{{B C} {bx0 by0 bx1 by1 bx2 by2 bx3 by3}} }
update_power_domain PD -add_block_box {block1}

当然也可以写成下面这种格式。其中的disjointHInstBoxList写上每个长方形的两个坐标值。

modifyPowerDomainAttr -disjointHInstBoxList [list [list inst1 [list $x1 $y1 $x2 $y2]] [list inst2 [list $x3 $y3 $x4 $y4]]]
update_power_domain -disjoint_hinst_box_list [list [list inst1 [list $x1 $y1 $x2 $y2]] [list inst2 [list $x3 $y3 $x4 $y4]]]

如果placement后发现cell并没有摆放到它归属的power domain,就需要使用下面的教程来查看domain中cell的effective PD属性是否正确了。
数字IC后端低功耗设计实现power domain属性debug

文章来源:https://blog.csdn.net/weixin_37584728/article/details/135412446
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。