There is a short blog about memory current estimation, A simple way to estimate the total power consumption of memories in an SoC. It defines leakage currents and dynamic currents as:
Leakage current parameters:
- Leakage_c_chipdisable – Leakage current of memory bitcell array when memory is disabled
- Leakage_p_chipdisable – Leakage current of memory periphery when memory is disabled
- Leakage_c_chipenable – Leakage current of memory bitcell array when memory is enabled
- Leakage_p_chipenable – Leakage current of memory periphery when memory is enabled
Dynamic current parameters:
- Icc_c_read – dynamic current of memory bitcell array during read cycle
- Icc_p_read– dynamic current of memory periphery during read cycle
- Icc_c_write– dynamic current of memory bitcell array during write cycle
- Icc_p_write– dynamic current of memory periphery during write cycle
Then total power can then be calculated using the following equation.
P_total_estimate = Vdd * (1-activity_factor) * (Leakage_c_chipdisable + Leakage_p_chipdisable) +
Vdd * activity_factor * ( Leakage_c_chipenable + Leakage_p_chipenable) +
Vdd * activity_factor * frequency * ((Icc_c_read + Icc_p_read + Icc_c_write + Icc_p_write)/2)
Here I’d like to extend the discussion a little bit more.
First, the blog uses “activity_factor” and “frequency” to describe memory read and write activities. It serves the goal of a “simple way”. A more accurate way is to run a simulation for the memory access scenario you want to estimate power and dump waveform. Then use power calculation tool such as Synopsys ptpx to calculate power based on the waveform.
Second, the blog says “in a typical SoC, there are hundreds or thousands of instances. To find out the total power consumed by all the memories in a SoC, you can enter the above parameters and the equation into a spreadsheet and do the calculation.” If you use Synopsys ptpx, no need to use spreadsheet. The tool will automatically calculate currents of all the memories.
Third, the blog says “Using a memory datasheet, you can gather all the leakage and dynamic current parameters”. These power information are included in memory’s library file. If you use ptpx, point ptpx to use the memory lib file.
Forth, the blog is intended to estimate memory current for functional mode. It is valid and important. But for SoC design we also need to know memory’s current consumption in DFT mode, aka MBIST mode. This is because:
- MBIST mode current is generally higher than that of function mode. For example, MBIST really tests the memory in the worst access case while function mode may only use memory in a less stressful way. You may argue MBIST unnecessarilly overstress the memory. This is true in theory. But DFT team likely does not know how design team uses memory and they should assume the worse case and the full function.
- Worst case current is important for IR drop analysis. This means if current draw is too high, IR drop could be high and then memory supply voltage could drop too much to cause malfunction not only to memory itself but also to other logic connected to this supply.