关于Toggle Rate在RedHawk中提升Vectorless 动态IR drop分析的思考

RedHawk的功耗计算器有个简单粗暴的公式:

go 复制代码
Calc Pwr = ∑<Instance_power>*<estim_toggle_rate>

这里的estim_toggle_rate就是平均每个时钟周期的翻转次数。说白了,就是你的电路有多"活跃"。一个instance翻转得越频繁,消耗的动态功耗就越大,这很好理解。当然静态功耗就来自于lib。

但问题来了,怎么知道每个instance的真实toggle rate呢?因为要做准确的分析,就需要准确的输入数据,这就需要和项目组的功耗组相互"拉通对齐"了~

RedHawk用了一套很实用的优先级机制来解决这个问题。从低到高,大概是这样的:

  • TOGGLE_RATE

    : 全局默认值,最简单但最不准确

  • BLOCK_TOGGLE_RATE

    : 针对特定block的设置

  • INSTANCE_TOGGLE_RATE

    : 更精细的instance级别设置

  • VCD_FILE

    BLOCK_TOGGLE_FILE: 如果有仿真数据,这个优先级最高