dsd1-10 / dsd-08=skill / pcell
.docpcDefinePCell(list(ddGetObj("sasha" "MyRes" "layout")
;defaul parameters
(
(w string "2.0")
(l string cdfGetBaseCellCDF(ddGetObj("sasha" "MyRes")) -> l -> defValue )
(layer string "Metal1")
)
;; Local variable declare
;; Do NOT declare pcCellView (global variable for the PCell layout)
let(
(
techfileId
dbRectId
wNumber
lNumber
m1MinWidth
m2MinWidth
m1MinSpacing
m2MinSpacing
)
wNumber = evalstring(w)
lNumber = evalstring(l)
techfileId = techGetTechFile(pcCellView)
m1MinWidth = techGetSpacingRule(techfileId "minWidth" "Metal1")
when( layer == "Metal1" wNumber = wNumber * m1MinWidth)
dbRectId = dbCreateRect(pcCellView
list(layer "drawing")
list(0:0 lNumber:wNumber) )
when( layer == "Metal2"
m1MinSpacing = techGetSpacingRule(techfileId "minSpacing" "Metal1")
count = round(lNumber / (m1MinWidth+m1MinSpacing) )
for(i 0 count
dbCreateRect(pcCellView
list("Metal1" "drawing")
list( (m1MinSpacing+m1MinWidth)*i:1
(m1MinSpacing+m1MinWidth)*i+m1MinWidth:m1MinWidth)
)
)
)
;
; )
;)