Product Documentation
Virtuoso Layout Suite XL: Basic Editing User Guide
Product Version IC23.1, November 2023

viaEngineContext User Type

When you call pre or post viaEngine callback function, the viaEngineContext user type is specified.

The following example depicts the sample usage of the user type information.

procedure(myPreViaEngineCB(veCxt)
printf("call pre viaEngine procedure with context '%s' and viaDef '%s'.\n" veCxt->operationType veCxt->viaModel->viaDef->name)
printf("overlapInfo is: ") 
println(veCxt->overlapInfo)
t
)
viaRegisterPreViaEngineCallback(“myPreViaEngineCB”)

When creating a via in single via mode, the following is the output of the above sample callback function:

\o call pre viaEngine procedure with context 'check' and viaDef 'M3_M2'.
\o overlapInfo is: nil

When creating a via in auto via mode, the following is the output of the sample callback function:

\o call pre viaEngine procedure with context 'generate' and viaDef 'M1_PO'.
\o overlapInfo is: ((((0.25 -4.0) (0.25 1.0) (-0.25 1.0) (-0.25 -4.0)) "Metal1" "drawing" "bottom to top" 0.5) (((1.0 -1.0) (1.0 2.0) (-1.0 2.0) (-1.0 -1.0)) "Poly" "drawing" "vertical" 2.0) ((-0.25 -1.0) (0.25 1.0)))
\r t

In this example, the value, 0.5, means that the first involved shape on Metal1 drawing has a width of 0.5. The value 2.0 means that the second involved shape on Poly drawing has a width of 2.0. And the intersection of the two shapes gives the following overlap box:

((-0.25 -1.0) (0.25 1.0))

Related Topics

Appendix 5, “Setting the Technology to Create Vias”

Calculation Modes for Via Parameters

Supported Constraints

Via Creation

viaRegisterPreViaEngineCallback


Return to top
 ⠀
X