Commit ae5c013
committed
[gpl] Include Liberty internal power in MBFF clustering cost
The MBFF algorithm previously used only leakage power to decide whether
to replace single-bit flip-flops with multi-bit cells. For flip-flops,
internal power dominates total power, and MBFF cells share scan (SE/SI)
and clock structures across bits, giving 40-90% savings on those pins.
Ignoring internal power caused clustering to increase total power on
some PDKs.
Add getInternalEnergy() which sums average internal energy across all
pins (CK, D, Q, SE, SI) from Liberty internal_power tables. Use this
alongside leakage in three places:
- SetRatios: norm_power_ uses total estimated power (leakage +
internal_energy * clock_activity) so the ILP cost function reflects
total power, not just leakage.
- ReadLibs: select best tray per size by minimum total estimated power
instead of minimum leakage, so cells with lower total power (e.g. SVT
over LVT) are preferred even when their leakage is higher.
- SetVars: select the single-bit baseline cell by lowest total estimated
power, with both leakage and internal energy paired from the same cell.
Clock period is obtained from SDC before ReadLibs runs so tray selection
can account for internal power. Falls back to leakage-only when no
clock is defined or no internal_power tables exist.
Signed-off-by: Matt Liberty <mliberty@precisioninno.com>1 parent 66c2b5e commit ae5c013
4 files changed
Lines changed: 290 additions & 96 deletions
0 commit comments