After the odb Bazel split, messages_txt only globbed include/odb/*.h
(8 messages) and missed ~576 logger messages in sub-package source
files. Add message_srcs filegroups to each sub-package, an extra_srcs
parameter to the messages_txt macro, and positional file-path support
in find_messages.py so that sources spanning multiple Bazel packages
are scanned correctly.
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The cli-linux-x64 identifier on code.visualstudio.com/sha/download
returns 404; use update.code.visualstudio.com/latest/cli-linux-x64/stable,
which delivers the glibc-linked binary that matches the Ubuntu base.
Also stop forcing -it unconditionally, which broke CI-style invocations
with "cannot attach stdin to a TTY-enabled container". Allocate a TTY
only when both stdin and stdout are terminals; otherwise pass -i so
piped input still reaches the container.
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Provides claude.sh wrapper and Docker image that sandboxes
claude --dangerously-skip-permissions inside a container with
CMake and Bazel support. The repo is volume-mounted so edits
persist on the host with correct UID/GID ownership.
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
When creating a compilation db for bazel, but there is still
another compile db from cmake (e.g. from some previous build with
cmake), then tools might not choose the intended one.
There was a warning already emitted for that case, but only
for the toplevel directory not if it was in build/. Make this
for both of these.
Signed-off-by: Henner Zeller <h.zeller@acm.org>
The only Posix compatible way to call bash is via `/usr/bin/env`
as bash might be installed in different locations on the system.
`/bin/bash` is not a Posix-required location for that binary
(only `/bin/sh` is).
Use `set -o noglob` instead of `bash -f` for improved readability.
Signed-off-by: Henner Zeller <h.zeller@acm.org>
Removes `python3-click`, `qimgv`, `default-jdk`, and `lsb-release` from the
dependency scripts as requested in #9868.
Signed-off-by: alokkumardalei-wq <alokkumardalei2@gmail.com>
The script used SCRIPT_DIR to find find_messages.py, which doesn't
work under Bazel's runfiles layout. Use RUNFILES_DIR instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
- Buildifier format: reformat all 24 src/*/test/BUILD files
- Tclint: wrap long line in src/dpl/src/Opendp.tcl (114 > 100 chars)
- Simplify find_messages.py lookup in find_dup_ids.sh, removing
hardcoded _main workspace name per review feedback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Use BASH_SOURCE-based SCRIPT_DIR as primary lookup for find_messages.py,
falling back to RUNFILES_DIR for Bazel sandbox context.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Show periodic [whittle] status with phase, element counts, .odb size,
elapsed time. Display tail of step log after 5 minutes of waiting.
Print final summary with before/after .odb sizes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Remove deltaDebug.py, test_deltaDebug.py, and their Bazel targets.
Rename remaining deltaDebug_ prefixes in whittle.py to whittle_.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Add test suites that can be invoked without building OpenROAD:
bazelisk test //:doc_test - all documentation consistency checks
bazelisk test //:dup_id_test - duplicate logger message ID check
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Add genrule targets in all 24 module BUILD files to generate
messages.txt from source via etc/find_messages.py. Add exports_files
for README.md and *.tcl files needed by doc check tests. Export
find_messages.py from etc/BUILD.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
bazelisk test test/orfs/gcd:gcd_whittle_test --test_output=streamed
Add a bazel sh_test that exercises whittle.py against the gcd floorplan
.odb using global placement as the step command. The test verifies that
whittle can iteratively cut instances/nets while the error (reaching 100
placement iterations) is still reproducible.
- Make whittle.py and TCL scripts publicly visible from etc/BUILD
- Add gcd_floorplan_odb filegroup to extract just the .odb output
- Add gcd_whittle_test sh_test tagged "orfs" so it runs with
`bazelisk test test/orfs/gcd/...`
- Document the test in test/orfs/gcd/README.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Use read_db/write_db and ord::get_db_block instead of manually creating
a database. Fix cut loop to use lrange+foreach instead of indexing into
a list while deleting elements. Remove redundant block re-fetch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
An alternative implementation of deltaDebug.py with a
standalone Python script (whittle.py) that delegates ODB manipulation
to small TCL scripts via `openroad -exit`. This works with any OpenROAD
build, even without Python compiled in.
deltaDebug.py is kept as-is during the transition period, but the
plan is to delete it once we're happy with whittle.py
Run with stock python3 — no extra packages needed beyond the standard
library.
Quick test using bazel-orfs gcd targets:
bazelisk run //test/orfs/gcd:gcd_place_deps -- do-place ISSUE_TAG=test global_place_issue print-PWD
mkdir whittle && cd whittle
tar --strip-components=1 -xzf ../tmp/test/orfs/gcd/gcd_place_deps/_main/test/orfs/gcd/global_place_test.tar.gz
sed -i 's/openroad -no_init/openroad -exit -no_init/g' \
run-me-gcd-asap7-base.sh
export PATH=$(pwd)/../../install/OpenROAD/bin:$PATH
python3 ../etc/whittle.py \
--persistence 2 --use_stdout \
--error_string " 100 | " \
--timeout 120 \
--base_db_path \
../tmp/test/orfs/gcd/gcd_place_deps/_main/test/orfs/gcd/results/asap7/gcd/base/2_floorplan.odb \
--step ./run-me-gcd-asap7-base.sh
After a minute or two:
```
Step 19, Nets level debugging, Insts 0, Nets 1, cut elements 1, timeout 2 minutes
[C]
Error Code found: 100 |
Removed 212 unused masters.
___________________________________
Resultant file is ../tmp/test/orfs/gcd/gcd_place_deps/_main/test/orfs/gcd/results/asap7/gcd/base/deltaDebug_base_result_2_floorplan.odb
Delta Debugging Done!
```
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
There was one diagnostic error when running clang-tidy that
was due to not finding Python.h. Add it to the `-I` paths.
Signed-off-by: Henner Zeller <h.zeller@acm.org>