Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

ABE Layers

ABE operates on ABE layers that are temporary layers in memory, not layers in the cellview. ABE layers are mosaic-based structures that perform efficient operations by decomposing all objects into tiles, either rectangles or octagons.

Examples

To highlight a set, use this boolean operation:

; Initialize ABE
abeInit( geGetEditCellView() )
; Load input layers from cellview
M1 = abeLayerFromCellView( "Metal1" )
M2 = abeLayerFromCellView( "Metal2" ?purpose "drawing" ?depth 3)
; Create ABE output layers
m1Straddlem2 = abeNewLayer()
; ABE operation
abeLayerStraddle( M1 M2 m1Straddlem2 )
; Create a highlight set with the ABE output layer
hSet = geCreateWindowHilightSet( hiGetCurrentWindow() list( "Metal7" "drawing" ))
hSet->enable = t
abeLayerToHilightSet( m1Straddlem2 hSet )
; End the ABE session and release the memory
abeDone()

For cellview use this boolean operation:

; Initialize ABE
abeInit( geGetEditCellView() )
; Load input layers from cellview
M1 = abeLayerFromCellView( "Metal1" )
M2 = abeLayerFromCellView( "Metal2" ?purpose "drawing" )
; Create ABE output layers
m1Xorm2 = abeNewLayer()
; ABE operation
abeLayerXor( M1 M2 m1Xorm2 )
; Output the ABE Xor result to the Poly:drawing layer-purpose pair
abeLayerToCellView( m1Xorm2 "Poly" )
; End the ABE session and release the memory
abeDone()

Perform ABE Multithreading Using Queue

; Initialize with 8 threads
abeInit( geGetEditCellView() ?threads 8 )
; Load input layers from cellview
Poly = abeLayerFromCellView( "Poly" )
M1 = abeLayerFromCellView( "Metal1" )
M2 = abeLayerFromCellView( "Metal2" )
M3 = abeLayerFromCellView( "Metal3" )
M4 = abeLayerFromCellView( "Metal4" )
; Create ABE output layers
outLayer1 = abeNewLayer()
outLayer2 = abeNewLayer()
outLayer3 = abeNewLayer()
outLayer4 = abeNewLayer()
outLayer5 = abeNewLayer()
outLayer6 = abeNewLayer()
; ABE operations
abeLayerOr( Poly outLayer1 ?queue t )
abeLayerAnd( M1 M2 outLayer2 ?queue t )
abeLayerStraddle( M1 M2 outLayer3 ?queue t )
abeLayerSize( M2 outLayer4 0.25 ?queue t )
abeLayerGrow( M3 outLayer5 ?south 0.40 ?queue t )
abeLayerShrink( M4 outLayer6 ?east 0.20 ?west 0.22 ?queue t )
; Run the queue
abeRunQueue()
; Create a highlight set with an ABE output layer
hSet = geCreateWindowHilightSet( hiGetCurrentWindow() list( "Metal7" "drawing" ))
hSet->enable = t
abeLayerToHilightSet( outLayer2 hSet )
; End the ABE session and release the memory
abeDone()

Related Topics

Support for Multithreading in ABE Functions


Return to top
 ⠀
X