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

techCreateSnapPatternDef

techCreateSnapPatternDef(
d_techFileId
tx_name
(tx_layer tx_purpose)
t_stepDirection
n_step
[ l_snappingLayers ]
[ t_type ]
[ n_offset ]
[ n_trackWidth ]
[ l_trackGroups ]
)
=> d_snapPatternDefId / nil

Description

(Virtuoso Advanced Node for Layout Standard) Creates a snapPatternDef by using the specified parameters.

Arguments

d_techFileId

The ID of the technology file in which the snapPatternDef is to be created.

tx_name

The name of the snapPatternDef.

tx_layer

The layer name or number of the snapPatternDef.

tx_purpose

The purpose name or number of the snapPatternDef. The parent of this purpose must be "annotation".

t_stepDirection

The direction in which n_step is applied.

Valid values: vertical, horizontal

n_step

The distance between the pattern tracks of the snapPatternDef.

l_snappingLayers

A list of the layers, purposes, and enclosures that determine the shapes that snap to the snap pattern. Each entry is of the form:

(tx_snapLayer l_trackEnclosure [l_purposes]
[l_exceptOverlapLPPs]
["multiTrackCenter"|"singleTrackCenter"]

If l_purposes is not specified, then all shapes on tx_snapLayer snap to this snapPatternDef. The snapping is done by aligning the shapes on tx_snapLayer to the grid using one of the enclosures specified in l_trackEnclosure.

tx_snapLayer

A list of layers. Shapes on l_snappingLayers of a specific layer snap to a snap pattern. Applies to all layers if tx_snapLayer is not specified.

The list is specified in this format:

l_snappingLayers ( tx_snapLayer … )

l_trackEnclosure

A list of enclosures of a snapping shape beyond a grid line in the snap pattern direction. If vias and top-level shapes are present on the snapping layer (and snapping purpose, if used), they are snapped to the snap pattern grid by using this value.

The list is specified in this format:

l_trackEnclosures ( g_range … )

l_purposes

A list of purposes. Shapes on l_snappingLayers with a specific purpose snap to a snap pattern. Applies to all purposes if l_purposes is not specified.

The list is specified in this format:

l_purposes ( tx_snapPurpose … )

l_exceptOverlapLPPs

A list of layer-purpose name pairs. Applicable only when t_type is global. Snapping does not happen if a shape is completely inside the shape defined by l_exceptOverlapLPPs. If the shapes overlap partially, snapping does take place.

The list is specified in this format:

((t_layerName t_purposeName)…)

"multiTrackCenter"|"singleTrackCenter"

The snapping mode indicated by one of these values:

  • multiTrackCenter: Default value used when the attribute is not specified. It indicates if a shape can be centered on any number of tracks in a way that when the l_trackEnclosure value is met on both sides, it is snapped to the grid. When a shape is created, it is assumed that all edges will be on the grid and the first and second points always snap to the grid.
If the combined snapping layer BBox inside an instance can be centered in a way that the l_trackEnclosure value is met on both sides, then the instance snaps to the grid using that snapping layer. If no snapping layer BBox inside an instance snaps to the grid, then the instance is not snapped.
  • singleTrackCenter: Indicates if a shape can be centered on a single track in a way that when the trackEnclosure value is met on both sides, it is snapped to the grid. When a shape is created, it is not assumed that all edges will be on the grid. Only a shape with a dimension that is twice the l_trackEnclosure value would snap to the grid.
In this case, the combined snapping layer BBox is not considered. If the device contains any shape meeting the dimension rule, the shape is snapped even if the combined layer BBox does not meet the enclosure on both sides.

t_type

The type of this snapPatternDef.

Valid values: local (default), global

A global snapPatternDef can be applied to a cellview through a constraint.

A local snapPatternDef is only active if a shape on its LPP is drawn in the layout.

n_offset

The distance from the nearest period track to the anchor reference (either the lower edge of the PRBoundary or the origin axis).

n_trackWidth

The width of a snap pattern track. This is only for visualization.

l_trackGroups

(Virtuoso Advanced Node for Layout Only) A list of track groups. Each entry is of the form:

(n_numTracks x_space)

where,

  • n_numTracks is the number of tracks in each track group.
  • x_space is the spacing to the next track group.

Value Returned

d_snapPatternDefId

The ID of the created snapPatternDef.

nil

Returned in case of failure.

Example

techCreateSnapPatternDef( 
    tech 
    "gridDef" 
    list("Gridlayer" "type1") 
    "vertical" 
    0.4
    '(("Metal1" (0.045) ("drawing") (("Metal7" "drawing")) "singleTrackCenter")) 
    "global" 
    0.1 
    0.2 
    )

Creates a snapPatternDef for LPP Gridlayer/type1. The grid has a vertical direction with grid space 0.4, offset 0.1, and trackWidth 0.2. Shapes on Metal1/drawing snap to the snap pattern. No snapping takes place for Metal1/drawing shapes that fully overlap a Metal7/drawing shape. The track enclosure for Metal1 is 0.045. The snapping mode is singleTrackCenter.


Return to top
 ⠀
X