Skip to content

Opt in first 8 designs to use 'syn' #4270

Open
povik wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-syn-bringup
Open

Opt in first 8 designs to use 'syn' #4270
povik wants to merge 5 commits into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:secure-syn-bringup

Conversation

@povik
Copy link
Copy Markdown
Contributor

@povik povik commented Jun 1, 2026

Updated Rules

designs/asap7/aes/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 3882365f5e814a21a600274234b3a087270968d4 N/A Failing
synth__netlist__hash a04d44da52dba7d4a701d80927ba32d1d89ef9a1 N/A Failing

designs/asap7/aes_lvt/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 7cb97d6d20f0fb4831af6dc20aea1d411aecc09a N/A Failing
synth__netlist__hash d84684a5256bf993bde8bccdff31af8237663019 N/A Failing

[WARNING] Multiple clocks not supported. Will use first clock: mrx_clk_pad_i: 300.0000.
[WARNING] Multiple clocks not supported. Will use first clock: mrx_clk_pad_i: 300.0000.
designs/asap7/gcd/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 9b1daddbf16520e983085be7f06a02bc2fc2e27a N/A Failing
synth__netlist__hash 2d3fbf9f1b7357c0cadb1e193d984ae458d68fa8 N/A Failing

designs/asap7/jpeg/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash b67ad398424800920e8203a11987e51a89b89070 N/A Failing
synth__netlist__hash d045877b85c5a9e18d5284e8ad3a41dcbc5f3f11 N/A Failing

designs/asap7/jpeg_lvt/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash c46712834957de101139bda123c9da786f05b392 N/A Failing
synth__netlist__hash 8c44353e931d56077e9f64190819c1fe10a05909 N/A Failing
finish__timing__setup__ws -30.0 -63.9 Failing
finish__timing__setup__tns -303.0 -514.0 Failing

[WARNING] Multiple clocks not supported. Will use first clock: clk: 333.0000.
designs/asap7/riscv32i-mock-sram/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 855cc88198fc9faaf17317eaea4a3a07a4340d1d 58bf274dad2592154068ebaf8f3893ccf8b388fa Failing
finish__timing__setup__tns -230.0 -2770.0 Failing

designs/gf180/uart-blocks/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 48ea06f839af2a2b1eaada6c74e256cfe1064972 6539c6f38d2e14aa6b73a233552bb9e77150c29e Failing

designs/ihp-sg13g2/aes/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 03f345300073bffe008c28ae418579c55a61a047 N/A Failing
synth__netlist__hash 9ed4fbb1904f7531317bb9162ca084ebe650f588 N/A Failing

designs/ihp-sg13g2/gcd/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 5a518ec61d78294e2e31f7564caba70a2e603a8b N/A Failing
synth__netlist__hash 3fd7066325a56dedbd71ff32ffc04a42a6888885 N/A Failing

designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 6a79c1ff7404b566e96c52493d7eec2316d12f6a 343adb65c551c257442500e3d05ced3bcc4adf88 Failing

designs/ihp-sg13g2/jpeg/rules-base.json updates:

Metric Old New Type
detailedroute__antenna_diodes_count 109 121 Failing

designs/nangate45/aes/rules-base.json updates:

Metric Old New Type
finish__timing__setup__tns -0.167 -0.362 Failing

designs/nangate45/ariane133/rules-base.json updates:

Metric Old New Type
finish__timing__setup__tns -576.0 -585.0 Failing

designs/nangate45/bp_be_top/rules-base.json updates:

Metric Old New Type
finish__timing__setup__tns -19.1 -20.2 Failing

designs/nangate45/bp_fe_top/rules-base.json updates:

Metric Old New Type
finish__timing__setup__tns -1.23 -1.75 Failing

designs/nangate45/dynamic_node/rules-base.json updates:

Metric Old New Type
synth__canonical_netlist__hash 2427a81238731cb7068ba9ca3da18ec2837ebf31 N/A Failing
synth__netlist__hash 4617e66bebd8728c158a91b4760b8d4ca0bb2114 N/A Failing

[WARNING] Multiple clocks not supported. Will use first clock: clk_i: 3.0000.
designs/nangate45/swerv/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -485.0 -502.0 Failing
finish__timing__setup__tns -479.0 -507.0 Failing

designs/nangate45/swerv_wrapper/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -146.0 -157.0 Failing
finish__timing__setup__tns -126.0 -143.0 Failing

designs/sky130hd/chameleon/rules-base.json updates:

Metric Old New Type
globalroute__antenna_diodes_count 196 200 Failing

designs/sky130hd/gcd/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -88.8 -89.0 Failing

designs/sky130hd/jpeg/rules-base.json updates:

Metric Old New Type
globalroute__antenna_diodes_count 100 102 Failing
globalroute__timing__setup__tns -111.0 -113.0 Failing

[WARNING] Multiple clocks not supported. Will use first clock: ext_clk: 15.0000.
designs/sky130hd/microwatt/rules-base.json updates:

Metric Old New Type
globalroute__antenna_diodes_count 1333 1364 Failing
detailedroute__antenna__violating__nets 0 1 Failing

designs/sky130hd/riscv32i/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -300.0 -304.0 Failing
finish__timing__setup__tns -167.0 -169.0 Failing

designs/sky130hs/ibex/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -23.4 -43.4 Failing

designs/sky130hs/riscv32i/rules-base.json updates:

Metric Old New Type
globalroute__timing__setup__tns -134.0 -142.0 Failing
finish__timing__setup__tns -20.9 -26.5 Failing

Messages from CI

[INFO] asap7/minimal not included in CI.
[INFO] gf12 not included in the update.
[INFO] gf55 not included in the update.
[INFO] nangate45/bp_quad not included in CI.

@povik povik self-assigned this Jun 1, 2026
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new synthesis flow option (SYNTH_USE_SYN) that utilizes the built-in OpenROAD 'syn' tool via a new synth_syn.tcl script, updating the Makefile, metrics extraction, and various design configurations to support it. The code review feedback highlights several critical improvements for robustness: adding missing Verilog and SDC dependencies to the Makefile target to prevent breaking incremental builds, guarding environment variables (DONT_USE_CELLS and SYNTH_SLANG_ARGS) against Tcl runtime errors when undefined, and keeping vIdirsArgs as a proper Tcl list to safely handle paths with special characters.

Comment thread flow/Makefile
Comment on lines +407 to +411
ifeq ($(SYNTH_USE_SYN),1)
$(eval $(call do-step,1_synth,$(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_syn))
else
$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_odb))
endif
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

In the new syn synthesis flow (SYNTH_USE_SYN=1), the 1_synth target does not list $(VERILOG_FILES) or $(SDC_FILE) as dependencies. This breaks incremental builds, as modifying any Verilog source files or timing constraints will not trigger a re-synthesis of the design. Please add them to the dependency list.

ifeq ($(SYNTH_USE_SYN),1)
$(eval $(call do-step,1_synth,$(VERILOG_FILES) $(SDC_FILE) $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_syn))
else
$(eval $(call do-step,1_synth,$(RESULTS_DIR)/1_2_yosys.v $(RESULTS_DIR)/1_2_yosys.sdc $(TECH_LEF) $(SC_LEF) $(ADDITIONAL_LEFS) $(LIB_FILES),synth_odb))
endif

Comment thread flow/scripts/synth_syn.tcl Outdated
read_lef $lef
}
}
set_dont_use $::env(DONT_USE_CELLS)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The environment variable DONT_USE_CELLS is not marked as required and does not have a default value in variables.json. If it is not defined in the environment, accessing $::env(DONT_USE_CELLS) directly will throw a Tcl runtime error and crash the synthesis flow. Please guard this call using env_var_exists_and_non_empty.

if { [env_var_exists_and_non_empty DONT_USE_CELLS] } {
  set_dont_use $::env(DONT_USE_CELLS)
}

Comment on lines +18 to +24
set vIdirsArgs ""
if { [env_var_exists_and_non_empty VERILOG_INCLUDE_DIRS] } {
foreach dir $::env(VERILOG_INCLUDE_DIRS) {
lappend vIdirsArgs "-I$dir"
}
set vIdirsArgs [join $vIdirsArgs]
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of joining the vIdirsArgs list into a space-separated string and then using expansion ({*}) to split it back, it is cleaner and safer to keep vIdirsArgs as a proper Tcl list. This avoids potential issues with paths containing special characters or spaces.

set vIdirsArgs [list]
if { [env_var_exists_and_non_empty VERILOG_INCLUDE_DIRS] } {
  foreach dir $::env(VERILOG_INCLUDE_DIRS) {
    lappend vIdirsArgs "-I$dir"
  }
}

}
}

lappend elaborate_args {*}$::env(SYNTH_SLANG_ARGS)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Directly accessing $::env(SYNTH_SLANG_ARGS) can cause a runtime error if the variable is not exported to the environment. It is safer and more consistent with other environment variables to use the env_var_or_empty helper.

lappend elaborate_args {*}[env_var_or_empty SYNTH_SLANG_ARGS]

@povik povik marked this pull request as draft June 1, 2026 13:51
@openroad-ci openroad-ci force-pushed the secure-syn-bringup branch 2 times, most recently from 675bd40 to af686ba Compare June 1, 2026 15:43
povik added 3 commits June 3, 2026 16:17
Signed-off-by: Martin Povišer <povik@cutebit.org>
Signed-off-by: Martin Povišer <povik@cutebit.org>
Signed-off-by: Martin Povišer <povik@cutebit.org>
@openroad-ci openroad-ci force-pushed the secure-syn-bringup branch from af686ba to c298a08 Compare June 3, 2026 14:26
Signed-off-by: Martin Povišer <povik@cutebit.org>
@povik povik marked this pull request as ready for review June 3, 2026 18:13
@povik povik requested a review from maliberty June 3, 2026 18:15
@povik povik added the UpdateRules Starts GHA to update rules label Jun 4, 2026
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
@openroad-ci openroad-ci removed the UpdateRules Starts GHA to update rules label Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants