Sie sind auf Seite 1von 5

;; load "/home/ureyesra/Desktop/SKILL/nmos_pCell_CDF_v5.

il"

let( (cellId cdfId)


when(cellId = ddGetObj("sandbox_ur_fill" "pcellnMos_v5")
;; if the cell CDF already exists, delete it
when( cdfId = cdfGetBaseCellCDF(cellId)
cdfDeleteCDF(cdfId)
)
;; create the base cell CDF
cdfId = cdfCreateBaseCellCDF(cellId)
;;; Parameters
cdfCreateParam( cdfId
?name "w"
?prompt "Width"
?defValue 4.5
?type "float"
?callback "length=cdfgData~>l~>value
woriginal=cdfgData~>w~>value
width=(3.304*length)+2.187
width=fix(width*100)
width=(width*1.0)/100
if((woriginal <width) then cdfgData~>w~>value =width
printf(\"\nWARNING: The value width=%L is not valid for this length (%L). The minimum width
is=%L\n\" woriginal length width) else)"
)
cdfCreateParam( cdfId
?name "distance"
?prompt "Inner space"
?defValue 0.6
?type "float"
?callback "if(cdfgData~>distance~>value <0.6) then cdfgData~>distance~>value =0.6 else"
)
cdfCreateParam( cdfId
?name "l"
?prompt "Length"
?defValue 0.7
?type "float"
?callback "length=cdfgData~>l~>value
woriginal=cdfgData~>w~>value
width=(3.304*length)+2.187
if((woriginal<width)
then
width=fix(width*100)
cdfgData~>w~>value =(width*1.0)/100
else)"
)
cdfCreateParam( cdfId
?name "pcConnSel"
?prompt "PC appendix mode"
?defValue "top"
?choices '("top" "bottom" "both")
?type "cyclic"
)
cdfCreateParam( cdfId
?name "PCext"
?prompt "PC extension"
?defValue 0.0
?type "float"
;?callback "if(cdfgData~>distance~>value <0.6) then cdfgData~>distance~>value
=0.6 else"
)
cdfCreateParam( cdfId
?name "extraPCcont"
?prompt "Contacts extra for gate connection"
?defValue 0
?type "int"
)
cdfCreateParam( cdfId
?name "encLeft"
?prompt "RX enclosure for CA left"
?defValue 0.2
?type "float"
?callback "if(cdfgData~>encLeft~>value <0.2) then cdfgData~>encLeft~>value =0.2 else"
)
cdfCreateParam( cdfId
?name "encRight"
?prompt "RX enclosure for CA right"
?defValue 0.2
?type "float"
?callback "if(cdfgData~>encRight~>value <0.2) then cdfgData~>encRight~>value =0.2
else"
)
cdfCreateParam( cdfId
?name "multip"
?prompt "Multiplicity for transistor"
?defValue 1
?type "int"
?callback "if(cdfgData~>multip~>value <1) then cdfgData~>multip~>value =1 else"
)
cdfCreateParam( cdfId
?name "eBR"
?prompt "Enable Bottom ring"
?defValue nil
?type "boolean"
)
cdfCreateParam( cdfId
?name "extraCB"
?prompt " Extend ring down in 0.56um steps"
?defValue 0
?type "int"
?display "cdfgData~>eBR~>value"
)
cdfCreateParam( cdfId
?name "eTR"
?prompt "Enable Top ring"
?defValue nil
?type "boolean"
)
cdfCreateParam( cdfId
?name "extraCT"
?prompt " Extend ring upwards in 0.56um steps"
?defValue 0
?type "int"
?display "cdfgData~>eTR~>value"
)
cdfCreateParam( cdfId
?name "eLR"
?prompt "Enable Left ring"
?defValue nil
?type "boolean"
)
cdfCreateParam( cdfId
?name "extraCL"
?prompt " Extend ring to Left in 0.56um steps"
?defValue 0
?type "int"
?display "cdfgData~>eLR~>value"
)
cdfCreateParam( cdfId
?name "eRR"
?prompt "Enable Right ring"
?defValue nil
?type "boolean"
)
cdfCreateParam( cdfId
?name "extraCR"
?prompt " Extend ring to Right in 0.56um steps"
?defValue 0
?type "int"
?display "cdfgData~>eRR~>value"
)
;------------------ESD------------------
cdfCreateParam( cdfId
?name "ESD"
?prompt "Enable ESD"
?defValue nil
?type "boolean"
)
cdfCreateParam( cdfId
?name "OP"
?prompt " Enable OP"
?defValue nil
?type "boolean"
?display "cdfgData~>ESD~>value"
)
cdfCreateParam( cdfId
?name "SBLK"
?prompt " Enable SBLK"
?defValue nil
?type "boolean"
?display "cdfgData~>ESD~>value"
)
cdfCreateParam( cdfId
?name "ALPHA"
?prompt " Enable ALPHA"
?defValue nil
?type "boolean"
?display "cdfgData~>ESD~>value"
)
cdfCreateParam( cdfId
?name "CAPBLK"
?prompt " Enable CAPBLK"
?defValue nil
?type "boolean"
?display "cdfgData~>ESD~>value"
)
cdfSaveCDF(cdfId)
); when
); let for CDF creation

Das könnte Ihnen auch gefallen