diff --git a/dependencies/tool_metadata.yml b/dependencies/tool_metadata.yml index d708143e..f5b4b9c4 100644 --- a/dependencies/tool_metadata.yml +++ b/dependencies/tool_metadata.yml @@ -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 diff --git a/flow.tcl b/flow.tcl index 83954181..2ec16863 100755 --- a/flow.tcl +++ b/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" diff --git a/scripts/tcl_commands/all.tcl b/scripts/tcl_commands/all.tcl index 29efd3a3..a02085be 100755 --- a/scripts/tcl_commands/all.tcl +++ b/scripts/tcl_commands/all.tcl @@ -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) diff --git a/scripts/tcl_commands/eco.tcl b/scripts/tcl_commands/eco.tcl index c2589944..726daa14 100755 --- a/scripts/tcl_commands/eco.tcl +++ b/scripts/tcl_commands/eco.tcl @@ -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) \ diff --git a/scripts/tcl_commands/floorplan.tcl b/scripts/tcl_commands/floorplan.tcl index 1f7f5f37..9dc26a57 100755 --- a/scripts/tcl_commands/floorplan.tcl +++ b/scripts/tcl_commands/floorplan.tcl @@ -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}] diff --git a/scripts/tcl_commands/klayout.tcl b/scripts/tcl_commands/klayout.tcl index 3c889d3a..3938d9a2 100755 --- a/scripts/tcl_commands/klayout.tcl +++ b/scripts/tcl_commands/klayout.tcl @@ -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 diff --git a/scripts/tcl_commands/lvs.tcl b/scripts/tcl_commands/lvs.tcl index c6fc4ffe..40c4cb26 100755 --- a/scripts/tcl_commands/lvs.tcl +++ b/scripts/tcl_commands/lvs.tcl @@ -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) \ diff --git a/scripts/tcl_commands/routing.tcl b/scripts/tcl_commands/routing.tcl index c93aa513..2cbb37aa 100755 --- a/scripts/tcl_commands/routing.tcl +++ b/scripts/tcl_commands/routing.tcl @@ -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 diff --git a/scripts/utils/utils.tcl b/scripts/utils/utils.tcl index dc71b930..5f9e19e2 100755 --- a/scripts/utils/utils.tcl +++ b/scripts/utils/utils.tcl @@ -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) \ diff --git a/tests/1007/.gitignore b/tests/1007/.gitignore index 9c353fa7..168bc1bd 100644 --- a/tests/1007/.gitignore +++ b/tests/1007/.gitignore @@ -1,2 +1,3 @@ out.def -out.odb \ No newline at end of file +out.odb +in.odb \ No newline at end of file diff --git a/tests/1007/in.def b/tests/1007/in.def new file mode 100644 index 00000000..92ba82c1 --- /dev/null +++ b/tests/1007/in.def @@ -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 diff --git a/tests/1007/in.odb b/tests/1007/in.odb deleted file mode 100644 index c5050bb7..00000000 Binary files a/tests/1007/in.odb and /dev/null differ diff --git a/tests/1007/interactive.tcl b/tests/1007/interactive.tcl index 5f37101f..b7a1d8a5 100644 --- a/tests/1007/interactive.tcl +++ b/tests/1007/interactive.tcl @@ -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." \ No newline at end of file +puts_info "Done." diff --git a/tests/1413/.gitignore b/tests/1413/.gitignore index 9c353fa7..168bc1bd 100644 --- a/tests/1413/.gitignore +++ b/tests/1413/.gitignore @@ -1,2 +1,3 @@ out.def -out.odb \ No newline at end of file +out.odb +in.odb \ No newline at end of file diff --git a/tests/1413/in.def b/tests/1413/in.def new file mode 120000 index 00000000..aee5f17c --- /dev/null +++ b/tests/1413/in.def @@ -0,0 +1 @@ +../1007/in.def \ No newline at end of file diff --git a/tests/1413/in.odb b/tests/1413/in.odb deleted file mode 120000 index 6e2b2992..00000000 --- a/tests/1413/in.odb +++ /dev/null @@ -1 +0,0 @@ -../1007/in.odb \ No newline at end of file diff --git a/tests/1413/interactive.tcl b/tests/1413/interactive.tcl index dcf5c272..e1e8cb70 100644 --- a/tests/1413/interactive.tcl +++ b/tests/1413/interactive.tcl @@ -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." \ No newline at end of file diff --git a/tests/892/hooks/post_run.py b/tests/892/hooks/post_run.py index 9486dadf..782464b6 100644 --- a/tests/892/hooks/post_run.py +++ b/tests/892/hooks/post_run.py @@ -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 diff --git a/tests/__main__.py b/tests/__main__.py index dd847708..4553988f 100755 --- a/tests/__main__.py +++ b/tests/__main__.py @@ -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"),