Fix quadratic stampEqns() in PrimaDelayCalc by reserving sparse matrix columns (#486)

* support for filter in get_scene/mode

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

* fix the openroad timeout issue

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>

---------

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
This commit is contained in:
Deepashree Sengupta 2026-08-12 17:36:54 +00:00 committed by GitHub
parent 8b511bc012
commit c3e092033e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 0 deletions

View File

@ -598,6 +598,13 @@ PrimaDelayCalc::stampEqns()
C_.setZero();
B_.setZero();
// The stamps below do not visit the nodes in index order. Reserve room in
// each column so an out of order coeffRef() insert does not shift the packed
// array to make room, which makes stamping quadratic in the node count.
constexpr int non_zero_entry_count = 8;
G_.reserve(Eigen::VectorXi::Constant(order_, non_zero_entry_count));
C_.reserve(Eigen::VectorXi::Constant(order_, non_zero_entry_count));
NetSet drvr_nets(network_);
for (ArcDcalcArg &dcalc_arg : *dcalc_args_) {
const Net *net = dcalc_arg.drvrNet(network_);