Skip to content

Tighten timing constraints on swerv_wrapper, coyote and jpeg - #4470

Open
jorge-ferreira-pii wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:jorge-design-owner
Open

Tighten timing constraints on swerv_wrapper, coyote and jpeg#4470
jorge-ferreira-pii wants to merge 1 commit into
The-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:jorge-design-owner

Conversation

@jorge-ferreira-pii

Copy link
Copy Markdown
Contributor

Shorten the clock periods, and the matching input delays, so these designs land with negative slack instead of slack to spare. swerv_wrapper also moves to 55% core utilization and NLDM libraries.

Shorten the clock periods, and the matching input delays, so these
designs land with negative slack instead of slack to spare.
swerv_wrapper also moves to 55% core utilization and NLDM libraries.

Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
@jorge-ferreira-pii jorge-ferreira-pii self-assigned this Aug 25, 2026

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

Copy link
Copy Markdown
Contributor

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 updates timing constraints and configuration parameters across multiple designs, including asap7/swerv_wrapper, gf12/coyote, and sky130hs/jpeg. Key changes include switching the library model to NLDM, increasing core utilization, and reducing clock periods and input/output delays. The review feedback recommends removing commented-out code in the configuration file and defining a clock period variable in the SDC file to avoid hardcoding delays across thousands of lines, which greatly improves maintainability.

Comment on lines +45 to +46
#export LIB_MODEL = CCS
export LIB_MODEL = NLDM

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Commented-out code should be removed to keep the configuration file clean and maintainable. Since version control tracks history, there is no need to keep the old CCS model commented out.

export LIB_MODEL = NLDM

Comment on lines +9 to +10
create_clock -name core_clk -period 2000 -waveform {0.0000 1000} [get_ports {clk_i}]
create_clock -name vclk -period 2000

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Instead of hardcoding the clock period (2000) and half-period values (1000) throughout the file, define a variable for the clock period and derive the other values from it. This makes it much easier to scale or modify the timing constraints in the future without having to update thousands of lines of input/output delays.

set clk_period 2000
set io_delay [expr {$clk_period / 2.0}]
create_clock -name core_clk -period $clk_period -waveform [list 0.0 $io_delay] [get_ports {clk_i}]
create_clock -name vclk -period $clk_period

@openroad-ci

openroad-ci commented Aug 25, 2026

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch. Advisory — results are log-only and do not affect build status. The authoritative QoR gate remains the local rules-file check.

Commit 8eb6194 · Jenkins build #2 · Baseline: build

62 design(s) checked — 2 with regression(s), 0 without a comparable baseline.
Design Variant Verdict local vs inline passed / failed / missing
asap7/aes base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/aes-block base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/aes-mbff base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/aes_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/cva6 base ✅ pass ✅ MATCH 12 / 0 / 0
asap7/ethmac base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/ethmac_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/gcd-ccs base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/jpeg_lvt base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/mock-alu base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/mock-cpu base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/riscv32i-mock-sram base ✅ pass ✅ MATCH 25 / 0 / 0
asap7/swerv_wrapper base ❌ fail ✅ MATCH 19 / 6 / 0
asap7/uart base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/aes base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/aes-hybrid base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
gf180/uart-blocks base ✅ pass ✅ MATCH 25 / 0 / 0
gt2n/aes base ✅ pass ✅ MATCH 25 / 0 / 0
gt2n/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
gt2n/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/aes base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/i2c-gpio-expander base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
ihp-sg13g2/spi base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/aes base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/ariane133 base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/ariane136 base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/black_parrot base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/bp_be_top base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/bp_fe_top base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/bp_multi_top base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/cva6 base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/dynamic_node base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/mempool_group base ✅ pass ✅ MATCH 12 / 0 / 0
nangate45/swerv base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/swerv_wrapper base ✅ pass ✅ MATCH 25 / 0 / 0
nangate45/tinyRocket base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/aes base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/chameleon base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/jpeg base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/microwatt base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hd/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/aes base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/gcd base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/ibex base ✅ pass ✅ MATCH 25 / 0 / 0
sky130hs/jpeg base ❌ fail ✅ MATCH 16 / 9 / 0
sky130hs/riscv32i base ✅ pass ✅ MATCH 25 / 0 / 0
❌ asap7/swerv_wrapper base — 6 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -1750.13 0 -320.0 PeriodPadding 20%
cts__timing__setup__ws -102.834 19.0881 -638.7335565090292% -80.0 PeriodPadding 5.0%
finish__timing__setup__tns -2212.15 0 -320.0 PeriodPadding 20%
finish__timing__setup__ws -104.94 57.9512 -281.08339430417317% -80.0 PeriodPadding 5.0%
globalroute__timing__setup__tns -2737.32 0 -320.0 PeriodPadding 20%
globalroute__timing__setup__ws -139.39 1.80345 -7829.074828800355% -80.0 PeriodPadding 5.0%
❌ sky130hs/jpeg base — 9 failing metric(s)
Metric target base delta limit band
cts__timing__setup__tns -70.943 0 -0.8 PeriodPadding 20%
cts__timing__setup__ws -0.353087 0.0325828 -1183.6607044207374% -0.2 PeriodPadding 5.0%
detailedroute__antenna_diodes_count 119 54 120.37037037037037% 100 Metric 0.1%
detailedroute__route__wirelength 1695539 1395874 21.467911860239536% 1605255.1 Padding 15%
finish__timing__setup__tns -107.344 0 -0.8 PeriodPadding 20%
finish__timing__setup__ws -0.518905 0.105452 -592.0769639267155% -0.2 PeriodPadding 5.0%
globalroute__antenna_diodes_count 311 21 1380.952380952381% 100 Metric 0.1%
globalroute__timing__setup__tns -210.413 -0.127955 164342.96823101872% -0.927955 PeriodPadding 20%
globalroute__timing__setup__ws -0.58594 -0.0349596 1576.048925044909% -0.2349596 PeriodPadding 5.0%

@eder-matheus

Copy link
Copy Markdown
Member

@jorge-ferreira-pii Please update the metrics and add the summary into the PR description.

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.

3 participants