Optimize equations in DmpCeff
This PR optimizes how certain equations inside DmpCeff are evaluated:
-
Separate functions
DmpPi::vl0andDmpPi::dvl0dtinvoked throughDmpAlg::voandDmpAlg::dVoDtrespectively are always invoked together inevalVlEqns. The same conditions inDmpAlg::voandDmpAlg::dVoDtare therefore checked twice. I refactored the code and made them into a single function that evaluates the function and its derivative at the same time -
I analyzed statistics on how often conditions in
DmpAlg::voandDmpAlg::dVoDtare fulfilled and reordered them so that the most frequently fulfilled one is checked first.
To check if the optimizations work I tested the modification with OpenROAD (using OpenROAD-flow-scripts) on BlackParrot design and nandgate45 PDK. Without the modification the global placement ("3_3_place_gp") stage took approx 554.5 seconds whereas with the modification approx 547.5 seconds. The test was performed on Intel i7-8700 CPU @ 3.20GHz.