odb: support DEF virtual route points#10364
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces support for VIRTUAL points in DEF files, enabling the ODB component to correctly parse, store, and write these constructs. The implementation involves tracking junction IDs during path creation and updating the DEF reader and writer logic to handle virtual wire segments. A new test case has been added to verify the round-trip of DEF files containing virtual routes. Feedback suggests improving error handling in the pathVirtualPoint method by logging an error when a virtual point is encountered without a valid preceding junction, as this violates the DEF specification and would improve debuggability for invalid input files.
| if (_wire == nullptr || _cur_layer == nullptr || _prev_junction_id < 0) { | ||
| return; | ||
| } |
There was a problem hiding this comment.
The method returns silently if _prev_junction_id < 0. According to the DEF 5.8 specification, a VIRTUAL point must follow a regular routing point. If it appears at the start of a path, it is an invalid construct. Adding an error message here would improve debuggability for invalid DEF files, as unexpected failures in routing-related constructs should be logged as errors to ensure they are not missed by the user.
References
- Unexpected failures during the routing flow should be logged as an error, not a warning, to ensure critical failure messages are not missed.
fe5cb9a to
9c99f77
Compare
Signed-off-by: naveenvenk17 <naveenvenkat1711@gmail.com>
9c99f77 to
2f3c8c0
Compare
|
Fixed the Jenkins message-id failure by moving the new ODB warning from duplicate ID 426 to free ID 469. Re-ran python etc/find_messages.py -d src/odb and git diff --check locally before force-pushing. |
Signed-off-by: naveenvenk17 <naveenvenkat1711@gmail.com>
Signed-off-by: naveenvenk17 <naveenvenkat1711@gmail.com>
Signed-off-by: naveenvenk17 <naveenvenkat1711@gmail.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
definNet.cpp needs a clang-format |
Signed-off-by: naveenvenk17 <naveenvenkat1711@gmail.com>
|
clang-tidy review says "All clean, LGTM! 👍" |
|
Thanks, fixed in 7899b13 by running clang-format on src/odb/src/defin/definNet.cpp. |
Fixes #5670.
This teaches the DEF reader to map DEF 5.8
VIRTUAL ( x y )routing points onto the existing OpenDB virtual-wire opcode, and teaches DEF output to preserve the sequential virtual point when writing the wire back.A focused ODB regression reads a minimal DEF with a virtual routed point, checks the decoded wire opcode/point sequence, and verifies
write_defpreserves the VIRTUAL point.Local testing:
git diff --cached --checkbazel test //src/odb/test:read_def_virtualcould not be run locally because bazel/bazelisk is not installed in this Windows/WSL environment.