Memories are increasingly occupying more area in today’s SoCs. So, it is imperative to have an early estimate of the total power consumed by the memories. Memory power consumption can be divided into two components:
Using a memory datasheet, you can gather all the leakage and dynamic current parameters that are needed to calculate the total power.
Leakage current parameters:
Dynamic current parameters:
The 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)
To ensure you obtain correct results:
This equation will give you the total power estimate for one instance. 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. Estimating the total power consumption enables you to identify the hotspots early in the design cycle. To save power you can now decide to reconfigure the memory instances or choose a different compiler to generate hotspot instances.
The currents in memory datasheet are given for 50% read and write activity. Does that mean I need to multiply by 2 to get current corresponding to 100% activity and then multiply further by our design read/write activity?