blob: 6dc513d3e13aeaa30b21ef37930bb4098d872b3e [file] [log] [blame]
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
TIMER::timer_stop
exec echo "[TIMER::get_runtime]" >> $::env(replaceio_log_file_tag)_runtime.txt
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
TIMER::timer_stop
exec echo "[TIMER::get_runtime]" >> $::env(opendp_log_file_tag)_runtime.txt
if {![catch {eval exec grep -q "FAIL" $::env(opendp_log_file_tag).log}]} {
puts "Error: Check $::env(opendp_log_file_tag).log"
exit 1
}
set_def $::env(opendp_result_file_tag).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