| proc global_placement {args} { |
| TIMER::timer_start |
| #for {set i 0} {$i < $::env(PL_IO_ITER)} {incr i} { |
| #try_catch replace < $::env(SCRIPTS_DIR)/replace_gp.tcl |& tee $::env(TERMINAL_OUTPUT) $::env(replaceio_log_file_tag).log |
| |
| #try_catch mv $::env(replaceio_tmp_file_tag)_io.def $::env(replaceio_tmp_file_tag)_io_$i.def |
| |
| #try_catch ioPlacer \ |
| -l $::env(MERGED_LEF) \ |
| -d $::env(replaceio_tmp_file_tag)_place.def \ |
| -h $::env(FP_IO_HMETAL) \ |
| -v $::env(FP_IO_VMETAL) \ |
| -r $::env(FP_IO_RANDOM) \ |
| \ |
| -o $::env(replaceio_tmp_file_tag)_io.def \ |
| |& tee $::env(TERMINAL_OUTPUT) $::env(ioPlacer_log_file_tag).log |
| |
| #try_catch cp $::env(replaceio_tmp_file_tag)_place.def $::env(replaceio_tmp_file_tag)_place_$i.def |
| #} |
| #try_catch cp $::env(replaceio_tmp_file_tag)_place.def $::env(replaceio_tmp_file_tag).def |
| set ::env(SAVE_DEF) $::env(replaceio_tmp_file_tag)_openroad.def |
| try_catch openroad -exit $::env(SCRIPTS_DIR)/openroad/or_replace.tcl |& tee $::env(TERMINAL_OUTPUT) $::env(replaceio_log_file_tag)_openroad.log |
| TIMER::timer_stop |
| exec echo "[TIMER::get_runtime]" >> $::env(replaceio_log_file_tag)_runtime.txt |
| set_def $::env(SAVE_DEF) |
| |
| #try_catch openroad -exit $::env(SCRIPTS_DIR)/replace_gp.tcl |& tee $::env(TERMINAL_OUTPUT) $::env(replaceio_log_file_tag)_openroad.log |
| #set_def $::env(replaceio_tmp_file_tag).def |
| |
| } |
| |
| proc detailed_placement {args} { |
| TIMER::timer_start |
| # try_catch opendp \ |
| # -lef $::env(MERGED_LEF) \ |
| # -def $::env(CURRENT_DEF) \ |
| # -output_def $::env(opendp_result_file_tag).def \ |
| # |& tee $::env(TERMINAL_OUTPUT) $::env(opendp_log_file_tag).log |
| |
| set ::env(SAVE_DEF) $::env(opendp_result_file_tag)_openroad.def |
| try_catch openroad -exit $::env(SCRIPTS_DIR)/openroad/or_opendp.tcl |& tee $::env(TERMINAL_OUTPUT) $::env(opendp_log_file_tag)_openroad.log |
| TIMER::timer_stop |
| exec echo "[TIMER::get_runtime]" >> $::env(opendp_log_file_tag)_runtime.txt |
| set_def $::env(SAVE_DEF) |
| } |
| |
| proc run_placement {args} { |
| # |----------------------------------------------------| |
| # |---------------- 3. PLACEMENT ------------------| |
| # |----------------------------------------------------| |
| set ::env(CURRENT_STAGE) placement |
| |
| global_placement |
| #try_catch replace < $::env(SCRIPTS_DIR)/replace_io.tcl |& tee $::env(TERMINAL_OUTPUT) $::env(replaceio_log_file_tag).log |
| #try_catch Psn --verbose --file $::env(SCRIPTS_DIR)/psn.tcl |& tee /dev/tty $::env(psn_log_file_tag).log |
| |
| # GIFing the result |
| #puts "Generating Placement GIF" |
| #try_catch convert -delay 20 {*}[lsort [glob $::env(RESULTS_DIR)/4_placement/etc/3_floorplanning/output/cell/*.jpg]] \ |
| -delay 100 $::env(RESULTS_DIR)/4_placement/etc/3_floorplanning/output/globalPlaceResult.jpg \ |
| \ |
| $::env(RESULTS_DIR)/4_placement.gif \ |
| |& tee $::env(TERMINAL_OUTPUT) |
| |
| #try_catch cp $::env(RESULTS_DIR)/4_placement/etc/3_floorplanning/output/3_floorplan_final.def $::env(RESULTS_DIR)/4_1_place_gp.def |
| |
| # outputs: 4_1_place_gp.def |
| |
| # detailed 4_placement |
| detailed_placement |
| } |
| |
| package provide openlane 0.9 |