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

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
}