Product Documentation
Virtuoso Studio Design Environment SKILL Reference
Product Version IC23.1, November 2023

dbCreatePathSeg

dbCreatePathSeg(
d_cellviewId
txl_layerPurpose
l_beginPt
l_endPt
n_width
t_beginStyle
t_endStyle
[list(
 n_beginExt
 n_endExt
 [ l_extValue ]
 )]
)
=> d_pathSegId / nil

Description

Creates a path segment based on the specified parameters. The argument l_extValue is an optional list that contains six entries.

A pathSeg object represents a 2-point routing segment. Each point has the following

associated characteristics.

The oaPathSeg class derives from the oaShape class. For more information, see Wire Elements in Virtuoso Space-based Router User Guide.

Arguments

d_cellViewId

The database ID of the cellview.

txl_layerPurpose

Name, number, or a list of layer or layer-purpose pair.

For more information, see Database Access Function Argument Types.

l_beginPt

The start point of the path segment.

l_endPt

The end point of the path segment.

n_width

The width of the path segment. For a diagonal pathSeg, you should specify this value in diagonal unit (that is, n_width*
/2) to create a pathSeg with the desired width n_width.

The width attribute reflects the oaPathSeg pathStyle width. The width is given in orthogonal units if the path is orthogonal and in diagonal units if the path is diagonal.

t_beginStyle

t_endStyle

The beginning and ending style of the path segment.

Valid values:

  • truncate: The pathSeg terminates at the end point with no overlap.
  • extend: The pathSeg terminates at one-half of the segment’s width past the end point.
  • variable: The pathSeg terminates at a specified (endExt) distance past the end point. You need to specify the value of n_beginExt and/or n_endExt.
  • chamfer: The pathSeg is terminated with an octagonal (chamfered) end style of fixed uniform dimensions.
  • custom: A customized style. You need to specify the value set of n_beginExt, n_beginLeftDiagExt, n_beginRightDiagExt, n_beginRightHalfWidth, and/or n_endExt, n_endLeftDiagExt, n_endRightDiagExt, n_endRightHalfWidth in the argument l_extValue.

When either of the pathSeg ends is custom style, the width of the pathSeg is determined by:

  • When the beginStyle is not custom but the endStyle is custom: the width of this pathSeg defaults to twice the n_endRightHalfWidth value specified.
  • When the endStyle is not custom but the beginStyle is custom: the width of this pathSeg defaults to twice the n_beginRightHalfWidth value specified.
  • When both the beginStyle and the endStyle are custom: the width of this pathSeg defaults to the sum of n_beginRightHalfWidth and n_endRightHalfWidth.
  • When neither of the begin or end styles are custom styles: the specified n_width value is used.

n_beginExt

(Optional) Extension of the beginning. For a diagonal pathSeg, you should specify this value in diagonal unit (that is, n_beginExt*
) to create a pathSeg with the desired extension n_beginExt.

n_beginExt is valid only when t_beginStyle is set to custom or variable.

n_endExt

(Optional) Extension of the end. For a diagonal pathSeg, user should specify this value in diagonal unit (that is, n_endExt*
) to create a pathSeg with the desired extension n_endExt.

n_endExt is valid only when t_endStyle is set to custom or variable.

l_extValue

(Optional) Specifies a list containing six entries that are defined as follows:

list( n_beginLeftDiagExt n_beginRightDiagExt n_beginRightHalfWidth n_endLeftDiagExt n_endRightDiagExt n_endRightHalfWidth)

This value is useful only when at least one of the t_beginStyle or t_endStyle is set to custom. If thel_extValue argument is specified and t_beginStyle is not custom, the first three values are ignored, and if t_endStyle is not custom, the last three values are ignored.

These entries are explained as follows:

  • n_beginLeftDiagExt: left diagonal extension for the beginning of a pathSeg with custom chamfering. For an orthogonal path segment, you should specify this value in diagonal unit (that is, n_beginLeftDiagExt* ) to create a pathSeg with the desired beginning left diagonal extension n_beginLeftDiagExt.
  • n_beginRightDiagExt: right diagonal extension for the beginning of a pathSeg with custom chamfering. For an orthogonal path segment, you should specify this value in diagonal unit (that is, n_beginRightDiagExt* ) to create a pathSeg with the desired beginning right diagonal extension n_beginRightDiagExt.

  

  • n_beginRightHalfWidth: the right half width to use at the beginning of a path segment with custom chamfering. For a diagonal pathSeg, you should specify this value in diagonal unit (that is, n_beginRightHalfWidth* ) to create a pathSeg with the desired beginning right half width n_beginRightHalfWidth. If you do not specify a valid beginRightHalfWidth value, a warning message is generated in the CIW, and beginRightHalfWidth defaults to half of the segment width.
  • n_endLeftDiagExt: left diagonal extension for the ending of a pathSeg with custom chamfering. For an orthogonal pathSeg, you should specify this value in diagonal unit (that is, n_endLeftDiagExt* ) to create a pathSeg with the desired ending left diagonal extension n_endLeftDiagExt.
  • n_endRightDiagExt: right diagonal extension for the ending of a pathSeg with custom chamfering. For an orthogonal pathSeg, you should specify this value in diagonal unit (that is, n_endRightDiagExt* ) to create a pathSeg with the desired ending right diagonal extension n_endRightDiagExt.
  • n_endRightHalfWidth: the right half width to use at the ending of a pathSeg with custom chamfering. For a diagonal pathSeg, you should specify this value in diagonal unit (that is, n_endRightHalfWidth* ) to create a pathSeg with the desired ending right half width n_endRightHalfWidth. If you do not specify a valid endRightHalfWidth value, a warning message is generated in the CIW, and endRightHalfWidth defaults to half of the segment width.

Value Returned

d_pathSegId

When successful, returns the database ID of the created path segment.

nil

nil is returned if the cellview ID is invalid.

Examples

; Two ways of creating the same pathSeg with zero extension on both ends
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "truncate" "truncate")
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "variable" "variable" '(0.0 0.0))
; Two ways of creating the same pathSeg with half-width extension at the end
point
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "truncate" "extend")
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "truncate" "variable" '(0.0 0.05))
; Two ways of creating the same pathSeg with half-width extension at the begin
point
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "extend"   "truncate")
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "variable" "truncate" '(0.05 0.0))
; Two ways of creating the same pathSeg with chamfer extension at the begin point
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "chamfer" "truncate")
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "custom"  "truncate" list(0.05 0
'(0.075 0.075 0.05 0.0 0.0 0.0)))
; Two ways of creating the same pathSeg with chamfer extension at the end point
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "truncate" "chamfer")
dbCreatePathSeg(cv "Metal1" 0:0 1:0 0.1 "truncate" "custom"  list(0 0.05 '(0.0
0.0 0.0 0.075 0.075 0.05)))
; Example for creating diagonal pathSeg
width=0.12
cv=geGetWindowCellView()
mfgGrid=techGetMfgGridResolution(techGetTechFile(cv))
diagWidth=round(width*sqrt(2)/mfgGrid)*mfgGrid
dbCreatePathSeg(cv "Metal1" 0:0 2:2 diagWidth "variable" "variable")
dbCreatePathSeg(cv "Metal1" 0:0 2:2 diagWidth "extend" "extend")
; Example for creating a diagonal pathSeg with custom ends
halfDiag=diagWidth/2
halfWidth=width/2
dbCreatePathSeg(cv "Metal1" 5:0 7:2 diagWidth "custom" "custom" list(halfDiag halfDiag list(halfWidth halfWidth halfDiag halfWidth halfWidth halfDiag)))
; Example for creating an orthogonal pathSeg with custom ends
dbCreatePathSeg(cv "Metal1" 6:1 2:1 .65 "custom" "custom" list(.6 .6 list(.2 .2 .3 .1 .1 .35)))

Some examples of figures that define various terms for a Pathseg are given below.

An orthogonal PathSeg (in which the left and right diagonals of the chamfer are obtained by multiplying the extension by 3/2):

A diagonal PathSeg (in which the left and right diagonals of the chamfer are obtained by multiplying the extension by 2/3):

A PathSeg with two different end styles:

Related Topics

Database Access Function Argument Types

Interconnect Functions


Return to top
 ⠀
X