sync - #2
Open
nanocoh wants to merge 3459 commits into
Open
Conversation
Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
…only for rerouted nets Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
…all slacks Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Vitor Bandeira <vvbandeira@baldr.local>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Augusto Berndt <augusto.berndt@precisioninno.com>
…tree-virtual-clock-ord2018 gui: fix two empty-container dereferences in ClockTree
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Add logger_->metric() calls for the GPL-1001, GPL-1005, GPL-1011, GPL-1012, GPL-1013, GPL-1014, and GPL-1017 log messages so these values are available in the metrics JSON output (via -metrics), not just the log. GPL-1018 (final HPWL) is already covered by #11201. Fixes #11234 Signed-off-by: Adityaa Mehra <adirakash@gmail.com>
…ROAD into grt-fr-full-res-aware-init
gpl: report internal metrics for iterations and area
gpl: min tile congestion inflation
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
…ROAD into grt-fr-full-res-aware-init
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
Every -verbose progress row of repair_timing called computeDesignArea(), a walk over every instance in the block, to print the area growth column. Rows are printed every ten passes and once per endpoint visited, and most of them follow passes that accepted no move: on riscv32i's cts repair 217 of 1181 passes accepted one. The area cannot have changed between two rows unless the netlist was edited in between, so the walk now runs only when the committer's edit count has moved since the row that last computed it. The printed value is the same. The key is a monotonic count of accepted and reverted moves rather than the per-type move totals: a journal restore followed by a different accepted move can leave those totals where they were while the area has changed (repair_setup_invalid_phase shows exactly that, one pin swap reverted and one resize accepted between two rows). Resizer::design_area_ exists and is incremented by replaceCell, but buffer insertion does not go through designAreaIncr, which is why designArea() re-derives it on every call and why this caches the computed value rather than trusting the tracked one. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Review feedback on the startpoint cache: replacing a register's cell can delete and recreate its graph vertices, so a cached sta::Vertex* may dangle. Cache the pin and which of its vertices was the startpoint, and look the vertex up again per row; a pin that has lost its vertex is skipped. The cache is also rebuilt on every init(), so a collector that is re-initialised after netlist changes starts from the graph as it is. Same values printed; the per-row cost stays proportional to the number of startpoints, not to the graph. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* origin/master: (49 commits) build(deps): bump idna from 3.11 to 3.15 in /bazel build(deps): bump urllib3 from 2.6.3 to 2.7.0 in /bazel psm: remove pointless obs bypass psm: account for polygon mpins build(Build.sh): stamp the git version into Bazel installs psm: remove stale markers psm: invalidate solvers on fill creation update sta odb: properly initialize all Terminal member pointers rcx,pdn,grt: fix the undefined behavior ubsan reports docs: record the tsan sweep findings ci(coverity): default a missing capture percentage to 0 build(deps): bump the npm group across 2 directories with 1 update dst: stop and join the io_context thread in TestBalancer test: run the sanitizer configs against an instrumented openroad odb: rename tmg_conn's terminals and shorts to Terminal and Short test(coverity): add script test entrypoint ci(coverity): add Bazel capture mode docs: note that a full tsan run may need throttling test: tag regression tests with their language ... Signed-off-by: Vitor Bandeira <vvbandeira@precisioninno.com> # Conflicts: # docs/user/Bazel.md
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
psm: expand pin vias into per-layer boxes in the short check
Frame the design rect instead of the tile georeference rect, size tiles so the fit lands on a whole zoom level, and take Qt's outline colour, hatch and draw order. Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com> # Conflicts: # src/web/src/tile_generator.cpp
Fix the unreachable loop increment, the by-value custom-UI item, the copied label anchor, the unpinned umask and the unchecked temp-file removal. Signed-off-by: Jorge Ferreira <jorge.ferreira@precisioninno.com>
…nt set Two review findings on the progress-row caching. The area cache is keyed on MoveCommitter::netlistEdits(), which counts only edits made through the committer. GlobalSizingPolicy replaces cells directly in applyPresize() and applyDecisions(), so with a phase list such as "LEGACY GLOBAL_SIZING WNS" the counter stood still while the area moved and the later phase printed the pre-sizing area. The cache is now invalidated in OptimizationPolicy::start(), which every policy chains to, so each phase recomputes the area on its first row. That is one walk per phase, and it stays correct for any future phase that edits outside the committer rather than relying on that phase to bump a counter. The startpoint cache rests on the invariant that no setup move creates or removes a startpoint, which until now was only asserted in a comment. The graph walk is split out as walkStartpoints() and a debug-gated checkStartpointCache() re-walks and compares the fresh set against the cache on every row that uses it. It is gated on the violator_collector debug flag at level 2 rather than on NDEBUG: a re-walk per row in every debug build is the cost this series removes. The comment now also names the guard that keeps gate cloning out of the set, CloneGenerator's isSingleOutputCombinational() check, and records why a startpoint whose vertex has disappeared is skipped rather than treated as a stale cache. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
pdn: drop a grid's previous vias from their shapes before regenerating them
rsz: repair_timing up to 88% faster on non-trivial designs by not walking the design for every -verbose progress row
rcx: adds support for 3D-IC extraction
…ernization-opt Optimize dbBox serialization and deserialization
…I-Coverity-Scan Web GUI: address Coverity Scan findings
drawDebugOverlay derived its CSS scale as buffer_dim / kTileSizeInPixel, which only equals the device-pixel ratio while the client's tile is 256 CSS px. The client picks its own size -- 240 by default, and a fitted size when zoom-to-fit needs one -- so the 20 px label and 4 px inset came out scaled by the tile choice instead of by the display. Pass the effective dpr in from renderTileBuffer, which already has it. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…ity-WebGUI-F02 web: bind the web server to loopback by default
Signed-off-by: Matt Liberty <mliberty@precisioninno.com> # Conflicts: # src/web/src/request_handler.cpp # src/web/test/cpp/TestRequestHandler.cpp
…I-outlines WebGUI: fix zoom-to-fit, blockage drawing, and outlines
The test includes boost/json.hpp, gui/gui.h and gui/heatMap.h but the target only depended on //src/gui:gui_stub, which does not export those headers. This failed the layering_check feature. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Renderer::checkDisplayControl routes through Gui::checkDisplayControlsVisible, which was only defined in the Qt build, leaving the no-Qt openroad binary with an undefined symbol at link time. Mirror the headless branch of gui.cpp: forward to the headless viewer, or report visible when no viewer is installed. Route Gui::setDisplayControlsVisible to the viewer as well so the getter and setter agree. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…ity-WebGUI-F01 web: reject cross-origin WebSocket handshakes
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Leaflet reads options.keyboardPanDelta once, in Keyboard.initialize, so a live map's arrow-key distance lives only in the keyboard handler's key map and has to be pushed there through _setPanDelta. That was already what setArrowStep did, but nothing recorded why, and a reviewer reasonably read the option write as the missing piece -- the reverse of how Leaflet works. Extract the push as applyArrowStep so it can be tested at all (main.js imports from a CDN and the test runner cannot load it) and comment the constraint at the point that depends on it. The tests model Leaflet 1.9.4's Map.Keyboard.js, rebuilding _panKeys from the argument, so they assert how far an arrow press pans rather than which function was called: an option-write-only implementation fails them. No behavior change. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…ebGUI-menu-toolbar feat(web): Options menu preferences and full gui::Renderer support
build(docker): install OpenROAD with Bazel
First step of splitting a Qt-free core library out of gui. ColorGenerator held its 31-entry palette as QColor, which made bufferTreeDescriptor.cpp -- otherwise Qt-free -- depend on Qt through colorGenerator.h. Store the palette as Painter::Color instead. Only one caller wanted a QColor (LayoutTabs::populateModuleColors), so drop getQColor() and convert at that site through a new toQColor() helper in the Qt-side gui_utils.h. staDescriptors.cpp guarded <QInputDialog>/<QStringList> behind ENABLE_QT but uses neither; remove the block. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Second step of splitting a Qt-free core library out of gui. gui::Options was declared entirely in the Qt-only src/options.h, yet 44 of its 60 accessors are plain visibility/selectability predicates. That forced DbNetDescriptor::highlight to gate its flywire check on ENABLE_QT, which is the only thing left standing between dbDescriptors and a Qt-free compile. Move the 44 predicates into gui/gui.h as a concrete gui::Options, each carrying the default the old DefaultOptions supplied, and leave the 16 QColor/QFont/BrushStyle accessors in src/options.h as QtOptions. DisplayControls implements QtOptions; GuiPainter, LayoutViewer, LayoutTabs and RenderThread hold QtOptions* so the Qt-typed accessors stay reachable. Painter::getOptions() becomes an inline accessor returning a shared default instance when no options were supplied, replacing the two divergent out-of-line copies -- gui.cpp returned DefaultOptions, stub.cpp returned the null pointer -- and DefaultOptions goes away. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Third and last step of making the shared gui sources Qt-free. dbDescriptors.cpp guarded two actions on ENABLE_QT because they open Qt dialogs: DbObstructionDescriptor's "Copy to layer" (QInputDialog) and DbNetDescriptor's "Insert Buffer" (InsertBufferDialog, QMessageBox). Add a gui::Dialogs interface with chooseItem() and insertBuffer(), and install a Qt implementation from Gui::init(), which only exists in gui.cpp and so only runs in a binary that links Qt. The two actions are now offered when Gui::getDialogs() is set instead of when ENABLE_QT was defined, and dbDescriptors.cpp compiles identically with and without Qt. This also fixes those two actions in the Bazel gui. ENABLE_QT is set only by CMake -- @qt-bazel's qt6_library does not define it -- so the Bazel Qt gui has been compiling dbDescriptors.cpp with the actions stripped out. heatMapCore.cpp keeps its ENABLE_QT guard for now: the symbols behind it are Gui's, and gui_heatmap_core is still linked on its own by tests that define no Gui. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
getLayerSelection() returned the current layer when the user cancelled the layer picker, which is indistinguishable from picking that layer. DbObstructionDescriptor's "Copy to layer" treats only nullptr as a cancellation, and an obstruction's bbox always has a tech layer, so Cancel never produced nullptr: it fell through to dbObstruction::create and silently added a second obstruction on the same layer with the same bbox. Return nullptr on cancel instead. The caller already handles it, and the `current` argument still selects the entry the dialog opens on. The same applies to a selection the dialog reports but that is not in the list, which chooseItem() also reports as cancelled. No automated coverage: the action is only offered when the Qt gui has installed a Dialogs handler, so it is unreachable from the Qt-free tests. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…split gui: make the shared gui sources Qt-free
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[Describe your changes here]
Type of Change
Impact
[How does this change the tool's behavior?]
Verification
./etc/Build.sh).Related Issues
[Link issues here]