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:
parent
8b511bc012
commit
c3e092033e
|
|
@ -598,6 +598,13 @@ PrimaDelayCalc::stampEqns()
|
||||||
C_.setZero();
|
C_.setZero();
|
||||||
B_.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_);
|
NetSet drvr_nets(network_);
|
||||||
for (ArcDcalcArg &dcalc_arg : *dcalc_args_) {
|
for (ArcDcalcArg &dcalc_arg : *dcalc_args_) {
|
||||||
const Net *net = dcalc_arg.drvrNet(network_);
|
const Net *net = dcalc_arg.drvrNet(network_);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue