mirror of
https://github.com/The-OpenROAD-Project/OpenLane.git
synced 2026-05-29 00:23:55 +08:00
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:
2
dependencies/tool_metadata.yml
vendored
2
dependencies/tool_metadata.yml
vendored
@@ -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
|
||||
|
||||
2
flow.tcl
2
flow.tcl
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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}]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) \
|
||||
|
||||
3
tests/1007/.gitignore
vendored
3
tests/1007/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
out.def
|
||||
out.odb
|
||||
out.odb
|
||||
in.odb
|
||||
79
tests/1007/in.def
Normal file
79
tests/1007/in.def
Normal 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.
@@ -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."
|
||||
|
||||
3
tests/1413/.gitignore
vendored
3
tests/1413/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
out.def
|
||||
out.odb
|
||||
out.odb
|
||||
in.odb
|
||||
1
tests/1413/in.def
Symbolic link
1
tests/1413/in.def
Symbolic link
@@ -0,0 +1 @@
|
||||
../1007/in.def
|
||||
@@ -1 +0,0 @@
|
||||
../1007/in.odb
|
||||
@@ -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."
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user