Skip to content

sync#2

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

sync#2
nanocoh wants to merge 1671 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]

jfgava and others added 29 commits June 30, 2026 14:58
grt: bound soft-NDR overflow-loop restarts (#8466)
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
pdn: add check for instance halo to ensure it does not overlap rows
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
syn: link syn_lib into npn_test to resolve Synthesis::dontUse
Add "Macros to be placed" count to MPL design-data summary
Fixes #8610

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
…_FOR_BAZEL_TESTS

rm unused MANUAL_FOR_BAZEL_TESTS
Previously openroad just segfaulted on startup due to a tcmalloc
incompatibility.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
grt: add verbose option to CUGR and silence it during incremental
Correct bazel's asan build to use the right malloc library
gpl: opt-in GPU acceleration via Kokkos
dpl: remove universal cell height assumption
Restores the previous semantics.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…no-straps

pdn: do not consider the strap width in the halo check.
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: osamahammad21 <osama@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…acros

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

Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
maliberty and others added 30 commits July 10, 2026 06:02
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…r-design-reroute

RSZ: repair design reroute for slew fix
The tst Fixture unconditionally created a dbSta instance, so every test
that used it linked OpenSTA + dbSta even when it only manipulated an odb
database (e.g. the odb helper-based tests). OpenSTA/dbSta debug symbols
dominate those binaries (~160 MB each).

Split Fixture into a base tst::DbFixture (tst/db_fixture.h, odb-only: db
manipulation, LEF tech loading, file lookup) and a derived tst::Fixture
(tst/fixture.h) that adds the dbSta/OpenSTA instance, readLiberty, and
the LEF library loaders that notify STA. The base lives in a new tst_base
library (//src/tst:db_fixture in Bazel) that does not link STA.

odb DB-only tests and SimpleDbFixture now derive from DbFixture and link
tst_base; STA consumers (PDK fixtures, IntegratedFixture, rsz/dbSta/est
tests) are unchanged. Mirrored in Bazel.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…d-fields

rcx: rm ununsed fields in dbCreateNetUtil
NesterovBase::getDensityGradient re-fetched three loop-invariant values on
every inner bin iteration: getBinCntX() (two non-inlined .cpp calls),
bg_.getBinsConst(), and gCell->getDensityScale(). Hoist them to locals before
the loop and index a raw const Bin* base pointer.

Arithmetic-neutral: identical loop nesting, operands, and accumulation order,
so placement output is bit-identical. Verified the three values are not mutated
inside the loop (binCntX_ member, bins_ not realloced, densityScale_ on the
const gCell param).

medium03 global_placement (DEF read excluded), 3 runs each on a shared
36-core host, -j8 Release:
  before median 199910 ms, after median 185648 ms (~7.1%, within run noise).
QoR bit-identical: iter 486, overflow 0.0994, HPWL 1.162648e+06 unchanged.
gpl ctest suite 65/65 green (log-compare enforces identical output).




Signed-off-by: Saurav Singh <saurav.singh@fermions.co>
Debug info dominates the size of these binaries (template-heavy C++;
TestAccessPoint was ~97% DWARF). Enable -gz=zlib for GNU/Clang in the
Debug and RelWithDebInfo configs, at both compile and link, to compress
the .debug_* sections.

This is transparent to gdb/lldb/readelf/addr2line and a no-op for builds
without -g (e.g. Release). TestAccessPoint drops 330 MB -> 89 MB (-73%).

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The default bazel build is -c opt with no -g, so it carries no debug
info. The asan and profile configs add -g (and keep symbols via
--strip=never), so their binaries carry DWARF that benefits from
compression, mirroring the CMake -gz change.

Add -gz=zlib (compile + link) to the asan and profile configs. It is
transparent to gdb/perf/addr2line.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The tst_base fixture library links GTest::gtest, but that imported
target only exists when find_package(GTest) runs, which is guarded by
ENABLE_TESTS. add_subdirectory(tst) was unconditional, so a -no-tests
build failed at generate time with 'Target tst_base links to
GTest::gtest but the target was not found'.

Guard add_subdirectory(tst) with ENABLE_TESTS. This is safe because
every consumer of tst/tst_base/tst_integrated_fixture lives in a
test/cpp directory that is itself gated by ENABLE_TESTS.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…minimal-deps

Trim odb test binary bloat: minimal deps, fixture split, debug compression
GlobalRouter::removeNet only erased the net from dirty_nets_ in the
FastRoute (non-CUGR) branch. When use_cugr_ is true, a net destroyed
during incremental routing stayed in dirty_nets_, so updateDirtyRoutes
later passed the dangling dbNet to CUGR::updateNet, which dereferenced
it via Design::updateNet (db_net->getSigType()).

In release builds (NDEBUG) this use-after-free is silent, so
grt.incremental_deleted_net.tcl passed. With assertions enabled
(coverage / RELEASEWITHASSERTS builds) the stale sig type tripped
dbSigType::isSupply()'s assert(false) and aborted.

Move the dirty_nets_.erase to run for both routers.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…dirty-net-destroy

grt: erase destroyed net from dirty set in CUGR path
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
SteinerTreeBuilder stored a dbDatabase* that was never used. Remove the
constructor parameter and the db_ member, and update the callers
(OpenRoad::init and the gpl mbff unit test) to match.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The dependabot bump to v3.1.0 (30efff6) regressed contributor
detection. v3 OR-combines isFirstIssue and isFirstPullRequest on every
event, and the PR check dropped author filtering. As a result, any
contributor who has opened PRs but no plain issue in the repo is greeted
as a first-time PR author (upstream actions/first-interaction#369).

v1.3.0 branches on event type and matches PRs by author, so it does not
misfire. Pin back to v1.3.0 and restore its kebab-case input names.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…unused-db-param

stt: drop unused dbDatabase* from SteinerTreeBuilder
…bCallBack-network_

rsz: rm unused OdbCallBack::network_
…rst-interaction-v1

ci: revert first-interaction to v1.3.0 (fix false first-PR greetings)
gpl: hoist loop-invariant accessors in getDensityGradient (bit-identical)
…ings

Enable the external_include_paths toolchain feature so include paths into
external/ (bzlmod/BCR deps) are passed as -isystem instead of -I. Clang
suppresses diagnostics from system headers, so this silences warnings from
ALL third-party headers pulled into our TUs via template instantiation
(boost, Eigen, googletest, ...) at the source -- no per-warning, per-dep
-Wno list to maintain. The existing '.*external/.*@-w' per_file_copt only
covers compiling external *source* files, not their headers included by ours.

The feature is global (target and exec config) and also demotes a from-source
dep's own -iquote entries to -isystem. Two deps need adjusting so their own
quoted includes keep precedence over glibc/system headers:

- git (built as an exec tool for the lint tests): builtin/get-tar-commit-id.c
  includes git's own tar.h (struct ustar_header, TYPEFLAG_GLOBAL_HEADER),
  which must shadow glibc's <tar.h>. Patch GIT_COPTS to re-add the repo root
  as -iquote. Same class of fix as the existing bison/sed/gawk/m4 overrides.

- qt-bazel: external_include_paths moves Qt's include dirs into
  compilation_context.external_includes, which the moc rule did not gather.
  Bump to 541ebf6d, which teaches moc to also collect external_includes.

A full 'bazel build //...' passes; no other from-source dep (abc, yosys,
or-tools, ...) needed changes.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…IpChecker-sta_

dbsta: rm unused IpChecker::sta_
…ernal-include-paths

bazel: pass external headers as -isystem to silence third-party warnings
This test is listed in src/dpl/test/CMakeLists.txt but was missing from
the Bazel BUILD file, so it only ran under CMake. Add it to
COMPULSORY_TESTS to restore CMake/Bazel parity.

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…-multi-height-power-align

dpl: register multi_height_power_align regression test in Bazel
Make Bazel the default build system in etc/Build.sh:

- Bazel is now the default; -cmake-build selects CMake instead.
- -bazel is kept as a deprecated no-op (emits a warning).
- Gate CMake-only setup (macOS brew deps, cmake/bison/flex/swig and
  compiler checks) behind the CMake path; add a bazelisk/bazel launcher
  pre-check for Bazel builds.
- -compiler and -cpp20 no longer apply to Bazel: -compiler warns and is
  ignored, and -cpp20 is now a deprecated no-op for both build systems
  (C++20 is already the default).
- Drop the unconditional --config=opt for Bazel (large link-time
  penalty); add -lto to opt into it. Default Bazel builds still compile
  with -c opt from .bazelrc.
- Bazel builds now install via //:install, using -local/-prefix when
  given or install.sh's default location otherwise. CMake install
  behavior is unchanged (only on -local/-prefix).

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
- Make a relative -prefix path absolute so bazel run //:install (which
  resolves its argument from the runfiles dir) installs to the intended
  location.
- Fix the missing-bazel error message to point at
  './etc/DependencyInstaller.sh -bazel' (with sudo only on Linux).

Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Signed-off-by: Henner Zeller <h.zeller@acm.org>
…bazel-default

Build.sh: default to Bazel, keep CMake via -cmake-build
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.