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
Value Returned
|
The number of derived stop layers added to the technology file. |
|
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