blob: 7a040e7320a7c1be70373688e510da73d270927e [file] [log] [blame]
###############################################################################
# Optionally define the following when applicable
###############################################################################
set vars(mf_layers) "1 2 3 4 5 6" ; # Metal Fill Layer List
set vars(mf_winsize) "50 50 50 50 50 50" ; # Metal Fill Window Size
set vars(mf_winstep) "25 25 25 25 25 25" ; # Metal Fill Window Step
set vars(mf_minwidth) "0.3 0.3 0.3 0.3 0.3 0.4" ; # Metal Fill Minimum Width
set vars(mf_maxwidth) "3.0 3.0 3.0 3.0 3.0 3.0" ; # Metal Fill Max Width
set vars(mf_active) "0.3 0.3 0.3 0.3 0.3 0.6" ; # Metal Fill Active Spacing
set vars(mf_gap) "0.3 0.3 0.3 0.3 0.3 0.6" ; # Metal Fill Gap Spacing
set vars(mf_gap_opc) "0.3 0.3 0.3 0.3 0.3 0.6" ; # Metal Fill Gap Spacing (OPC)
set vars(mf_mindensity) "10 10 10 10 10 10" ; # Metal Fill Min Density
set vars(mf_minarea) "0.240 0.240 0.240 0.240 0.240 0.565"
set vars(mf_maxarea) "80.0 80.0 80.0 80.0 80.0 160.0"
# Metal Fill Min Length
set vars(mf_minlength) "\
[expr round([lindex $vars(mf_minarea) 0]/[lindex $vars(mf_minwidth) 0]+0.5)] \
[expr round([lindex $vars(mf_minarea) 1]/[lindex $vars(mf_minwidth) 1]+0.5)] \
[expr round([lindex $vars(mf_minarea) 2]/[lindex $vars(mf_minwidth) 2]+0.5)] \
[expr round([lindex $vars(mf_minarea) 3]/[lindex $vars(mf_minwidth) 3]+0.5)] \
[expr round([lindex $vars(mf_minarea) 4]/[lindex $vars(mf_minwidth) 4]+0.5)] \
[expr round([lindex $vars(mf_minarea) 5]/[lindex $vars(mf_minwidth) 5]+0.5)] \
"
# Metal Fill Max Length
set vars(mf_maxlength) "\
[expr round([lindex $vars(mf_maxarea) 0]/[lindex $vars(mf_maxwidth) 0]-0.5)] \
[expr round([lindex $vars(mf_maxarea) 1]/[lindex $vars(mf_maxwidth) 1]-0.5)] \
[expr round([lindex $vars(mf_maxarea) 2]/[lindex $vars(mf_maxwidth) 2]-0.5)] \
[expr round([lindex $vars(mf_maxarea) 3]/[lindex $vars(mf_maxwidth) 3]-0.5)] \
[expr round([lindex $vars(mf_maxarea) 4]/[lindex $vars(mf_maxwidth) 4]-0.5)] \
[expr round([lindex $vars(mf_maxarea) 5]/[lindex $vars(mf_maxwidth) 5]-0.5)] \
"
foreach layer $vars(mf_layers) {
set index [expr $layer-1]
setMetalFill \
-iterationName iter1 \
-layer $layer \
-windowSize [lindex $vars(mf_winsize) $index] [lindex $vars(mf_winsize) $index] \
-windowStep [lindex $vars(mf_winstep) $index] [lindex $vars(mf_winstep) $index] \
-minWidth [lindex $vars(mf_minwidth) $index] \
-maxWidth [lindex $vars(mf_maxwidth) $index] \
-minLength [lindex $vars(mf_minlength) $index] \
-maxLength [lindex $vars(mf_maxlength) $index] \
-activeSpacing [lindex $vars(mf_active) $index] \
-gapSpacing [lindex $vars(mf_gap) $index] \
-minDensity [lindex $vars(mf_mindensity) $index]
}
foreach layer $vars(mf_layers) {
set index [expr $layer-1]
setMetalFill \
-iterationName iter2 \
-layer $layer \
-windowSize [lindex $vars(mf_winsize) $index] [lindex $vars(mf_winsize) $index] \
-windowStep [lindex $vars(mf_winstep) $index] [lindex $vars(mf_winstep) $index] \
-minWidth [lindex $vars(mf_minwidth) $index] \
-maxWidth [lindex $vars(mf_maxwidth) $index] \
-minLength [lindex $vars(mf_minlength) $index] \
-maxLength [lindex $vars(mf_maxlength) $index] \
-activeSpacing [lindex $vars(mf_active) $index] \
-gapSpacing [lindex $vars(mf_gap_opc) $index] \
-minDensity [lindex $vars(mf_mindensity) $index]\
-opc
}
addMetalFill -iterationNameList {iter1 iter2} -timingAware sta