Skip to content

sync#2

Open
nanocoh wants to merge 2194 commits into
keplertech:masterfrom
The-OpenROAD-Project:master
Open

sync#2
nanocoh wants to merge 2194 commits into
keplertech:masterfrom
The-OpenROAD-Project:master

Conversation

@nanocoh

@nanocoh nanocoh commented May 23, 2026

Copy link
Copy Markdown

Summary

[Describe your changes here]

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Documentation update

Impact

[How does this change the tool's behavior?]

Verification

  • I have verified that the local build succeeds (./etc/Build.sh).
  • I have run the relevant tests and they pass.
  • My code follows the repository's formatting guidelines.
  • I have included tests to prevent regressions.
  • I have signed my commits (DCO).

Related Issues

[Link issues here]

gudeh and others added 29 commits July 14, 2026 16:16
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
This runs the depend-on-what-you-use command of bant
https://github.com/hzeller/bant#dwyu--depend-on-what-you-use

It should be possible to make new `cc_libraries()`, add a
bunch of `srcs=[]` and i`hdrs=[]` to it, and have the build cleaner
figure out all the dependencies needed, emitting an edit script
to make it happen.

Signed-off-by: Henner Zeller <h.zeller@acm.org>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
…zer6-apply

[DO NOT MERGE] Remove redundant STA calls in RepairDesign
etc: Use _execute for bison download to get log only on failure as for others.
Signed-off-by: Joao Luis Sombrio <sombrio@sombrasoft.dev>
Add a --config=coverage so `bazel coverage --config=coverage` emits one
combined lcov file (bazel-out/_coverage/_coverage_report.dat) that CI
renders with genhtml. The instrumentation_filter reproduces the
exclusions of the retired cmake/lcov flow (etc/CodeCoverage.sh _lcov).

The hermetic-llvm toolchain implements no coverage feature (no
instrumentation flags, broken/undeclared gcov tool), so the config
instruments explicitly with clang source-based coverage and points the
collector at llvm-profdata/llvm-cov via --test_env; test actions run
unsandboxed because the sandbox omits the undeclared coverage tools.
gcov-style -fprofile-arcs is not usable: its objects break ld.lld
('.eh_frame: relocation is not in any piece' as of LLVM 22.1.8).

Verified on //src/utl/test:cpp_tests: combined report carries real DA
data (1464 lines, all SF entries under src/) and genhtml renders it
(39.6% lines, 44.2% functions).

Install lcov (provides genhtml) in bazel/Dockerfile so the report can be
rendered inside the bazel-ci image the Jenkins coverage pipeline runs in.
Also install parallel and tcl: the migrated nightly pipeline runs
src/drt/test/run-ispd.py (shells out to GNU parallel) and
src/gpl/test/regression-large (an `exec tclsh` script) inside this
image, both previously provided by the ubuntu22.04-dev image.

Signed-off-by: Joao Luis Sombrio <sombrio@sombrasoft.dev>
now that negotiation is the default we swap these tests so they use the non-default diamond search algorithm,
also adjust the obstrcution2.tcl test so it does not fail anymore, now we check the overlap with core area for fixed instances.

Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…erage-config

bazel: add coverage config and lcov to bazel-ci image
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
dpl: modify default algorithm to negotiation legalizer
…8s-pipelines

ci: delegate coverage/coverity/nightly to k8s shared-library pipelines
rcx: refactor to isolate extraction rules parsing logic into its own function
Signed-off-by: Naveen Venkat <archgen.guest@nyayanidhi.in>
Signed-off-by: Naveen Venkat <archgen.guest@nyayanidhi.in>
Signed-off-by: Minju Kim <mkim@precisioninno.com>

# Conflicts:
#	test/aes_sky130hd.metrics
#	test/aes_sky130hd.metrics_limits
#	test/ibex_sky130hs.metrics
#	test/ibex_sky130hs.metrics_limits
#	test/jpeg_sky130hs.metrics
#	test/jpeg_sky130hs.metrics_limits
#	test/upf_aes.defok
#	test/upf_aes.ok
repairHoldPass() calls estimate_parasitics_->updateParasitics() at the top
of every iteration of its loop over hold_failures, right before
repairEndHold(). This per-endpoint flush is redundant.

Every path through repairEndHold() that can invalidate parasitics already
flushes them before returning:
  - buffer-insert path: makeHoldDelay() calls updateParasitics() after
    insertBufferBeforeLoads() (and again after any resizeToTargetSlew());
  - rollback path: Resizer::journalRestore() calls updateParasitics() after
    undoEco().
The updateParasitics() kept before the loop covers the initial flush ahead of
the first endpoint. So parasitics are always current when control reaches the
loop head, and the loop-top flush has nothing to do.

Confirmed empirically: instrumenting the call on an ASAP7 block measured zero
invalidated nets on every invocation while still paying the fixed per-flush
overhead. Removing it is behavior- and QoR-neutral.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
rcx: make setBlockFromChip actually have a chip argument
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
dsengupta0628 and others added 30 commits July 22, 2026 22:57
…ition

Replace the hand-rolled minmax/containment check with
odb::Rect::intersects(Point), which has the same inclusive-boundary
semantics.

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
findInstNetsMatching had two branches: glob went through netIterator
(scoped, correct), exact went through findNet. For a non-top instance,
findNet falls back to a flat block lookup of pathName(instance)+"/"+name,
so get_nets -hierarchical <name> could return a top-scope net like u1/foo
while visiting leaf instance u1, even though u1 has no local net foo.

Collapse to the scoped iterator for both cases. PatternMatch::match does
an exact compare when there are no wildcards, so the branch was redundant
and the source of the false match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
isConnected decremented the group counter for every intersecting
segment pair, even when both segments already shared the same
union-find root. Cycles in the segment connectivity graph (multi-fanout
junctions) therefore over-decremented the counter, masking genuinely
disconnected segments elsewhere in the net. Decrement only when
uniteGroups merges two distinct groups.

Add read_segments_error6 test: the read_segments1.segs clock route plus
one isolated segment, which previously passed validation silently and
now fails with GRT-0262.

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…_nets

grt: fix layer stack when merging nets
cmake: fix a redundant flag causing the build to fail with newer GCC versions
syn: Add gate remapping by Ashenhurst-Curtis decomposition with shared set
…rhold

Fix dependencies for //src/rsz/test:TestRepairHoldRollback
dbSta: make get_nets glob patterns find hierarchical nets
…-macro-edgetype-numeric

odb: accept numeric edge type names in macro LEF58_EDGETYPE parser
By running the build-cleaner:

```
source <(etc/run-build-cleaner.sh //src/syn/test:acd_test)
```

Signed-off-by: Henner Zeller <h.zeller@acm.org>
…ove_banking

MBFF clock-tree power credit - promote higher banking ratios
est: add multi-tech wire RC support
…g-threshold

syn: Add option to keep names based on fanout
Organize and better document .bazelignore
tap: check if selected master cells are placeable
…lay-controls-layers

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Move the or_layer_patterns store from a cookie to sessionStorage so fill
patterns behave like the hidden/non-selectable layer sets: they survive
the reload triggered by opening a database but start fresh in a new
session, matching the Qt GUI (which does not persist layer options
across sessions). Addresses review feedback on #10795.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The per-layer fill-pattern feature had inlined the
overlaps->intersect->toPixels->drawFilledRect sequence at each site that
paints a shape with the layer pattern, duplicating what draw_box_in_tile
already does. Give the lambda an optional pattern argument (default
solid, capturing pat_ox/pat_oy) so the routing/special-net/pin sites call
draw_box_in_tile(box, color, layer_pattern) while OBS, fills and markers
keep calling it with no pattern. Net -21 lines, no behavior change.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Cover the previously untested per-layer fill-pattern and layer-category
work:

C++ (TestTileGenerator):
- FillPatternParsingClampsToEnum: the "pattern" request field maps to
  TileVisibility::fill_pattern, absent defaults to solid, and out-of-range
  values clamp to solid.
- FillPatternControlsShapeCoverage: a hatch paints fewer pixels than solid
  but more than zero; kNone paints nothing.

C++ (TestSaveReport):
- SerializeTechResponseGroupsOtherLayers: non-routing tech layers land in
  an "Other" category node in the layer hierarchy.

JS:
- nonSolidPatterns: drops solid entries, tolerates null/undefined.
- buildTileRequest: emits the pattern field only for non-solid layers.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…ebGUI-display-controls-layers

web: add Implant/Other layer categories and per-layer fill patterns
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.