rodCreateRect(
?name S_name
?cvId d_cvId
?layer tx1_layer
?width n_width
?length n_length
?origin l_origin
?bBox l_bBox
?elementsX x_elementsX
?elementsY x_elementsY
?spaceX n_spaceX
?spaceY n_spaceY
?fillBBox l_fillBBox
?fromObj Rl_fromObj
?size txf_size
?prop l_prop
?returnBoolean g_returnBoolean
[rodRectConnectivityArgs... ]
?netName S_netName
?termName S_termName
?termIOType S_termIOType
?pin g_pin
?pinAccessDir tl_pinAccessDir
?pinLabel g_pinLable
?pinLabelHeight n_pinLabelHeight
?pinLabelLayer txl_pinLableLayer
?pinLabelFont S_pinLabelFont
?pinLabelDrafting g_pinLabelDrafting
?pinLabelOrient S_pinLabelOrient
?pinLabelOffsetPoint l_pinLabelOffsetPoint
?pinLabelJust S_pinLabelJust
?pinLabelRefHandle S_pinLabelRefHandle
;end ROD Connectivity Arguments for Rectangles
[ ?subRectArray l_subrectArgs... ]
list(
list(
?layer txl_layer
?width n_width
?length n_length
?gap S_gap
?lowerLeftOffsetX n_lowerLeftOffsetX
?lowerLeftOffsetY n_lowerLeftOffsetY
?upperRightOffsetX n_upperRightOffsetX
?upperRightOffsetY n_upperRightOffsetY
?spaceX n_spaceX
?spaceY n_spaceY
?prop l_prop
;Repeat ROD Connectivity Arguments here
);end first subrectangle list
...
) ;end all subrectangle lists
;end l_subrectArgs
);end rodCreateRect
=> R_rodObj | t / nil
1、rodCreateRect()描述
该段落描述了如何创建带有ROD属性的命名矩形、命名矩形的多行或多列,或者在边框内填充命名矩形。每个命名矩形都是单独的对象,在层次结构中的第零层级创建。你可以通过指定 S_name到g_returnBoolean参数来创建这些命名矩形。
此外,还可以通过为每个命名矩形指定一个或多个未命名的子矩形数组来创建多部分矩形。每个未命名的子矩形都是一个普通的数据库形状,没有ROD属性,创建在层次结构的第零层级。多部分矩形中的命名矩形被称为主矩形。
你可以为命名矩形和/或任意一组未命名的子矩形分配属性名称和值(或属性名称和值的列表)。可以通过指定连接性将命名矩形与相同的终端和网络关联,并将命名矩形变成指定终端和网络上的引脚。也可以为每组未命名的子矩形指定连接性,将其与终端和网络关联,并将每个子矩形变成引脚。
尽管一组未命名的子矩形被视为单一形状,但你可以使用多部分路径的ROD对象ID与数据库访问操作符(~>)及属性名称subShapes来获取该组中各个子矩形的数据库ID列表。有关更多信息,请参见“访问ROD对象属性”。
注意:如果你想创建一个没有ROD属性的普通数据库形状的单个未命名矩形,请使用dbCreateRect函数,该函数在Cadence Design Framework II SKILL函数参考文档中有记载。如果你想创建一维或二维数组的没有ROD属性的未命名矩形,请使用rodFillBBoxWithRects函数。普通数据库形状所需的开销更少,因此性能更快。
2、rodCreateRect()参数信息
?name S_name
符合或字符串指定要创建的矩形的名称。
字符串需用引号(“ ”)括起来;符号需用单引号(’)前缀。ROD会将符号转化为字符串。名称必须在视图单元(cellview)中唯一。如果未指定名称,系统将分配一个唯一的名称,该名称由前缀rect和一个数字组成。例如,对于视图单元中的第一个未命名矩形,系统分配名称rect0;对于第二个分配名称rect1,依次类推。
单行或单列矩形:当创建单行或单列矩形时,系统使用你指定的名称(或如果未指定名称则使用rectn)作为基础,并添加后缀.n,其中n从1开始,每个矩形依次增加1。例如,如果你创建一个包含三个矩形(沿X轴方向排列)的行,并指定名称为polyRect,系统将命名这三个矩形为polyRect.1、polyRect.2和polyRect.3。如果你创建一个包含三个矩形(沿Y轴方向排列)的列,并且未指定名称,系统将把这三个矩形命名为rect0.1、rect0.2和rect0.3。
多行多列矩形:当你创建多行多列的矩形时,系统使用你指定的名称作为基础,并添加后缀.x.y,其中.x.y表示行号和列号。例如,如果你指定了三行四列,系统将矩形命名如下:
- 第一行:Myame.1.1 Myame.1.2 Myame.1.3
- 第二行:Myame.2.1 Myame.2.2 Myame.2.3
- 第三行:Myame.3.1 Myame.3.2 Myame.3.3
默认值:rectn, rectn.n, rectn.x.y
?layer tx1_layer
文本字符串、整数或列表,指定矩形的层或层-用途对,例如:
?layer “metal1”
?layer 45
?layer list(“metal1” “drawing”)
字符串值需用引号(“ ”)括起来。不要使用符号。对于列表,请使用以下格式:
- list(layer purpose)
层-用途对的示例:
?layer list(“metal1” “drawing”)
?layer list(45 252)
?layer list(45 “drawing”)
?layer list(“metal1” 252)
你需要指定一个层。默认用途:drawing。
?width n_width
正整数或浮点数,用于指定矩形的水平测量值(单位为用户定义, μm))。
当你同时指定l_bBox和n_width时,l_bBox的值会覆盖n_width的值。如果你既未定义n_width也未定义l_bBox,系统将使用n_length的值。如果你未指定n_length,系统将使用你技术文件中指定层的minWidth(最小宽度规则)的值。如果你这些都未指定且minWidth不可用,函数会报告错误。
默认值: 如果指定了 n_length 则使用 n_length;否则使用技术文件中指定层的 minWidth。
?length n_length
正整数或浮点数,用于指定矩形的竖直测量值(单位为用户定义, μm)。
当你同时指定 l_bBox 和 n_length 时,l_bBox 的值会覆盖 n_length 的值。如果你既未指定 n_length 也未指定 l_bBox,系统将使用 n_width 的值。如果你未指定 n_width,系统将使用你的技术文件中指定层的 minWidth(最小宽度规则)的值。如果你这些都未指定且 minWidth 不可用,函数会报告错误。
默认值:如果指定了 n_width 则使用 n_width;否则使用技术文件中指定层的 minWidth。
?origin l_origin
指定第一个矩形左下角的单点或坐标列表;请使用以下格式之一:
x:y
list(x y)
当你同时指定l_bBox和l_origin时,l_bBox的值会覆盖l_origin的值。
默认值:0:0
?bBox l_bBox
指定两个点的列表,用于定义矩形大小的边界框的对角线。你可以从任意一个角开始定义边界框。系统会通过计算指定的对角线坐标之间的差值来确定第一个矩形的位置。请使用以下格式之一:
list(x:y x:y)
list(list(x y) list(x y))
示例1,从边界框的左下角开始:
list(3:3 30:15)
list(list(3 3) list(30 15))
示例2,从边界框的左上角开始:
list(3:15 30:3)
list(list(3 15) list(30 3))
当你使用l_bBox指定矩形大小时,l_bBox的值会覆盖n_width、n_length和l_origin的值。
默认值: none
?elementsX x_elementsX
正整数,指定沿X轴平行的一行中要创建的矩形数量。如果你还指定了l_fillBBox,那么x_elementX指定沿X轴方向要创建的矩形的最大数量。
默认值:1
?elementsY x_elementsY
正整数,指定沿Y轴平行的一行中要创建的矩形数量。如果你还指定了l_fillBBox,那么x_elementY指定沿Y轴方向要创建的矩形的最大数量。
默认值:1
?spaceX n_spaceX
正整数或浮点数,指定矩形在X轴方向上的边缘之间的距离(两个矩形之间的距离),当一行中只有一个矩形时,此参数会被忽略。
如果你没有指定n_spaceX,系统将使用n_spaceY的值。如果两者都没有指定,系统将使用技术文件中为指定层定义的最小间距规则minSpacing的值。如果这些都未指定且minSpacing不可用,函数将会报告错误。
默认值:n_spaceY (如果已指定);否则为技术文件中指定层的最小间距规则。
?spaceY n_spaceY
正整数或浮点数,指定矩形在X轴方向上的边缘之间的距离(两个矩形之间的距离),当一行中只有一个矩形时,此参数会被忽略。
如果你没有指定n_spaceY,系统将使用n_spaceY的值。如果两者都没有指定,系统将使用技术文件中为指定层定义的最小间距规则minSpacing的值。如果这些都未指定且minSpacing不可用,函数将会报告错误。
默认值:n_spaceX (如果已指定);否则为技术文件中指定层的最小间距规则。
?cvId d_cvId
用于创建矩形的cellview的数据库的ID。
默认值:在pcDefinePCell函数体内或者tcCreateCDSDeviceClass函数调用体内出现rodCreateRect语句时,分别为pcCellView或tcCellView;如果未指定或未找到cellview ID,则为nil。
?fillBBox l_fillBBox
定义一个包含矩形的边界框的两个对角点的列表,成为填充边界框(filling-bounding box)。第一个点可指定任意一个角,第二个点指定相对的角。可以使用以下格式之一:
list(x:y x:y)
list(list(x y) list(x y))
你可以使用x_elementX和x_elementY指定填充边界框中矩形的最大数量。如果指定的数量超过了填充边界框内可用的空间,系统将只创建能够容纳的矩形数量。你可以使用n_spaceX和n_spaceY指定填充边界框中矩形之间的距离。
当你使用l_bBox参数与l_fillBBox一起时,系统仅使用l_bBox坐标来计算矩形的大小。系统总是将第一个矩形放置在填充边界框的左下角。例如,以下参数值定义了一个左下角在(2:2)的14×10的填充边界框:
?fillBBox list(2:2 16:12)
?bBox list(0:0 4:2)
?spaceX 1.0
?spaceY 2.0
第一个矩形的坐标是(0:0 4:2)仅用于计算矩形的大小,而不是其位置。矩形的大小为4个单位宽,2个单位长。矩形在X轴方向上间隔1个单位,在Y轴方向上间隔2个单位。
填充边界框(fill-bounding box)用虚线表示,因此并没有创建实际的边界框。
默认值:nil。
?fromObj Rl_fromObj
ROD对象ID或ROD对象ID列表,标识你想要用作创建新命名矩形的源对象列表。源对象可以是实例、矩形、多边形、路径、线条、点、标签和/或文本显示对象。当你指定Rl_fromObj时,Rl_fromObj参数的值将覆盖其他直接或间接指定生成矩形坐标的参数:n_width、n_length、l_origin和l_bBox。
默认值:none。
?size txf_size
使用一个带符号的整数、浮点数,或Cadence® SKILL语言表达式来指定源对象(Rl_fromObj)的大小与生成矩形大小之间的差异。当源对象多于一个时,txf_size 指定的是围绕所有对象的边界框与生成矩形大小之间的差异。
一个正数表示生成的矩形比源对象大;一个负数表示生成的矩形比源对象小。当你指定一个SKILL表达式时,它必须评估为一个正或负的整数或浮点数。SKILL表达式仅在创建新矩形时进行评估。
如果你指定了源对象(Rl_fromObj),但没有指定 txf_size,则 txf_size 默认为 0.0。如果你指定了 txf_size,你必须同时指定 Rl_fromObj,否则系统将发出警告消息,并且函数会失败。
默认值:0.0
?prop l_prop
一个列表或多个列表的列表,其中每个列表包含属性的名称及其值。当属性名称是字符串时,用引号将其括起来。有关有效数据类型的描述,请参见《Virtuoso Layout Suite L User Guide》中的“关于添加属性表单”的章节。对于布尔属性,值必须是 t 或 nil。例如,你可以这样指定单个布尔属性:
?prop list(“myProp” t)
以及一组属性,如下所示:
?prop list(
list(“myProp” propValue1)
list(“myProp” propValue2)
…
list(“myProp” propValueN)
)
有关更详细地描述如何指定列表的列表,请参阅“Formatting List-of-Lists Arguments for Subparts”。
默认值: nil。
?returnBoolean g_returnBoolean
布尔值,用于指示 rodCreateRect
函数是否返回布尔值或ROD对象ID。该值必须是 t
或 nil
。当 g_returnBoolean
为 t
时,函数返回 t
或 nil
。当 g_returnBoolean
为 nil
时,函数返回一个ROD对象ID或ROD对象ID列表。当你创建多个矩形时,如果 g_returnBoolean
设置为 t
,rodCreateRect
函数执行得更快,因此当你不需要ROD对象ID列表时,建议将此参数设置为 t
。
默认值:nil
。
rodRectConnectivityArgs..
包含矩形ROD连接参数的一个列表。
有关rod_RectConnectivityArgs的更多信息,请参见“ROD Connectivity Arguments for Rectangles(rodRectConnectivityArgs)”
?subRectArray l_subrectArgs...
以下是一个包含一个或多个列表的列表,每个列表指定一组未命名子矩形的参数。每个列表为多部分矩形中的每个主矩形创建一组未命名子矩形;每组子矩形都是相对于每个主矩形的左下角创建的。关于如何指定列表中的列表,请参见子部分的列表格式说明(Formatting List-of-Lists Arguments for Subparts)。
有关 l_subrectArgs
的更多信息,请参见"Subrectangle Arguments(l_subrectArgs
)" 。
3、矩形的ROD链接参数(rodRectConnectivityArgs)
?netName S_netName
用于指定要与形状关联的网络名称的符号或字符串。将字符串用双引号(" ")括起来;将符号之前加上一个单引号(')。ROD 会将符号转换为字符串。如果网络不存在,系统会创建该网络,并将其命名为 S_netName。要将形状与网络关联,必须提供此参数。
默认值:none。
?termName S_termName
用于指定要与形状关联的端子和网络名称的符号或字符串。将字符串用双引号(" ")括起来;将符号之前加上一个单引号(')。ROD 会将符号转换为字符串。如果端子和网络不存在,系统会创建它们,并将其命名为 S_termName。
如果您同时指定 S_termName 和 S_netName,它们的名称必须相同。如果具有指定名称的端子已经存在,它所属的网络必须具有相同的名称。如果网络名称与端子名称不匹配,函数将报告错误。要将形状与端子和网络关联,必须提供此参数。
默认值:none。
?termIOType S_termIOType
用于指定端子方向类型(I/O 类型)的符号或字符串。如果未指定 S_termName,则忽略 S_termIOType。如果已经存在具有 S_termName 指定名称的端子,它必须具有与 S_termIOType 指定的方向类型相同的方向类型;如果方向类型不同,函数将报告错误。
有效值:input, output, inputOutput, switch, jumper
默认值:inputOutput
?pin g_pin
布尔值,指示是否将形状转换为引脚。该值必须是 t 或 nil。
当指定 g_pin 时,必须同时指定 S_netName 和 S_termName;如果没有指定,所有连接参数都会被忽略,但不会报告错误。
当值为 t 时,创建的形状是引脚。当值为 nil 时,创建的形状不是引脚,所有其他包含单词 "pin" 的参数都会被忽略。
有效值:t, nil 默认值:nil。
?pinAccessDir tl_pinAccessDir
用于指定引脚访问方向的字符串或列表。字符串值需要用引号括起来。不要使用符号。列表示例:
list("top" "bottom")
有效值:top, bottom, left, right, any, none,或包含这些值的列表
默认值:any
?pinLabel g_pinLabel
布尔值,指示是否为引脚添加文本显示标签。该值必须是 t 或 nil。当值为 t 时,系统会创建一个附加到引脚的文本显示标签。该文本是 S_termName 参数的内容。
有效值:t, nil 默认值:nil。
?pinLabelHeight n_pinLabelHeight
整数或浮点数,用于指定引脚文本显示标签的垂直高度,以用户单位表示。
默认值: 1。
?pinLabelLayer txl_pinLabelLayer
用于指定引脚文本显示标签的层或层-用途对的字符串、整数或列表,例如:
?pinLabelLayer "metal1"
?pinLabelLayer 45
?pinLabelLayer list("metal1" "drawing")
字符串值需要用引号括起来。不要使用符号。对于列表,使用以下格式:
list(layer purpose)
层-用途对的示例:
?pinLabelLayer list("metal1" "drawing")
?pinLabelLayer list(45 252)
?pinLabelLayer list(45 "drawing")
?pinLabelLayer list("metal1" 252)
当只指定层时,用途默认为 l_layer 定义的用途。当既未指定层也未指定用途时,层和用途都默认使用 l_layer 定义的值。
默认值:l_layer 指定的层;l_layer 指定的用途。
?pinLabelFont S_pinLabelFont
符号或字符串,用于指定引脚文本显示标签的字体名称。
有效值:euroStyle, gothic, math, roman, script, stick, swedish
默认值:stick
?pinLabelOrient g_pinLabelDrafting
布尔值,用于指示是否将引脚文本显示标签旋转超过90度。该值必须为 t 或 nil。当值为 t 时,标签可以旋转90度或更少。当值为 nil 时,标签可以旋转90度或更多。
有效值:t, nil 默认值:t
?pinLabelOrient S_pinLabelOrient
符号或字符串,用于指定引脚文本显示标签的方向。
有效值:
0 R0 MY sideways
90 R90 MYR90 sideways&90
180 R180 MX upsideDown
270 R270 MXR90 sideways&270
默认值:R0。
?pinLabelOffsetPoint l_pinLabelOffsetPoint
一组坐标,用于指定引脚文本显示标签的原点相对于矩形上的点句柄的X和Y偏移。标签原点由 S_pinLabelJust
指定,矩形点句柄由 S_pinLabelRefHandle
指定。
例如,要在矩形 polyRect
上创建一个标签,标签相对于段点句柄 mid2
在X轴方向偏移2单位,在Y轴方向偏移0单位,可以指定为 2:0
。
使用以下格式之一:
x:y
list(x y)
或任何计算为包含两个数字列表的表达式。
默认值:0:0。
?pinLableJust S_pinLabelJust
符号或字符串,用于指定标签的原点。你必须完整地指定这两个单词;不要缩写它们。
有效值:
- upperLeft
- lowerLeft
- upperCenter
- lowerCenter
- upperRight
- lowerRight
- centerLeft
- centerCenter
- centerRight
默认值:centerCenter。
?pinLabelRefHandle S_pinLabelRefHandle
符号或字符串,用于指定你希望与文本显示标签的原点相关联的矩形上的点句柄。你可以指定任何边界框或段点句柄的名称。
边界框点句柄名称:要指定矩形边界框上的一个点句柄,可以使用两字句柄名称或其两字符缩写,如有效值所示。例如,你可以使用 uL
表示 upperLeft
。
有效的边界框点句柄值:
upperLeft
或uL
lowerLeft
或lL
upperCenter
或uC
lowerCenter
或lC
upperRight
或uR
lowerRight
或lR
centerLeft
或cL
centerCenter
或cC
centerRight
或cR
段点句柄名称:要指定矩形上某段的点句柄,使用系统定义的句柄名称。每段有三个系统定义的点句柄,分别为 startn
, midn
和 endn
,其中 n
是段编号,从零开始。
最后一段还有以下点句柄:startLast
, midLast
和 endLast
。系统按顺时针编号段,从左下角为零开始,无论矩形如何创建。
有关系统定义点句柄的完整描述,请参见 "System-Defined Handles"。
有效值:
start0
,mid0
,end0
start1
,mid1
,end1
start2
,mid2
,end2
startLast
,midLast
,endLast
默认值:边界框点句柄 centerCenter
4、子矩形参数(l_subrectArgs
)
?layer txl_layer
?width n_width
?length n_length
以上参数介绍与第2部分相同,请前往查阅。
?gap S_gap
符号或字符字符串,指定系统用于在每个主矩形内放置子矩形的方法。请将字符字符串用引号("")括起来;符号前加一个单引号(')。ROD 会将符号转换为字符字符串。
系统会自动计算适合于主矩形内的最大矩形数量,考虑偏移参数所需的空间,并使用 n_spaceX
和 n_spaceY
参数的值来确定子矩形之间的最小间距。
当 S_gap
的值为 distribute
(默认值)时,系统会尽可能均匀地分配子矩形周围的空间,均分剩余空间,并将其放置在每个子矩形的右侧和/或上方。以下示例显示了沿 X 轴的多余空间。
当 S_gap
的值为 distribute
且只有一个子矩形时,系统会将子矩形在主矩形内居中放置,并对齐到网格。
当 S_gap
的值为 minimum
时,系统会以 n_spaceX
和 n_spaceY
的间距放置子矩形,直到没有空间再放置另一个子矩形,然后将所有多余的空间放置在子矩形行/列的右侧和/或上方。以下示例显示了沿 X 轴的多余空间。
当 S_gap
的值为 minCenter
时,系统会以 n_spaceX
和 n_spaceY
的间距放置子矩形,直到没有空间再放置另一个子矩形。然后,通过均匀分配多余的空间,将这些子矩形行和列居中放置。以下示例显示了沿 X 轴的多余空间。
有效值:distribute
、minimum
、minCenter
默认值:distribute
?lowerLeftOffsetX n_lowerLeftOffsetX
有符号整数或浮点数指定沿 X 轴的偏移量,即左下角子矩形的左边缘相对于主矩形左边缘的偏移量。正数表示子矩形从主矩形的右侧开始;负数表示子矩形从主矩形的外部开始。
默认值: 0
?lowerLeftOffseY n_lowerLeftOffsetY
有符号整数或浮点数指定沿 Y 轴的偏移量,即左下角子矩形的下边缘相对于主矩形下边缘的偏移量。正数表示子矩形从主矩形的上方开始;负数表示子矩形从主矩形的外部开始。
?upperRightOffsetX n_upperRightOffsetX
有符号整数或浮点数指定沿 X 轴的偏移量,即右上角子矩形的右边缘相对于主矩形右边缘的偏移量。正数表示子矩形从主矩形的外部开始;负数表示子矩形从主矩形的右边缘左侧开始。
?upperRightOffsetY n_upperRightOffsetY
有符号整数或浮点数指定沿 Y 轴的偏移量,即右上角子矩形的上边缘相对于主矩形上边缘的偏移量。正数表示子矩形从主矩形的外部开始;负数表示子矩形从主矩形的上边缘下方开始。
?spaceX n_spaceX
?spaceY n_spaceY
?prop l_prop
以上参数请参考第二部分。
5、rodCreateRect函数返回值
rodCreateRect函数返回的值取决于你如何指定 g_returnBoolean 参数。
-
当 g_returnBoolean 设置为 t 时,函数返回 t 或 nil。
-
当 g_returnBoolean 设置为 nil 时,函数返回一个ROD对象ID或ROD对象ID列表。
-
当 g_returnBoolean 设置为 nil 且创建了多个矩形时,rodCreateRect 返回一个ROD对象ID列表,其中右上角的矩形首先列出,左下角的矩形最后列出。例如:
("xxx.6.6" "xxx.6.5" "xxx.6.4" "xxx.6.3" "xxx.6.2" "xxx.6.1" "xxx.5.6" "xxx.5.5" "xxx.5.4" "xxx.5.3" "xxx.5.2" "xxx.5.1" "xxx.4.6" "xxx.4.5" "xxx.4.4" "xxx.4.3" "xxx.4.2" "xxx.4.1" "xxx.3.6" "xxx.3.5" "xxx.3.4" "xxx.3.3" "xxx.3.2" "xxx.3.1" "xxx.2.6" "xxx.2.5" "xxx.2.4" "xxx.2.3" "xxx.2.2" "xxx.2.1" "xxx.1.6" "xxx.1.5" "xxx.1.4" "xxx.1.3" "xxx.1.2" "xxx.1.1")
返回值可以是:
-
R_rodObj:一个ROD对象ID或与新矩形或多个新矩形相关联的ROD对象信息的ROD对象ID列表,按降序排列。
-
t:表示矩形创建成功。
-
nil:表示发生错误,未创建任何矩形。