Fixing loads and wire loading for physical synthesis. Also put Milkyway library in each run directory so they don't conflict across runs

This commit is contained in:
David Harris 2023-02-17 10:52:17 -08:00
parent 41fbe32489
commit 1f9d425eab
2 changed files with 20 additions and 15 deletions

View File

@ -54,18 +54,20 @@ set MY_LIB_NAME $my_toplevel
# Create MW # Create MW
if { [shell_is_in_topographical_mode] } { if { [shell_is_in_topographical_mode] } {
echo "In Topographical Mode...processing\n" echo "In Topographical Mode...processing\n"
if {[file isdirectory $MY_LIB_NAME]} { create_mw_lib -technology $MW_REFERENCE_LIBRARY/$MW_TECH_FILE.tf \
echo "MW directory already here, deleting/readdding." -mw_reference_library $mw_reference_library $outputDir/$MY_LIB_NAME
[exec rm -rf $my_toplevel] # if {[file isdirectory $MY_LIB_NAME]} {
create_mw_lib -technology $MW_REFERENCE_LIBRARY/$MW_TECH_FILE.tf \ #echo "MW directory already here, deleting/reading."
-mw_reference_library $mw_reference_library $MY_LIB_NAME #[exec rm -rf $my_toplevel]
} else { # create_mw_lib -technology $MW_REFERENCE_LIBRARY/$MW_TECH_FILE.tf \
create_mw_lib -technology $MW_REFERENCE_LIBRARY/$MW_TECH_FILE.tf \ # -mw_reference_library $mw_reference_library $MY_LIB_NAME
-mw_reference_library $mw_reference_library $MY_LIB_NAME # } else {
} # create_mw_lib -technology $MW_REFERENCE_LIBRARY/$MW_TECH_FILE.tf \
# -mw_reference_library $mw_reference_library $MY_LIB_NAME
# }
# Open MW # Open MW
open_mw_lib $MY_LIB_NAME open_mw_lib $outputDir/$MY_LIB_NAME
# TLU+ # TLU+
set_tlu_plus_files -max_tluplus $MAX_TLU_FILE -min_tluplus $MIN_TLU_FILE \ set_tlu_plus_files -max_tluplus $MAX_TLU_FILE -min_tluplus $MIN_TLU_FILE \
@ -73,7 +75,7 @@ if { [shell_is_in_topographical_mode] } {
} else { } else {
if {[file isdirectory $MY_LIB_NAME]} { if {[file isdirectory $MY_LIB_NAME]} {
[exec rm -rf $my_toplevel] [exec rm -rf $my_toplevel]
echo "MW directory already here, deleting." echo "MW directory already here, deleting."
} }
echo "In normal DC mode...processing\n" echo "In normal DC mode...processing\n"
@ -152,7 +154,7 @@ if {$tech == "sky130"} {
} elseif {$drive == "FLOP"} { } elseif {$drive == "FLOP"} {
set_driving_cell -lib_cell scc9gena_dfxbp_1 -pin Q $all_in_ex_clk set_driving_cell -lib_cell scc9gena_dfxbp_1 -pin Q $all_in_ex_clk
} }
} elseif {$tech == "tsmc28"} { } elseif {$tech == "tsmc28" || $tech="tsmc28psyn"} {
if {$drive == "INV"} { if {$drive == "INV"} {
set_driving_cell -lib_cell INVD1BWP30P140 -pin ZN $all_in_ex_clk set_driving_cell -lib_cell INVD1BWP30P140 -pin ZN $all_in_ex_clk
} elseif {$drive == "FLOP"} { } elseif {$drive == "FLOP"} {
@ -178,7 +180,7 @@ if {$tech == "sky130"} {
} elseif {$drive == "FLOP"} { } elseif {$drive == "FLOP"} {
set_load [expr [load_of scc9gena_tt_1.2v_25C/scc9gena_dfxbp_1/D] * 1] [all_outputs] set_load [expr [load_of scc9gena_tt_1.2v_25C/scc9gena_dfxbp_1/D] * 1] [all_outputs]
} }
} elseif {$tech == "tsmc28"} { } elseif {$tech == "tsmc28" || $tech = "tsmc28psyn"} {
if {$drive == "INV"} { if {$drive == "INV"} {
set_load [expr [load_of tcbn28hpcplusbwp30p140tt0p9v25c/INVD4BWP30P140/I] * 1] [all_outputs] set_load [expr [load_of tcbn28hpcplusbwp30p140tt0p9v25c/INVD4BWP30P140/I] * 1] [all_outputs]
} elseif {$drive == "FLOP"} { } elseif {$drive == "FLOP"} {
@ -186,8 +188,10 @@ if {$tech == "sky130"} {
} }
} }
# Set the wire load model if ($tech != "tsmc28psyn") {
set_wire_load_mode "top" # Set the wire load model
set_wire_load_mode "top"
}
# Set switching activities # Set switching activities
# default activity factors are 1 for clocks, 0.1 for others # default activity factors are 1 for clocks, 0.1 for others

View File

@ -19,6 +19,7 @@ if __name__ == '__main__':
techs = ['sky90', 'tsmc28', 'tsmc28psyn'] techs = ['sky90', 'tsmc28', 'tsmc28psyn']
allConfigs = ['rv32gc', 'rv32imc', 'rv64gc', 'rv64imc', 'rv32e', 'rv32i', 'rv64i'] allConfigs = ['rv32gc', 'rv32imc', 'rv64gc', 'rv64imc', 'rv32e', 'rv32i', 'rv64i']
freqVaryPct = [-20, -12, -8, -6, -4, -2, 0, 2, 4, 6, 8, 12, 20] freqVaryPct = [-20, -12, -8, -6, -4, -2, 0, 2, 4, 6, 8, 12, 20]
freqVaryPct = [0, 10]
pool = Pool() pool = Pool()