Virtuoso Layout中rodCreateRect的7个实战技巧从基础矩形到复杂电源布线在集成电路版图设计中精确控制几何形状的生成与布局是提升设计效率的关键。对于已经掌握PCell基础知识的工程师而言如何将rodCreateRect这一强大功能从简单的矩形绘制升级为应对复杂工程挑战的利器是进阶之路上的必修课。本文将深入剖析7个实战场景展示如何通过参数组合与策略设计解决电源布线、动态调整等实际难题。1. 基础矩形创建与性能权衡理解何时使用rodCreateRect而非dbCreateRect是高效设计的起点。虽然两者都能创建矩形但适用场景截然不同# 高性能场景 - 使用dbCreateRect dbCreateRect(layerId list(0 0) list(4 2)) # 需要ROD属性的命名矩形 - 使用rodCreateRect rodCreateRect(?layer metal2 ?width 4 ?length 2)关键区别内存开销rodCreateRect对象会占用额外内存存储ROD属性后续操作只有rodCreateRect创建的矩形支持动态拉伸再生等高级功能访问速度dbCreateRect创建的普通矩形访问速度更快提示在需要创建大量简单矩形且无需后续修改的场景优先考虑dbCreateRect以提升性能。2. 矩阵式矩形阵列生成策略电源布线中经常需要创建规则排列的矩形阵列通过elementsX/elementsY参数可以高效实现set rectList [rodCreateRect( ?layer metal1 ?width 1 ?length 1 ?origin list(0 0) ?elementsX 4 ?elementsY 2 ?spaceX 1 ?spaceY 2 )]参数优化技巧参数作用典型值spaceX水平间距1-2倍最小线宽spaceY垂直间距1.5-3倍最小线宽origin阵列起点对齐电源网格坐标实际工程中建议将spaceX/Y设置为技术文件规定最小间距的整数倍避免DRC问题。3. 边界框智能填充技术当需要在不规则区域内填充矩形时fillBBox参数配合spaceX/Y能实现自动排列rodCreateRect( ?layer metal1 ?fillBBox list(1:1.5 10:5) ?spaceX 0.5 ?returnBoolean t )填充规则首个矩形始终位于边界框左下角后续矩形按spaceX/Y参数向右上方排列当剩余空间不足时自动停止填充这种方法特别适合电源布线中的不规则区域金属填充比手动排列效率提升80%以上。4. 多层级子矩形系统设计复杂电源结构往往需要主矩形嵌套子矩形通过subRectArray参数实现rodCreateRect( ?layer metal1 ?width 24 ?length 17 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer metal2 ?width 3 ?length 3 ?lowerLeftOffsetX 3.3 ?lowerLeftOffsetY 3 ?upperRightOffsetX -6 ?spaceX 3.3 ?spaceY 3 ) ) )偏移参数解析lowerLeftOffsetX/Y子矩形相对左下角的偏移upperRightOffsetX/Y子矩形相对右上角的负偏移负值的upperRightOffset可实现从两侧同时定位5. 动态拉伸时的再生控制电源布线经常需要后期调整正确的spaceX/Y设置确保拉伸时子矩形正确再生# 电源轨接触点示例 rodCreateRect( ?layer metal1 ?width 10 ?length 2 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer cont ?width 0.5 ?length 0.5 ?spaceX 1.5 ?spaceY 1.5 ) ) )拉伸再生规则水平拉伸根据spaceX值增加/减少X方向子矩形数量垂直拉伸根据spaceY值调整Y方向子矩形行数未指定space参数时使用技术文件默认间距6. 接触点自动生成方案电源线与接触点的协同设计可通过多层子矩形实现rodCreateRect( ?layer metal1 ?width 10 ?length 2 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer pdiff ?width 1 ?length 1 ?lowerLeftOffsetX 0.5 ?lowerLeftOffsetY 0.5 ), list( ?layer cont ?width 0.5 ?length 0.5 ?lowerLeftOffsetX 0.75 ?lowerLeftOffsetY 0.75 ?spaceX 1.5 ?spaceY 1.5 ) ) )接触点设计要点金属层与接触层偏移需满足设计规则spaceX/Y应设置为接触间距的整数倍多组子矩形可实现复杂接触阵列7. 高级参数组合应用综合运用各种参数可以实现更复杂的电源结构rodCreateRect( ?layer metal1 ?width 3.5 ?length 3 ?origin list(0.75 0.75) ?elementsX 3 ?elementsY 2 ?spaceX 0.75 ?spaceY 0.75 ?cvId [deGetCellView] ?subRectArray list( list( ?layer metal2 ?width 1 ?length 0.75 ?lowerLeftOffsetX 0.5 ?lowerLeftOffsetY 0.5 ?upperRightOffsetX -0.5 ?upperRightOffsetY -0.5 ?spaceX 0.5 ?spaceY 0.5 ) ) )参数协同效应elementsX/Y创建主矩形阵列subRectArray为每个主矩形添加子结构负偏移参数实现中心对称布局
Virtuoso Layout中rodCreateRect的7个实战技巧:从基础矩形到复杂电源布线
Virtuoso Layout中rodCreateRect的7个实战技巧从基础矩形到复杂电源布线在集成电路版图设计中精确控制几何形状的生成与布局是提升设计效率的关键。对于已经掌握PCell基础知识的工程师而言如何将rodCreateRect这一强大功能从简单的矩形绘制升级为应对复杂工程挑战的利器是进阶之路上的必修课。本文将深入剖析7个实战场景展示如何通过参数组合与策略设计解决电源布线、动态调整等实际难题。1. 基础矩形创建与性能权衡理解何时使用rodCreateRect而非dbCreateRect是高效设计的起点。虽然两者都能创建矩形但适用场景截然不同# 高性能场景 - 使用dbCreateRect dbCreateRect(layerId list(0 0) list(4 2)) # 需要ROD属性的命名矩形 - 使用rodCreateRect rodCreateRect(?layer metal2 ?width 4 ?length 2)关键区别内存开销rodCreateRect对象会占用额外内存存储ROD属性后续操作只有rodCreateRect创建的矩形支持动态拉伸再生等高级功能访问速度dbCreateRect创建的普通矩形访问速度更快提示在需要创建大量简单矩形且无需后续修改的场景优先考虑dbCreateRect以提升性能。2. 矩阵式矩形阵列生成策略电源布线中经常需要创建规则排列的矩形阵列通过elementsX/elementsY参数可以高效实现set rectList [rodCreateRect( ?layer metal1 ?width 1 ?length 1 ?origin list(0 0) ?elementsX 4 ?elementsY 2 ?spaceX 1 ?spaceY 2 )]参数优化技巧参数作用典型值spaceX水平间距1-2倍最小线宽spaceY垂直间距1.5-3倍最小线宽origin阵列起点对齐电源网格坐标实际工程中建议将spaceX/Y设置为技术文件规定最小间距的整数倍避免DRC问题。3. 边界框智能填充技术当需要在不规则区域内填充矩形时fillBBox参数配合spaceX/Y能实现自动排列rodCreateRect( ?layer metal1 ?fillBBox list(1:1.5 10:5) ?spaceX 0.5 ?returnBoolean t )填充规则首个矩形始终位于边界框左下角后续矩形按spaceX/Y参数向右上方排列当剩余空间不足时自动停止填充这种方法特别适合电源布线中的不规则区域金属填充比手动排列效率提升80%以上。4. 多层级子矩形系统设计复杂电源结构往往需要主矩形嵌套子矩形通过subRectArray参数实现rodCreateRect( ?layer metal1 ?width 24 ?length 17 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer metal2 ?width 3 ?length 3 ?lowerLeftOffsetX 3.3 ?lowerLeftOffsetY 3 ?upperRightOffsetX -6 ?spaceX 3.3 ?spaceY 3 ) ) )偏移参数解析lowerLeftOffsetX/Y子矩形相对左下角的偏移upperRightOffsetX/Y子矩形相对右上角的负偏移负值的upperRightOffset可实现从两侧同时定位5. 动态拉伸时的再生控制电源布线经常需要后期调整正确的spaceX/Y设置确保拉伸时子矩形正确再生# 电源轨接触点示例 rodCreateRect( ?layer metal1 ?width 10 ?length 2 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer cont ?width 0.5 ?length 0.5 ?spaceX 1.5 ?spaceY 1.5 ) ) )拉伸再生规则水平拉伸根据spaceX值增加/减少X方向子矩形数量垂直拉伸根据spaceY值调整Y方向子矩形行数未指定space参数时使用技术文件默认间距6. 接触点自动生成方案电源线与接触点的协同设计可通过多层子矩形实现rodCreateRect( ?layer metal1 ?width 10 ?length 2 ?origin list(0 0) ?cvId [deGetCellView] ?subRectArray list( list( ?layer pdiff ?width 1 ?length 1 ?lowerLeftOffsetX 0.5 ?lowerLeftOffsetY 0.5 ), list( ?layer cont ?width 0.5 ?length 0.5 ?lowerLeftOffsetX 0.75 ?lowerLeftOffsetY 0.75 ?spaceX 1.5 ?spaceY 1.5 ) ) )接触点设计要点金属层与接触层偏移需满足设计规则spaceX/Y应设置为接触间距的整数倍多组子矩形可实现复杂接触阵列7. 高级参数组合应用综合运用各种参数可以实现更复杂的电源结构rodCreateRect( ?layer metal1 ?width 3.5 ?length 3 ?origin list(0.75 0.75) ?elementsX 3 ?elementsY 2 ?spaceX 0.75 ?spaceY 0.75 ?cvId [deGetCellView] ?subRectArray list( list( ?layer metal2 ?width 1 ?length 0.75 ?lowerLeftOffsetX 0.5 ?lowerLeftOffsetY 0.5 ?upperRightOffsetX -0.5 ?upperRightOffsetY -0.5 ?spaceX 0.5 ?spaceY 0.5 ) ) )参数协同效应elementsX/Y创建主矩形阵列subRectArray为每个主矩形添加子结构负偏移参数实现中心对称布局