You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
3.6 KiB
Tcl
149 lines
3.6 KiB
Tcl
3 years ago
|
if {![info exists standalone] || $standalone} {
|
||
|
|
||
|
# Read liberty files
|
||
|
foreach libFile $::env(LIB_FILES) {
|
||
|
read_liberty $libFile
|
||
|
}
|
||
|
|
||
|
# Read lef
|
||
|
read_lef $::env(TECH_LEF)
|
||
|
read_lef $::env(SC_LEF)
|
||
|
if {[info exist ::env(ADDITIONAL_LEFS)]} {
|
||
|
foreach lef $::env(ADDITIONAL_LEFS) {
|
||
|
read_lef $lef
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Read def and sdc
|
||
|
#read_def $::env(RESULTS_DIR)/3_2_floorplan_io.def
|
||
|
read_def $::env(RESULTS_DIR)/2_floorplan.def
|
||
|
read_sdc $::env(RESULTS_DIR)/2_floorplan.sdc
|
||
|
if [file exists $::env(PLATFORM_DIR)/derate.tcl] {
|
||
|
source $::env(PLATFORM_DIR)/derate.tcl
|
||
|
}
|
||
|
} else {
|
||
|
puts "Starting resizer"
|
||
|
}
|
||
|
|
||
|
proc print_banner {header} {
|
||
|
puts "\n=========================================================================="
|
||
|
puts "$header"
|
||
|
puts "--------------------------------------------------------------------------"
|
||
|
}
|
||
|
|
||
|
print_banner "resize.tcl"
|
||
|
|
||
|
# Set res and cap
|
||
|
source $::env(PLATFORM_DIR)/setRC.tcl
|
||
|
|
||
|
estimate_parasitics -placement
|
||
|
|
||
|
#print_banner "report_checks"
|
||
|
#report_checks
|
||
|
#
|
||
|
#print_banner "report_tns"
|
||
|
#report_tns
|
||
|
#
|
||
|
#print_banner "report_wns"
|
||
|
#report_wns
|
||
|
#report_worst_slack
|
||
|
|
||
|
print_banner "report_design_area"
|
||
|
report_design_area
|
||
|
|
||
|
print_banner "instance_count"
|
||
|
puts [sta::network_leaf_instance_count]
|
||
|
|
||
|
#print_banner "report_wns"
|
||
|
#report_wns
|
||
|
#report_worst_slack
|
||
|
|
||
|
#
|
||
|
#print_banner "pin_count"
|
||
|
#puts [sta::network_leaf_pin_count]
|
||
|
#
|
||
|
puts ""
|
||
|
|
||
|
set_dont_use $::env(DONT_USE_CELLS)
|
||
|
|
||
|
# Do not buffer chip-level designs
|
||
|
#if {![info exists ::env(FOOTPRINT)]} {
|
||
|
# puts "Perform port buffering..."
|
||
|
# buffer_ports
|
||
|
#}
|
||
|
|
||
|
#wtf cant set this for repair_design now?
|
||
|
set buffer_cell $::env(RS_BUF_CELL)
|
||
|
|
||
|
puts "Perform buffer insertion..."
|
||
|
#repair_design -buffer_cell $buffer_cell ;# buffer_cell is deprecated
|
||
|
|
||
|
set_max_fanout $::env(RS_MAX_FO) [current_design]
|
||
|
set_max_transition [expr $::env(ABC_CLOCK_PERIOD_IN_PS)*.20] [current_design]
|
||
|
|
||
|
report_check_types -digits 3 -max_slew -max_cap -max_fanout -violators
|
||
|
|
||
|
#wtf this isnt doing anything(?)
|
||
|
repair_design -max_utilization 100
|
||
|
#wtf is this?
|
||
|
repair_timing
|
||
|
|
||
|
report_check_types -digits 3 -max_slew -max_cap -max_fanout -violators
|
||
|
|
||
|
if { [info exists env(TIE_SEPARATION)] } {
|
||
|
set tie_separation $env(TIE_SEPARATION)
|
||
|
} else {
|
||
|
set tie_separation 0
|
||
|
}
|
||
|
|
||
|
# Repair tie lo fanout
|
||
|
puts "Repair tie lo fanout..."
|
||
|
set tielo_cell_name [lindex $env(TIELO_CELL_AND_PORT) 0]
|
||
|
set tielo_lib_name [get_name [get_property [get_lib_cell $tielo_cell_name] library]]
|
||
|
set tielo_pin $tielo_lib_name/$tielo_cell_name/[lindex $env(TIELO_CELL_AND_PORT) 1]
|
||
|
repair_tie_fanout -separation $tie_separation $tielo_pin
|
||
|
|
||
|
# Repair tie hi fanout
|
||
|
puts "Repair tie hi fanout..."
|
||
|
set tiehi_cell_name [lindex $env(TIEHI_CELL_AND_PORT) 0]
|
||
|
set tiehi_lib_name [get_name [get_property [get_lib_cell $tiehi_cell_name] library]]
|
||
|
set tiehi_pin $tiehi_lib_name/$tiehi_cell_name/[lindex $env(TIEHI_CELL_AND_PORT) 1]
|
||
|
repair_tie_fanout -separation $tie_separation $tiehi_pin
|
||
|
|
||
|
# hold violations are not repaired until after CTS
|
||
|
|
||
|
# post report
|
||
|
|
||
|
print_banner "report_floating_nets"
|
||
|
report_floating_nets
|
||
|
|
||
|
#print_banner "report_checks"
|
||
|
#report_checks -path_delay max -fields {slew cap input}
|
||
|
#report_checks -path_delay min -fields {slew cap input}
|
||
|
|
||
|
#print_banner "report_tns"
|
||
|
#report_tns
|
||
|
|
||
|
#print_banner "report_wns"
|
||
|
#report_wns
|
||
|
#report_worst_slack
|
||
|
|
||
|
#print_banner "report_slew_violations"
|
||
|
#report_check_types -max_slew -max_capacitance -max_fanout -violators
|
||
|
|
||
|
print_banner "report_design_area"
|
||
|
report_design_area
|
||
|
|
||
|
print_banner "instance_count"
|
||
|
puts [sta::network_leaf_instance_count]
|
||
|
|
||
|
#print_banner "pin_count"
|
||
|
#puts [sta::network_leaf_pin_count]
|
||
|
|
||
|
puts ""
|
||
|
|
||
|
if {![info exists standalone] || $standalone} {
|
||
|
write_def $::env(RESULTS_DIR)/3_3_place_resized.def
|
||
|
exit
|
||
|
}
|