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

lceAddSimpleStopLayers

lceAddSimpleStopLayers(
libName
l_LayerNamePairs
)
=> x_derivedLayers / nil

Description

Adds simple derived layers to the validLayers section of the technology file that has the virtuosoDefaultExtractorSetup constraint group defined. This SKILL function can be useful for adding simple stop layers in memory when the technology file cannot be edited on disk. If a stop layer is added and the second layer has an unknown material, the material is automatically changed to recognition. If you add an invalid stop layer, you must close the design or launch a new Virtuoso session to refresh the memory.

Arguments

libName

Name of the library for which simple derived layers need to be added to the technology file.

l_LayerNamePairs

List of layer-name pairs that need to be added to the validLayers section of the technology file for the specified library.

Value Returned

x_derivedLayers

The number of derived stop layers added to the technology file.

nil

The command failed.

Example

lceAddSimpleStopLayers
("gpdk090" list(list("Oxide" "Poly") list("Metal1" "M1Resdum")))

Adds simple derived layers to the validLayers section of the gpdk090 library.

procedure(lceAddSimpleStopLayers(libName layerNamePairs)
(let (result(0) lib tech cg constraints validLayers num max layer1 layer2 derived stop)
;; Use SKILL lceAddSimpleStopLayers
;;     to libName tech adds in memory derived stop layers for each layerNamePair
;;     and adds the derived stop layers to the virtuosoDefaultExtractorSetup
;;     If a stop layer is added and the second layer has material unknown, it is
;;     changed to material recognition
;;     returns the number of derived stop layers added
lib = ddGetObj(libName)
when( lib
tech = techGetTechFile(lib)
when( tech 
cg = cstFindConstraintGroupIn(tech "virtuosoDefaultExtractorSetup")
tech        = cg~>tech 
constraints = cg~>objects
when( tech && constraints
validLayers = car(setof(constraint constraints if(constraint~>defName == "validLayers" t)))
when( validLayers
num = 1000
max = num * 2
foreach( pair layerNamePairs
layer1 = nth(0 pair)
layer2 = nth(1 pair)
when( stringp(layer1) && 
stringp(layer2) &&
layer1 != layer2 &&
techFindLayer(tech layer1) &&
techFindLayer(tech layer2)
sprintf(derived "lceAddSimpleStopLayers_%s_%s" layer1 layer2)
while( techGetLayerName(tech num) && num < max   
num = num + 1
)
when( num < max && 
techCreateDerivedLayer(tech num derived layer1 "not" layer2)
validLayers~>value = cons(derived validLayers~>value)
stop = techFindLayer(tech layer2)
when( stop~>material == "unknown"
stop~>material = "recognition"
)
result = result + 1
)
)
)
) 
)
)
)
result
)
)

The procedure below illustrates how the lceAddSimpleStopLayers SKILL function can be used to add simple stop layers.


Return to top
 ⠀
X