Add missing -exit flag to openroad -python calls (#1388)

+ Add `-exit` to all `openroad -python` invocations, which otherwise causes hangs when stdin is hooked up
~ openroad_app -> 389a1f09821c0f57e3bf8e88f4ab43c76ec5f5c4
~ update tests to use DEFs as input files once again

Co-authored-by: Mohamed Gaber <donn@efabless.com>
This commit is contained in:
Johan Euphrosine
2022-10-18 05:39:51 +09:00
committed by GitHub
parent c21987e9ac
commit 70a28d2e26
19 changed files with 115 additions and 22 deletions

View File

@@ -58,7 +58,7 @@
in_install: false
- name: openroad_app
repo: https://github.com/The-OpenROAD-Project/OpenROAD
commit: 4174c3ad802d2ac1d04d387d2c4b883903f6647e
commit: 389a1f09821c0f57e3bf8e88f4ab43c76ec5f5c4
build: ''
in_install: false
- name: git

View File

@@ -156,7 +156,7 @@ proc run_klayout_step {args} {
proc run_post_run_hooks {} {
if { [file exists $::env(DESIGN_DIR)/hooks/post_run.py]} {
puts_info "Running post run hook"
set result [exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py]
set result [exec $::env(OPENROAD_BIN) -exit -python $::env(DESIGN_DIR)/hooks/post_run.py]
puts_info "$result"
} else {
puts_info "hooks/post_run.py not found, skipping"

View File

@@ -120,7 +120,7 @@ proc prep_lefs {args} {
if { [info exists ::env(METAL_LAYER_NAMES)] } {
set ::env(TECH_METAL_LAYERS) $::env(METAL_LAYER_NAMES)
} else {
try_catch $::env(OPENROAD_BIN) -python\
try_catch $::env(OPENROAD_BIN) -exit -python\
$::env(SCRIPTS_DIR)/odbpy/lefutil.py get_metal_layers\
-o $::env(TMP_DIR)/layers.list\
$arg_values(-tech_lef)

View File

@@ -64,8 +64,7 @@ proc eco_gen_buffer {args} {
puts_info "\[ECO: $::env(ECO_ITER)\] Generating buffer insertion script..."
try_catch $::env(OPENROAD_BIN) \
-python $::env(SCRIPTS_DIR)/odbpy/eco.py \
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/odbpy/eco.py \
insert_buffer \
-o $::env(routing_tmpfiles)/eco_fix.tcl \
-s $::env(ECO_SKIP_PIN) \

View File

@@ -19,7 +19,7 @@ proc extract_core_dims {args} {
set out_tmp $::env(TMP_DIR)/dimensions.txt
try_catch $::env(OPENROAD_BIN) -python $::env(SCRIPTS_DIR)/odbpy/defutil.py extract_core_dims\
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/odbpy/defutil.py extract_core_dims\
--output-data $out_tmp\
--input-lef $::env(MERGED_LEF)\
$::env(CURRENT_DEF)
@@ -77,7 +77,7 @@ proc init_floorplan {args} {
set intermediate [index_file $::env(floorplan_tmpfiles)/minimized_pdn.txt]
try_catch $::env(OPENROAD_BIN) -python $::env(SCRIPTS_DIR)/odbpy/snap_to_grid.py\
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/odbpy/snap_to_grid.py\
--output $intermediate\
--input-lef $::env(MERGED_LEF)\
[expr {$core_width/8.0}] [expr {$core_height/8.0}] [expr {$core_width/4.0}] [expr {$core_height/4.0}]

View File

@@ -153,7 +153,7 @@ proc run_klayout_gds_xor {args} {
$arg_values(-layout1) $arg_values(-layout2) $::env(DESIGN_NAME) \
$arg_values(-output_gds) \
|& tee $::env(TERMINAL_OUTPUT) $log
try_catch $::env(OPENROAD_BIN) -python $::env(SCRIPTS_DIR)/parse_klayout_xor_log.py \
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/parse_klayout_xor_log.py \
-l [index_file $::env(signoff_logs)/xor.log] \
-o [index_file $::env(signoff_reports)/xor.rpt]
scrot_klayout -layout $arg_values(-output_gds) -log $::env(signoff_logs)/screenshot.klayout.xor.log

View File

@@ -93,7 +93,7 @@ proc write_powered_verilog {args} {
set_if_unset arg_values(-powered_netlist) ""
}
try_catch $::env(OPENROAD_BIN) -python $::env(SCRIPTS_DIR)/odbpy/power_utils.py write_powered_def\
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/odbpy/power_utils.py write_powered_def\
--output $arg_values(-output_def) \
--input-lef $arg_values(-lef) \
--power-port $arg_values(-power) \

View File

@@ -140,7 +140,7 @@ proc detailed_routing_tritonroute {args} {
unset ::env(_tmp_drt_file_prefix)
unset ::env(_tmp_drt_rpt_prefix)
try_catch $::env(OPENROAD_BIN) -python $::env(SCRIPTS_DIR)/drc_rosetta.py tr to_klayout \
try_catch $::env(OPENROAD_BIN) -exit -python $::env(SCRIPTS_DIR)/drc_rosetta.py tr to_klayout \
-o $::env(routing_reports)/drt.klayout.xml \
--design-name $::env(DESIGN_NAME) \
$::env(routing_reports)/drt.drc

View File

@@ -424,7 +424,7 @@ proc manipulate_layout {args} {
set_if_unset arg_values(-output) $arg_values(-input)
set_if_unset arg_values(-output_def) /dev/null
try_catch $::env(OPENROAD_BIN) -python \
try_catch $::env(OPENROAD_BIN) -exit -python \
{*}$args \
--input-lef $::env(MERGED_LEF) \
--output-def $arg_values(-output_def) \

View File

@@ -1,2 +1,3 @@
out.def
out.odb
out.odb
in.odb

79
tests/1007/in.def Normal file
View File

@@ -0,0 +1,79 @@
VERSION 5.8 ;
DIVIDERCHAR "/" ;
BUSBITCHARS "[]" ;
DESIGN inverter ;
UNITS DISTANCE MICRONS 1000 ;
DIEAREA ( 0 0 ) ( 34165 54885 ) ;
ROW ROW_0 unithd 5520 10880 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_1 unithd 5520 13600 FS DO 50 BY 1 STEP 460 0 ;
ROW ROW_2 unithd 5520 16320 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_3 unithd 5520 19040 FS DO 50 BY 1 STEP 460 0 ;
ROW ROW_4 unithd 5520 21760 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_5 unithd 5520 24480 FS DO 50 BY 1 STEP 460 0 ;
ROW ROW_6 unithd 5520 27200 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_7 unithd 5520 29920 FS DO 50 BY 1 STEP 460 0 ;
ROW ROW_8 unithd 5520 32640 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_9 unithd 5520 35360 FS DO 50 BY 1 STEP 460 0 ;
ROW ROW_10 unithd 5520 38080 N DO 50 BY 1 STEP 460 0 ;
ROW ROW_11 unithd 5520 40800 FS DO 50 BY 1 STEP 460 0 ;
TRACKS X 230 DO 74 STEP 460 LAYER li1 ;
TRACKS Y 170 DO 161 STEP 340 LAYER li1 ;
TRACKS X 170 DO 100 STEP 340 LAYER met1 ;
TRACKS Y 170 DO 161 STEP 340 LAYER met1 ;
TRACKS X 230 DO 74 STEP 460 LAYER met2 ;
TRACKS Y 230 DO 119 STEP 460 LAYER met2 ;
TRACKS X 340 DO 50 STEP 680 LAYER met3 ;
TRACKS Y 340 DO 81 STEP 680 LAYER met3 ;
TRACKS X 460 DO 37 STEP 920 LAYER met4 ;
TRACKS Y 460 DO 60 STEP 920 LAYER met4 ;
TRACKS X 1700 DO 10 STEP 3400 LAYER met5 ;
TRACKS Y 1700 DO 16 STEP 3400 LAYER met5 ;
COMPONENTS 32 ;
- PHY_0 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 10880 ) N ;
- PHY_1 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 10880 ) FN ;
- PHY_10 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 24480 ) FS ;
- PHY_11 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 24480 ) S ;
- PHY_12 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 27200 ) N ;
- PHY_13 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 27200 ) FN ;
- PHY_14 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 29920 ) FS ;
- PHY_15 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 29920 ) S ;
- PHY_16 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 32640 ) N ;
- PHY_17 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 32640 ) FN ;
- PHY_18 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 35360 ) FS ;
- PHY_19 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 35360 ) S ;
- PHY_2 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 13600 ) FS ;
- PHY_20 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 38080 ) N ;
- PHY_21 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 38080 ) FN ;
- PHY_22 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 40800 ) FS ;
- PHY_23 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 40800 ) S ;
- PHY_3 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 13600 ) S ;
- PHY_4 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 16320 ) N ;
- PHY_5 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 16320 ) FN ;
- PHY_6 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 19040 ) FS ;
- PHY_7 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 19040 ) S ;
- PHY_8 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 5520 21760 ) N ;
- PHY_9 sky130_fd_sc_hd__decap_3 + SOURCE DIST + FIXED ( 27140 21760 ) FN ;
- TAP_24 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 10880 ) N ;
- TAP_25 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 16320 ) N ;
- TAP_26 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 21760 ) N ;
- TAP_27 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 27200 ) N ;
- TAP_28 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 32640 ) N ;
- TAP_29 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 38080 ) N ;
- TAP_30 sky130_fd_sc_hd__tapvpwrvgnd_1 + SOURCE DIST + FIXED ( 18400 40800 ) FS ;
- _0_ sky130_fd_sc_hd__inv_2 ;
END COMPONENTS
PINS 2 ;
- in + NET in + DIRECTION INPUT + USE SIGNAL
+ PORT
+ LAYER met2 ( -140 -2000 ) ( 140 2000 )
+ PLACED ( 32430 52885 ) N ;
- out + NET out + DIRECTION OUTPUT + USE SIGNAL
+ PORT
+ LAYER met2 ( -140 -2000 ) ( 140 2000 )
+ PLACED ( 230 2000 ) N ;
END PINS
NETS 2 ;
- in ( PIN in ) ( _0_ A ) + USE SIGNAL ;
- out ( PIN out ) ( _0_ Y ) + USE SIGNAL ;
END NETS
END DESIGN

Binary file not shown.

View File

@@ -1,6 +1,12 @@
package require openlane;
prep -design $::env(TEST_DIR)
prep -design $::env(TEST_DIR) {*}$argv
try_catch echo {
read_lef $::env(MERGED_LEF)
read_def $::env(DESIGN_DIR)/in.def
write_db $::env(DESIGN_DIR)/in.odb
} | openroad -exit
set ::env(CURRENT_ODB) $::env(DESIGN_DIR)/in.odb
@@ -12,6 +18,6 @@ insert_buffer\
exec cp $::env(CURRENT_ODB) $::env(DESIGN_DIR)/out.odb
exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py
try_catch $::env(OPENROAD_BIN) -exit -python $::env(DESIGN_DIR)/hooks/post_run.py
puts_info "Done."
puts_info "Done."

View File

@@ -1,2 +1,3 @@
out.def
out.odb
out.odb
in.odb

1
tests/1413/in.def Symbolic link
View File

@@ -0,0 +1 @@
../1007/in.def

View File

@@ -1 +0,0 @@
../1007/in.odb

View File

@@ -1,6 +1,12 @@
package require openlane;
prep -design $::env(TEST_DIR)
prep -design $::env(TEST_DIR) {*}$argv
try_catch echo {
read_lef $::env(MERGED_LEF)
read_def $::env(DESIGN_DIR)/../1413/in.def
write_db $::env(DESIGN_DIR)/in.odb
} | openroad -exit
set ::env(CURRENT_ODB) $::env(DESIGN_DIR)/in.odb
@@ -13,6 +19,6 @@ remove_nets -rx {^in$} -input $save_odb
set ::env(CURRENT_ODB) $save_odb
exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py
try_catch $::env(OPENROAD_BIN) -exit -python $::env(DESIGN_DIR)/hooks/post_run.py
puts_info "Done."

View File

@@ -2,7 +2,7 @@
# export MERGED_LEF=/openlane/designs/def_test/runs/RUN_2022.01.23_17.23.46/tmp/merged.lef
# export HOOK_OUTPUT_PATH=/openlane/designs/def_test/runs/RUN_2022.01.23_17.23.46/results/final
# export DESIGN_DIR=/openlane/designs/def_test
# openroad -python designs/def_test/hooks/post_run.py
# openroad -exit -python designs/def_test/hooks/post_run.py
import odb

View File

@@ -115,10 +115,10 @@ def run_test_case(test_case):
result = subprocess.run(
[
"flow.tcl",
"-verbose",
"99",
"-design",
test_case,
"-verbose",
"99",
"-tag",
"issue_regression_run",
"-run_hooks",
@@ -156,6 +156,7 @@ def run_test_case(test_case):
subprocess.run(
[
"openroad",
"-exit",
"-python",
test_case_issue_regression_script,
os.path.join(test_case, "runs", "issue_regression_run"),