Product Documentation
Virtuoso Technology Data ASCII Files Reference
Product Version IC23.1, June 2023

7


Technology File Via Definitions and Via Specifications

This chapter contains the following topics pertaining to via definitions and via specifications:

viaDefs

viaDefs()

Description

Contains via definitions and via variants. All subsections specifying via definitions and via variants must be enclosed within the parentheses of this section.

standardViaDefs

standardViaDefs(
( t_viaDefName tx_layer1 tx_layer2 
 ( tx_cutLayer n_cutWidth n_cutHeight [n_resistancePerCut] ) 
 ( x_cutRows x_cutCols ( l_cutSpace ) [(l_cutPattern)])
 (l_layer1Enc) (l_layer2Enc) 
 ( l_layer1Offset ) ( l_layer2Offset ) ( l_origOffset )
 [tx_implant1 ( l_implant1Enc ) 
  [tx_implant2 ( l_implant2Enc )  [ tx_wellSubstrate ] ] 
 ] 
)
) ;standardViaDefs

Description

Specifies standard via definitions. A standard via definition has a fixed set of parameters.

An advantage of using a standard via definition is that it is fully captured in the technology file, which makes it easier to manage the via definition.

standardViaDefs are more efficient than customViaDefs because they do not need to access a separate via master design and an external evaluation to determine geometries.

Arguments

t_viaDefName

  

The standard via definition name.
Valid values: Any string; it must be unique in the technology database graph

tx_layer1

Preferably, but not necessarily, the bottom routing layer of the via.
Valid values: The layer name or the layer number

tx_layer2

Preferably, but not necessarily, the top routing layer of the via.
Valid values: The layer name or the layer number

tx_cutLayer

The cut layer.
Valid values: The layer name or the layer number; the layer function must be cut

The mask number of the bottom layer must be lower than the mask number of the cut layer, which, in turn, must be lower than the mask number of the top layer.

f_cutWidth

The width of a cut.
Valid values: Any floating-point number

f_cutHeight

The height of a cut.
Valid values: A floating-point number

n_resistancePerCut

The resistance per cut.
Valid values: Any number

x_cutRows

The number of cut rows.
Valid values: An integer

x_cutCols

The number of cut columns.
Valid values: An integer

l_cutSpace

A list defining the distance between cuts. The syntax is as follows:
( f_width f_height )
where, f_width is the spacing between cuts in the X direction, and f_height is the spacing between cuts in the Y direction.
Valid values: A floating-point number

l_cutPattern

A list representing the cuts in each row.
Valid values: Either 0 or 1

l_layer1Enc

A list defining the distance from the edge of the cut layer to the edge of layer1. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the cut edge to the edge of layer1 in the X direction, and f_height is the distance from the cut edge to the edge of layer1 in the Y direction.
Valid values: A floating-point number

l_layer2Enc

A list defining the distance from the edge of the cut layer to the edge of layer2. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the cut edge to the edge of layer2 in the X direction, and f_height is the distance from the cut edge to the edge of layer2 in the Y direction.
Valid values: A floating-point number

l_layer1Offset

A list defining the offset for layer1. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

l_layer2Offset

A list defining the offset for layer2. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

l_origOffset

A list defining the offset for the origin of the via. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

tx_implant1

The first implant layer of the via.
Valid values: The layer name or the layer number

l_implant1Enc

A list defining the distance from the edge of layer1 to the edge of implant1 layer. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the edge of layer1 to the edge of implant1 layer in the X direction, and f_height is the distance from the edge of layer1 to the edge of implant1 layer in the Y direction.
Valid values: A floating-point number

tx_implant2

The second implant layer of the via.
Valid values: The layer name or the layer number

l_implant2Enc

A list defining the distance from the edge of layer2 to the edge of implant2 layer. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the edge of layer2 to the edge of implant2 layer in the X direction, and f_height is the distance from the edge of layer2 to the edge of implant2 layer in the Y direction.
Valid values: A floating-point number

tx_wellSubstrate

When specified, placing the via on the specified well causes the via to be an electrical connection to the well.
Valid values: A well that is of type nwell or pwell or of name substrate

Example

standardViaDefs(
; ( viaDefName layer1 layer2 ( cutLayer cutWidth cutHeight [ resistancePerCut ] )
; ( cutRows cutCol ( cutSpace ) [( l_cutPattern )])
; ( layer1Enc ) (layer2Enc) ( layer1Offset ) ( layer2Offset ) ( origOffset )
; [implant1 (implant1Enc) [implant2 (implant2Enc) [wellSubstrate]]])
  ( M2xM1xG   M1   M2    ( "VIA1"  0.13  0.13  5.0 )
( 1 1 ( 0.15 0.15 ) )
( 0.05 0.005 ) ( 0.05 0.005 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
pimplant (1.0 1.0)
)
  ( M1_P   diff   metal1   ("cont"  0.6   0.6 )
( 2 4 ( 0.6 0.6 ) (( 1 0 1 0 ) ( 1 1 0 1 )))
( 0.6 0.6 ) ( 0.6 0.6 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
  )
  ( M3xM2xG   M2   M3   ( "VIA2"  0.13  0.13  5.0 )
( 1 1 ( 0.15 0.15 ) )
( 0.05 0.005 ) ( 0.05 0.005 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
)
  ( M4xM3xG   M3   M4   ( "VIA3"  0.13  0.13  5.0 )
( 1 1 ( 0.15 0.15 ) )
( 0.05 0.005 ) ( 0.05 0.005 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
)
  ( M5xM4xG   M4   M5   ( "VIA4"  0.13  0.13  5.0 )
( 1 1 ( 0.15 0.15 ) )
( 0.05 0.005 ) ( 0.05 0.005 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
)
  ( M6xM5xG   M5   M6   ( "VIA5"  0.36  0.36  5.0 )
( 1 1 ( 0.29 0.29 ) )
( 0.09 0.03 ) ( 0.09 0.03 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
)
  
  ( PTAP   pdiff   M1   ( "contact"  1.0  1.0 )
( 1 1 ( 1.0 1.0 ) )
( 1.0 1.0 ) ( 0.5 0.5 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
nil nil nil nil substrate
)
  ( NTAP   ndiff   M1   ( "contact"  1.0  1.0 )
( 1 1 ( 1.0 1.0 ) )
( 1.0 1.0 ) ( 0.5 0.5 ) ( 0.0 0.0 ) ( 0.0 0.0 ) ( 0.0 0.0 )
nil nil nil nil nwell
)
) ;standardViaDefs

customViaDefs

customViaDefs(
( t_viaDefName 
  t_libName 
  t_cellName
  t_viewName
  tx_layer1
  tx_layer2
  n_resistancePerCut 
)
) ;customViaDefs

Description

Specifies custom via definitions. To specify a custom via definition, the cellview on which it is based must exist in the specified library. Unlike standardViaDefs that describe all the via layers and dimensions, customViaDefs define only a list of existing cellviews.

Custom via definitions do not define geometric parameters; they define only the name of the via and the <lib | cell | view> information.

The technology dumper outputs customViaDef with a leading ";" comment when the following criteria is met:

Arguments

t_viaDefName

The custom via definition name.
Valid values: Any string; it must be unique in the technology database graph

t_libName

The name of the design library that contains the cellview of the via device.
Valid values: Any valid design library name

t_cellName

The name of the cell for the via definition.
Valid values: Any valid cell name

t_viewName

The name of the view of the cell for the via definition.
Valid values: Any valid view name

tx_layer1

The bottom routing layer of the via.
Valid values: The layer name or the layer number

tx_layer2

The top routing layer of the via.
Valid values: The layer name or the layer number

The mask number of the bottom layer must be lower than the mask number of the top layer.

n_resistancePerCut

  

The resistance per cut.
Valid values: Any number
Default: 0.0

Example

customViaDefs(
; ( viaDefName        libName     cellName     viewName  layer1 layer2
; resistancePerCut )
( M2_M1_H testTech4 M2_M1_H via M1 M2 5.0 )
( M2_M1_H "2testTech" M2_M1_H via M1 M2 5.0 )
( M2_M1_V1 testTech4 M2_M1_V1 via M1 M2 5.0 )
( M2_M1_V2 testTech4 M2_M1_V2 via M1 M2 5.0 )
( M2_M1_DBLCUT_E testTech4 M2_M1_DBLCUT_E via M1 M2 5.0 )
( M2_M1_DBLCUT_W testTech4 M2_M1_DBLCUT_W via M1 M2 5.0 )
( M2_M1_QUADCUT_NE testTech4 M2_M1_QUADCUT_NE via M1 M2 5.0 )
( M2_M1_QUADCUT_NW testTech4 M2_M1_QUADCUT_NW via M1 M2 5.0 )
( M2_M1_QUADCUT_SE testTech4 M2_M1_QUADCUT_SE via M1 M2 5.0 )
( M2_M1_QUADCUT_SW testTech4 M2_M1_QUADCUT_SW via M1 M2 5.0 )
( M3_M2_SINGLE testTech4 M3_M2_SINGLE via M2 M3 5.0 )
( M3_M2_V1 testTech4 M3_M2_V1 via M2 M3 5.0 )
( M3_M2_V2 testTech4 M3_M2_V2 via M2 M3 5.0 )
( M3_M2_TOS testTech4 M3_M2_TOS via M2 M3 5.0 )
( M3_M2_DBLCUT_E testTech4 M3_M2_DBLCUT_E via M2 M3 5.0 )
( M3_M2_DBLCUT_W testTech4 M3_M2_DBLCUT_W via M2 M3 5.0 )
( M3_M2_QUADCUT_NE testTech4 M3_M2_QUADCUT_NE via M2 M3 5.0 )
( M3_M2_QUADCUT_NW testTech4 M3_M2_QUADCUT_NW via M2 M3 5.0 )
( M3_M2_QUADCUT_SE testTech4 M3_M2_QUADCUT_SE via M2 M3 5.0 )
( M3_M2_QUADCUT_SW testTech4 M3_M2_QUADCUT_SW via M2 M3 5.0 )
( M4_M3_SINGLE testTech4 M4_M3_SINGLE via M3 M4 5.0 )
( M4_M3_V1 testTech4 M4_M3_V1 via M3 M4 5.0 )
( M4_M3_V2 testTech4 M4_M3_V2 via M3 M4 5.0 )
( M4_M3_TOS testTech4 M4_M3_TOS via M3 M4 5.0 )
( M4_M3_DBLCUT_N testTech4 M4_M3_DBLCUT_N via M3 M4 5.0 )
( M4_M3_DBLCUT_S testTech4 M4_M3_DBLCUT_S via M3 M4 5.0 )
( M4_M3_QUADCUT_NE testTech4 M4_M3_QUADCUT_NE via M3 M4 5.0 )
( M4_M3_QUADCUT_NW testTech4 M4_M3_QUADCUT_NW via M3 M4 5.0 )
( M4_M3_QUADCUT_SE testTech4 M4_M3_QUADCUT_SE via M3 M4 5.0 )
( M4_M3_QUADCUT_SW testTech4 M4_M3_QUADCUT_SW via M3 M4 5.0 )
( M5_M4_SINGLE testTech4 M5_M4_SINGLE via M4 M5 5.0 )
( M5_M4_V1 testTech4 M5_M4_V1 via M4 M5 5.0 )
( M5_M4_V2 testTech4 M5_M4_V2 via M4 M5 5.0 )
( M5_M4_TOS testTech4 M5_M4_TOS via M4 M5 5.0 )
( M5_M4_DBLCUT_E testTech4 M5_M4_DBLCUT_E via M4 M5 5.0 )
( M5_M4_DBLCUT_W testTech4 M5_M4_DBLCUT_W via M4 M5 5.0 )
( M5_M4_QUADCUT_NE testTech4 M5_M4_QUADCUT_NE via M4 M5 5.0 )
( M5_M4_QUADCUT_NW testTech4 M5_M4_QUADCUT_NW via M4 M5 5.0 )
( M5_M4_QUADCUT_SE testTech4 M5_M4_QUADCUT_SE via M4 M5 5.0 )
( M5_M4_QUADCUT_SW testTech4 M5_M4_QUADCUT_SW via M4 M5 5.0 )
( M6_M5_SINGLE testTech4 M6_M5_SINGLE via M5 M6 5.0 )
( M6_M5_DBLCUT_N testTech4 M6_M5_DBLCUT_N via M5 M6 5.0 )
( M6_M5_DBLCUT_S testTech4 M6_M5_DBLCUT_S via M5 M6 5.0 )
( M6_M5_DBLCUT_E testTech4 M6_M5_DBLCUT_E via M5 M6 5.0 )
( M6_M5_DBLCUT_W testTech4 M6_M5_DBLCUT_W via M5 M6 5.0 )
) ;customViaDefs
A name that starts with a number should be enclosed in double quotes for the technology file compiler to compile it successfully. For example, if your technology file contains a custom via definition such as (V12_HV_via 0techlib V12_HV via METAL1 METAL2 4.0), you must enclose the library name starting with a number, 0techlib, in double quotes; for example, "0techlib". Similarly, any string type entry, such as 0Metal, that starts with a number, must also be defined as "0Metal".

standardViaVariants

standardViaVariants( 
( t_viaVariantName t_viaDefName (tx_cutLayer f_cutWidth f_cutHeight)
 (x_cutRows x_cutCol (l_cutSpace))
 (l_layer1Enc) (l_layer2Enc) (l_layer1Offset) (l_layer2Offset)
 (l_origOffset)
 (l_implant1Enc) (l_implant2Enc) (l_cutPattern)
)
) ;standardViaVariants

Description

Defines standard via variants. This subsection specifies the parameters applied to create a named variant of the specified standard via definition.

The standardViaVariants() subsection must be placed after the standardViaDefs() subsection in the technology file.

Each variant must have a unique name and definition. Multiple variants of the same standard via must specify at least one unique parameter. This is because the technology file compiler rejects multiple identical variants of the same custom via.

Arguments

t_viaVariantName

The name of the standard via variant.
Valid values: Any string; it must be unique in the technology database graph

t_viaDefName

The name of the standard via definition.
Valid values: Any valid standardViaDef name

tx_cutLayer

The cut layer.
Valid values: The layer name or the layer number; the layer function must be cut

The mask number of the bottom layer must be lower than the mask number of the cut layer, which, in turn, must be lower than the mask number of the top layer.

f_cutWidth

The width of a cut.
Valid values: A floating-point number

f_cutHeight

The height of a cut.
Valid values: A floating-point number

x_cutRows

The number of cut rows.
Valid values: An integer

x_cutCols

The number of cut columns.
Valid values: An integer

l_cutSpace

A list defining the distance between cuts. The syntax is as follows:
( f_width f_height )
where, f_width is the spacing between cuts in the X direction, and f_height is the spacing between cuts in the Y direction.
Valid values: A floating-point number

l_layer1Enc

A list defining the distance from the edge of the cut layer to the edge of layer1. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the cut edge to the edge of layer1 in the X direction, and f_height is the distance from the cut edge to the edge of layer1 in the Y direction.
Valid values: A floating-point number

l_layer2Enc

A list defining the distance from the edge of the cut layer to the edge of layer2. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the cut edge to the edge of layer2 in the X direction, and f_height is the distance from the cut edge to the edge of layer2 in the Y direction.
Valid values: A floating-point number

l_layer1Offset

A list defining the offset for layer1. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

l_layer2Offset

A list defining the offset for layer2. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

l_origOffset

A list defining the offset for the origin of the via. The syntax is as follows:
( f_width f_height )
where, f_width is the horizontal offset, and f_height is the vertical offset.
Valid values: A floating-point number

l_implant1Enc

A list defining the distance from the edge of layer1 to the edge of implant1 layer. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the edge of layer1 to the edge of implant1 layer in the X direction, and f_height is the distance from the edge of layer1 to the edge of implant1 layer in the Y direction.
Valid values: A floating-point number

l_implant2Enc

A list defining the distance from the edge of layer2 to the edge of implant2 layer. The syntax is as follows:
( f_width f_height )
where, f_width is the distance from the edge of layer2 to the edge of implant2 layer in the X direction, and f_height is the distance from the edge of layer2 to the edge of implant2 layer in the Y direction.
Valid values: A floating-point number

l_cutPattern

A list representing the cuts in each row.
Valid values: Either 0 or 1

Example

standardViaDefs(
; ( viaDefName layer1 layer2 ( cutLayer cutWidth cutHeight [ resistancePerCut ] )
; ( cutRows cutCol ( cutSpace ) )
; ( layer1Enc ) (layer2Enc) ( layer1Offset ) ( layer2Offset ) ( origOffset )
; [implant1 (implant1Enc) [implant2 (implant2Enc)]])
  ( M2xM1xG  M1  M2  ("VIA1"  0.13  0.13  5.0)
    (1  1  (0.15 0.15))
    (0.0 0.0) (0.0 0.0) (0.0 0.0)
    pimplant (1.0 1.0)
)
) ;standardViaDefs
standardViaVariants(
; ( viaVariantName viaDefName ( cutLayer cutWidth cutHeight )
; ( cutRows cutCol ( cutSpace ) )
; ( layer1Enc ) (layer2Enc) ( layer1Offset ) ( layer2Offset ) ( origOffset )
; (implant1Enc) (implant2Enc) (cut_pattern]])
  ( M2xM1xG_Var1  M2xM1xG  ( "VIA1" 0.15 0.15 )
    (1  1  (0.2 0.2))
    (0.05 0.005) (0.05 0.005) (0.1 0.0) (0.0 0.0) (0.0 0.0)
    ( 1.0 1.0 ) nil ((1 1) (1 1))
)
) ;standardViaVariants

Defines a variant named M2xM1XG_Var1 of the standard via definition M2xM1xG with the following modified parameters:

customViaVariants

customViaVariants(
( t_viaVariantName 
  t_viaDefName 
  l_viaParams
)
) ;customViaVariants

Description

Defines custom via variants. The subsection specifies the parameters applied to create a named variant of the specified custom via definition.

The customViaVariants() subsection must be placed after the customViaDefs() subsection in the technology file.

Each variant must have a unique name and definition and can take any list of parameter-value pairs. However, multiple variants of the same custom via must specify at least one unique parameter. This is because the technology file compiler rejects multiple identical variants of the same custom via.

Arguments

t_viaVariantName

The name of the custom via variant.
Valid values: Any string; it must be unique in the technology database graph

t_viaDefName

The name of the custom via definition.
Valid values: Any valid customViaDef name

l_viaParams

A list or lists of parameters to apply to the custom via variant. The syntax is as follows:
( t_paramName g_paramValue ) …
where, paramName is the name of the parameter and paramValue is the value of the parameter

The technology file compiler does not perform checks on the parameters specified.

Examples

customViaDefs(
; ( viaDefName libName cellName viewName layer1 layer2 resistancePerCut )
( M2_M1_H testTech4 M2_M1_H via M1 M2 5.0 )
( M2_M1_V1 testTech4 M2_M1_V1 via M1 M2 5.0 )
) ;customViaDefs
customViaVariants(
; ( viaVariantName viaDefName parameters )
( M2_M1_H_VAR1 M2_M1_H (param1 0.0 ) (param2 1.0))
) ;customViaVariants

Defines a variant of the custom via definition M2_M1_H and adds parameters param1 with value 0.0 and param2 with value 1.0.

;********************************
; DEVICES
;********************************
devices(
tcCreateCDSDeviceClass()
cdsViaDevice(
 ; (name cutLayer cutPurpose layer1 purpose1 layer2 purpose2 
; row column origin stackedVias cutLayerW cutLayerL xCutSpacing yCutSpacing
; layer1XDirOverride layer1YDirOverride layer2XDirOverride layer2YDirOverride
; layer1Dir layer2Dir
; layer1XDefOverride layer1YDefOverride layer2XDefOverride layer2YDefOverride
; implantLayer1 implantLayer2 diffSpacing abutClass)
 ( viaM2V2M3 V2 drawing M2 drawing M3 drawing
1 1 centerCenter t _def_ _def_ 0.05 0.05
0.02 0.02 _def_ 0.008
  ; "Y" "X"
  "" ""
  0 0 0 0
  ; (
; (("Nwell" "drawing") 1)
; )
; (
; (("Nimp" "drawing") 0.5)
; )
  nil nil _def_ ""
)
) ;devices
customViaDefs(
 ;( viaDefName libName cellName viewName layer1 layer2 resistancePerCut)  
;( ---------- ------- -------- -------- ------ ------ ----------------)
  ( viaM2V2M3 techlib viaM2V2M3 layout M2 M3 0.0 )
) ;customViaDefs
customViaVariants(
 ;(viaVariantName viaDefName (paramName paramValue) …)  
;( -------------------------------------------------)
  ( viaM2V2M3_LY1x1 viaM2V2M3
("row" 1)
("column" 1)
("xCutSpacing" 0.08)
("yCutSpacing" 0.08)
("layer1XDefOverride" 0.000)
("layer1YDefOverride" 0.032)
("layer1YEnclosure" 0.008)
("layer2XEnclosure" 0.008)
("layer2XDefOverride" 0.032)
("layer2YDefOverride" 0.000)
)
  ( viaM2V2M3_LY2x2 viaM2V2M3
("row" 2)
("column" 2)
("xCutSpacing" 0.08)
("yCutSpacing" 0.08)
("layer1XDefOverride" 0.014)
("layer1YEnclosure" 0.014)
("layer2XEnclosure" 0.008)
("layer2YDefOverride" 0.008)
)
) ;customViaVariants

Defines custom via variants named viaM2V2M3_LY1x1 and viaM2V2M3_LY2x2 of the custom via definition viaM2V2M3 and adds a set of parameters to these.

cdsFixedViaDefs

cdsFixedViaDefs(
l_list
) 
=> t / nil

Description

Specifies the technology class to define the cds fixed viaDef.

Arguments

l_list

List of layers.

Example

cdsFixedViaDefs(
(fixedVia1
(layers
(layer1 Metal1)
(layer2 Metal2)
(cutLayer Cont)
)
)

cdsGenViaDefs

cdsGenViaDefs(
( t_viaDefName
  (layers
  ; ** Base Layers and extra layers **
 (layer1 tx_layer1)
 (layer2 tx_layer2)
 (cutLayer tx_cutLayer)
  )
  [(extraLayers
 ; ** Extra layers **
 [(layer1ExtraLayers l_layer1ExtraLayers)]
 [(layer2ExtraLayers l_layer2ExtraLayers)]
 [(cutExtraLayers l_cutExtraLayers)]
   ) 
  ]
  ; l_extraLayers := ({tx_layer} …)
  (parameters
 (cutWidth f_cutWidth)
 (cutHeight f_cutHeight)
 ; ** Other Default parameters **
 [(layer1Purpose tx_layer1Purpose)]
 [(layer1Enc l_layer1Enc)]
 [(layer2Purpose tx_layer2Purpose)]
 [(layer2Enc l_layer2Enc)]
 [(cutPurpose tx_cutPurpose)]
 [(cutSpacing x_cutSpacingX x_cutSpacingY)]
 [(cutRows n_cutRows)]
 [(cutColumns n_cutColumns)]
 [(cutPattern l_cutPattern)]
 [(alignment t_alignment)]
 [(originOffset (f_XOffset f_YOffset)]
 [(layer1ExtraParams l_layer1ExtraParams)]
 [(layer2ExtraParams l_layer2ExtraParams)]
 [(cutLayerExtraParams l_cutLayerExtraParams)]
 [(cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing)]
 [(cutArrayPatternX l_cutArrayPatternX)]
 [(cutArrayPatternY l_cutArrayPatternY)]
 [(version n_version)]
  ) 
; l_enc := ( x_left x_right x_top x_bottom )
; l_pattern := ( ( {0|1} ... ) ... )
; l_extraLayerParams := ( ( [(enc l_enc)] [(purpose tx_purpose)] ) ... )
; l_cutArrayPattern := ( {x_num} ... )
)
…
) ;cdsGenViaDefs 

Description

Specifies the definition of the layers and the default parameter values to use for all instances of the vias created from the definition.

It declares vias of the Cadence-defined cdsGenVia type with advanced features such as purpose-specific vias with an unlimited number of extra layers for each of the three primary layers and cut array support.

The via parameters can be grouped as follows:

Each of the three primary layers can have any number of extra layers. Shapes on the extra layers are generated relative to their parent layer, with an optional enclosure and shape purpose value.

Cuts can be grouped into arrays for multi-cut cdsGenVias. In such a case, the cutSpacing value applies to cuts within each array and cutArraySpacing specifies the spacing between arrays. The size of each array is specified using cutArrayPatternX and cutArrayPatternY. For example, if there are 7 cut rows, and cutArrayPatternY has the value (3 4), then the cuts would be grouped into 2 arrays in the Y direction, the lower one with 3 cuts and the upper one with 4 cuts.

Arguments

t_viaDefName

The via definition name.
Valid values: Any string; it must be unique in the technology database graph

layer1 tx_layer1

The bottom routing layer of the via.
Valid values: The layer name or the layer number

layer2 tx_layer2

The top routing layer of the via.
Valid Values: The layer name or the layer number

cutLayer tx_cutLayer

  

The cut layer.
Valid values: The layer name or the layer number; the layer function must be cut

The mask number of the bottom layer must be lower than the mask number of the cut layer, which, in turn, must be lower than the mask number of the top layer.

layer1ExtraLayers l_layer1ExtraLayers

A list of layer names on which additional via shapes are generated. The shapes are generated with an enclosure relative to layer1 as specified in layer1ExtraParams.

layer2ExtraLayers l_layer2ExtraLayers

A list of layer names on which additional via shapes are generated. The shapes are generated with an enclosure relative to layer2 as specified in layer2ExtraParams.

cutExtraLayers l_cutExtraLayers

A list of layer names on which additional via shapes are generated. The shapes are generated with an enclosure relative to cutLayer as specified in cutLayerExtraParams.

cutWidth x_cutWidth

The width of a cut.
Valid values: A floating-point number

cutHeight x_cutHeight

The height of a cut.
Valid values: A floating-point number

layer1Purpose tx_layer1Purpose

The purpose name of the bottom routing layer-purpose pair.

layer1Enc l_layer1Enc

A list defining the distance from the edge of the cut array to the edge of layer1. The enclosure is specified separately on all four sides. The syntax is as follows:
(x_left x_right x_top x_bottom)
Valid values: A floating-point number

layer2Purpose tx_purpose

The purpose name of the top routing layer-purpose pair.

layer2Enc l_layer2Enc

A list defining the distance from the edge of the cut array to the edge of layer2. The enclosure is specified separately on all four sides. The syntax is as follows:
(x_left x_right x_top x_bottom)
Valid values: A floating-point number

cutPurpose tx_cutPurpose

The purpose for cut shapes. The default value is drawing.

cutSpacing x_cutSpacingX x_cutSpacingY

A list defining the distance between cuts.The syntax is as follows:
( x_spaceX x_spaceY )
where, x_spaceX is the spacing between cuts in the X direction, and x_spaceY is the spacing between cuts in the Y direction.
Valid values: A floating-point number

cutRows n_cutRows

The number of cut rows.
Valid values: An integer

cutColumns n_cutColumns

The number of cut columns.
Valid values: An integer

cutPattern l_cutPattern

A list representing the cuts in the via. To enable a cut, use 1, and to disable a cut use 0.

alignment t_alignment

The alignment of the cut matrix.
Valid values: upperLeft, centerLeft, lowerLeft, upperCenter, centerCenter, lowerCenter, upperRight, centerRight, lowerRight, offset

originOffset (f_XOffset f_YOffset)

The origin offset of the via as an absolute value. The syntax is is follows:
(x_offsetX x_offsetY)
This parameter can be used only if the alignment is set to offset.
Valid values: A floating-point number

layer1ExtraParams l_extraLayer1Params

The enclosure and purpose for the extra layer1 layers. This is an ordered list with entries for each extra layer.
Valid values: enc, purpose

layer2ExtraParams l_extraLayer2Params

The enclosure and purpose for the extra layer2 layers. This is an ordered list with entries for each extra layer.
Valid values: enc, purpose

cutLayerExtraParams l_cutLayerExtraParams

The enclosure and purpose for the extra cut layers. This is an ordered list with entries for each extra layer.
Valid values: enc and purpose

If there are multiple rows or columns, a corresponding shape on each extra cut layer is generated for each cut shape. The enclosure is relative to the individual cut shape.

cutArraySpacing (f_XOffset f_YOffset)

The spacing between cut arrays, if cuts are grouped into arrays.

cutArrayPatternX l_cutArrayPatternX

Each entry specifies the number of cuts to group together in a left-to-right direction. The sum of all numbers must be equal to the number of cut columns.

cutArrayPatternY l_cutArrayPatternY

Each entry specifies the number of cuts to group together in a bottom-to-top direction.The sum of all numbers must be equal to the number of cut columns.

version n_version

The version number of the via generator to use. The only supported value is 1.
The version number is incremented by 1 whenever the generator is updated due to an extension or change in the parameter set.

Example

cdsGenViaDefs(
(via01
  (layers 
 (layer1   Poly) 
 (layer2   Metal1) 
 (cutLayer Cont)
  )
  (parameters
 (cutWidth   0.2)
 (cutHeight  0.2)
  )
)
(via1_Nwell_Nimp_hv
  (layers
 (layer1 "Metal1")
 (layer2 "Metal2")
 (cutLayer "Via1")
  )
  (extraLayers
 (layer1ExtraLayers ("Nwell" "Nimp"))
  )
  (parameters
 (cutWidth   0.2)
 (cutHeight  0.2)
 (cutSpacing 0.1 0.1)
 (cutRows    1) 
 (cutColumns 1)
 (layer1Purpose "hv")
 (layer1Enc (0.3 0.3 0.0 0.0))
 (layer2Purpose "hv")
 (layer2Enc (0.1 0.1 0.2 0.2))
 (cutPurpose "hv")
 (alignment "centerCenter")
 (layer1ExtraParams (
  ( (purpose hv) (enc (0.1 0.1 0.1 0.1)) )  ; Nwell   
  ( (purpose hv) (enc (1.0 1.0 0.0 0.0)) )  ; Nimp
  )
)
(via1_offset
  (layers
 (layer1 Metal1)
 (layer2 Metal2)
 (cutLayer Via1)
  )
  (parameters
 (cutWidth   0.2)
 (cutHeight  0.2)
 (cutSpacing 0.1 0.1)
 (cutRows    1) 
 (cutColumns 1)
 (alignment "offset")
 (originOffset (0.1 0.2) )
  )
)
(via1_arrays
  (layers
 (layer1 Metal1)
 (layer2 Metal2)
 (cutLayer Via1)
  )
  (parameters
 (cutWidth   0.2)
 (cutHeight  0.2)
 (cutSpacing 0.1 0.1)
 (cutRows    5) 
 (cutColumns 4)
 (alignment "lowerLeft")
 (cutArraySpacing  0.15 0.15 )
 (cutArrayPatternX (2 2) )
 (cutArrayPatternY (2 3) )
  )
)
(via1_pattern
  (layers
 (layer1 Metal1)
 (layer2 Metal2)
 (cutLayer Via1)
  )
  (parameters
 (cutWidth   0.2)
 (cutHeight  0.2)
 (cutSpacing 0.1 0.1)
 (cutRows    5) 
 (cutColumns 4)
 (alignment "lowerLeft")
 (cutPattern ( (1 0 1 0 ) (0 1 0 1) (1 0 1 0) (0 1 0 1) (1 0 1 0) ) )
  )
)
) ;cdsGenViaDefs

cdsGenViaVariants

cdsGenViaVariants(
( t_viaVariantName
  t_viaDefName
  (parameters
 [(layer1Purpose tx_layer1Purpose)]
    [(layer2Purpose tx_layer2Purpose)]
    [(cutPurpose tx_cutPurpose)]
    [(cutWidth f_cutWidth)]
    [(cutHeight f_cutHeight)]
    [(cutColumns n_cutColumns)]
    [(cutRows n_cutRows)]
    [(cutSpacing f_Xspacing f_Yspacing)]
    [(layer1Enc l_fourEnclosures1)]
    [(layer2Enc l_fourEnclosures2) ]
    [(cutPattern  l_cutPattern )]
    [(alignment t_alignment)]
    [(originOffset (f_Xoffset f_Yoffset) ]
    [(cutArraySpacing f_XCutArraySpacing f_YCutArraySpacing)]
    [(version n_version)]
    [(layer1ExtraParams l_layer1ExtraParams)]
    [(layer2ExtraParams l_layer2ExtraParams)]
    [(cutArrayPatternX l_cutArrayPatternX)]
    [(cutArrayPatternY l_cutArrayPatternY)]
  )
  ) 
) ;cdsGenViaVariants 

Description

Specifies generated via variants and the default parameter values to use for all instances of the generated via variants created from a specified generated via definition.

Arguments

t_viaVariantName

The generated via variant name.
Valid values: Any string; it must be unique in the technology database graph

t_viaDefName

The name of an existing generated via definition to associate with the variant.

parameters

The parameters for the variant.

For descriptions of parameters, see cdsGenViaDefs.

Example

cdsGenViaVariants(
;(viaVariantName viaDefName (parameters (paramName paramValue) ...))
;( -------------------------------------------------------------------------- )
    ( vv1 myGenVia parameters
     (layer1Purpose "net")
(layer1Enc (0.0 0.0 0.1 0.1))
(layer2Purpose "net")
(layer2Enc (0.2 0.2 0.2 0.2))
(cutPurpose "fill")
(cutWidth 0.1)
(cutHeight 0.1)
(cutSpacing 0.1 0.1)
(cutRows 8)
(cutColumns 6)
(cutPattern ((0 1 1 1 1 1) (1 0 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1)
(1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1)))
(alignment "offset")
(originOffset (0.1 0.1))
(layer1ExtraParams (((purpose "net") (enc (0.3 0.3 0.3 0.3)))
((purpose "drawing") (enc (0.2 0.2 0.2 0.2)))))
(layer2ExtraParams (((purpose "net") (enc (0.3 0.3 0.3 0.3)))))
(cutLayerExtraParams (((purpose "net") (enc (0.3 0.3 0.3 0.3)))))
(cutArraySpacing 0.1 0.2)
(cutArrayPatternX (2 4))
(cutArrayPatternY (3 5))
(version 1)
)
) ;cdsGenViaVariants

viaSpecs

viaSpecs(
( 
  tx_layer1
  tx_layer2
  lt_viaDefNames
  [ 
  ( n_layer1MinWidth
    n_layer1MaxWidth
    n_layer2MinWidth
    n_layer2MaxWidth 
    lt_viaDefNames2
  )
  ] 
)
) ;viaSpecs

Description

Defines an array of via definitions and via variants, referred to as a via specification.

viaSpecs() does not support cdsGenViaDefs(). The oaViaSpec class and corresponding infrastructure are obsolete and superseded by the LEFSpecialRouteSpec and the oacValidRoutingVias constraints it contains. A via specification allows you to map two wire widths to a list of viaDefNames. It is used for power vias. Earlier, via specifications were used to store only the LEF VIARULE statement in OpenAccess. However, in the IC releases that use OpenAccess kits supporting Data Model 4, the validRoutingVias constraint is used to make power vias symmetric with signal vias. In addition, to help applications find that constraint, it is placed in a constraint group named LEFSpecialRouteSpec.

For more information about the LEF VIARULE statement, see LEF/DEF 5.8 Language Reference.

Arguments

tx_layer1

The first layer associated with the via specification.
Valid values: The layer name or the layer number

tx_layer2

The second layer associated with the via specification.
Valid values: The layer name or the layer number

lt_viaDefNames

A list of the names of the via definitions in the via definition array associated with the via specification. The syntax is as follows:
( t_viaDefName … )
Valid values: Any valid via definition or via variant name

n_layer1MinWidth

The minimum width of the first layer associated with the via specification, if set.
Valid values: Any number

n_layer1MaxWidth

The maximum width of the first layer associated with the via specification, if set.
Valid values: Any number

n_layer2MinWidth

The minimum width of the second layer associated with the via specification, if set.
Valid values: Any number

n_layer2MaxWidth

The maximum width of the second layer associated with the via specification, if set.
Valid values: Any number

lt_viaDefNames2

A list of names of the via definitions in the via definition array to which the minimum and maximum widths apply. The syntax is as follows:
( t_viaDefName … )
Valid values: Any valid via definition name

Example

viaSpecs(
( METAL1 METAL2 ( "Via12Array" )
(
(0.5 0.6 0.4 0.5 ( "Via12Array_south" ))
(0.6 0.7 0.4 0.5 ( "Via12Array_north" ))
)
)
) ;viaSpecs


Return to top
 ⠀
X