VPR-7.0
|
#include <assert.h>
#include "power_lowlevel.h"
#include "power_util.h"
#include "power_cmos_tech.h"
#include "globals.h"
Go to the source code of this file.
Functions | |
static float | power_calc_node_switching_v (float capacitance, float density, float period, float voltage) |
static void | power_calc_transistor_capacitance (float *C_d, float *C_s, float *C_g, e_tx_type transistor_type, float size) |
static float | power_calc_leakage_st (e_tx_type transistor_type, float size) |
static float | power_calc_leakage_st_pass_transistor (float size, float v_ds) |
static float | power_calc_leakage_gate (e_tx_type transistor_type, float size) |
void | power_lowlevel_init () |
float | power_calc_node_switching (float capacitance, float density, float period) |
void | power_usage_inverter (t_power_usage *power_usage, float in_dens, float in_prob, float size, float period) |
void | power_usage_inverter_irregular (t_power_usage *power_usage, float *dyn_power_input, float in_density, float in_probability, float PMOS_size, float NMOS_size, float period) |
void | power_usage_wire (t_power_usage *power_usage, float capacitance, float density, float period) |
void | power_usage_MUX2_transmission (t_power_usage *power_usage, float size, float *in_dens, float *in_prob, float sel_dens, float out_dens, float period) |
void | power_usage_mux_singlelevel_static (t_power_usage *power_usage, float *out_prob, float *out_dens, float *v_out, int num_inputs, int selected_idx, float *in_prob, float *in_dens, float *v_in, float transistor_size, boolean v_out_restored, float period) |
float | power_calc_mux_v_out (int num_inputs, float transistor_size, float v_in, float in_prob_avg) |
void | power_usage_mux_singlelevel_dynamic (t_power_usage *power_usage, int num_inputs, float out_density, float v_out, float *in_prob, float *in_dens, float *v_in, float sel_dens, float sel_prob, float transistor_size, float period) |
void | power_usage_level_restorer (t_power_usage *power_usage, float *dyn_power_in, float in_dens, float in_prob, float period) |
float | power_calc_buffer_size_from_Cout (float C_out) |
float power_calc_buffer_size_from_Cout | ( | float | C_out | ) |
This function calculates the short-circuit factor for a buffer. This factor represents the short-circuit power of a buffer, as a factor of switching power.
Definition at line 852 of file power_lowlevel.c.
|
static |
Returns the gate gate leakage power of a transistor
Definition at line 317 of file power_lowlevel.c.
|
static |
Returns the subthreshold leakage power of a transistor, for V_ds = V_dd
Definition at line 282 of file power_lowlevel.c.
|
static |
Returns the subthreshold leakage power of a pass-transistor, assumed to be a minimum-sized NMOS
Definition at line 353 of file power_lowlevel.c.
float power_calc_mux_v_out | ( | int | num_inputs, |
float | transistor_size, | ||
float | v_in, | ||
float | in_prob_avg | ||
) |
This function calcualtes the output voltage of a single-level multiplexer
Definition at line 583 of file power_lowlevel.c.
float power_calc_node_switching | ( | float | capacitance, |
float | density, | ||
float | period | ||
) |
Calculates the switching power of a node
Definition at line 86 of file power_lowlevel.c.
|
static |
This file provides functions that calculate the power of low-level components (inverters, simple multiplexers, etc)
Calculates the switching power of a node, with non-Vdd voltage
Definition at line 98 of file power_lowlevel.c.
|
static |
Calculates the power of an inverter, also returning dynamic power of the input
Definition at line 234 of file power_lowlevel.c.
void power_lowlevel_init | ( | ) |
Initializer function for this module, called by power_init
Definition at line 47 of file power_lowlevel.c.
void power_usage_inverter | ( | t_power_usage * | power_usage, |
float | in_dens, | ||
float | in_prob, | ||
float | size, | ||
float | period | ||
) |
Calculates the power of an inverter
Definition at line 110 of file power_lowlevel.c.
void power_usage_inverter_irregular | ( | t_power_usage * | power_usage, |
float * | dyn_power_input, | ||
float | in_density, | ||
float | in_probability, | ||
float | PMOS_size, | ||
float | NMOS_size, | ||
float | period | ||
) |
Calculates the power of an inverter, with irregular P/N ratio
Definition at line 149 of file power_lowlevel.c.
void power_usage_level_restorer | ( | t_power_usage * | power_usage, |
float * | dyn_power_in, | ||
float | in_dens, | ||
float | in_prob, | ||
float | period | ||
) |
This function calculates the power of a level restorer, which is a biased inverter with a pull-up PMOS transistor in feedback.
Definition at line 740 of file power_lowlevel.c.
void power_usage_MUX2_transmission | ( | t_power_usage * | power_usage, |
float | size, | ||
float * | in_dens, | ||
float * | in_prob, | ||
float | sel_dens, | ||
float | out_dens, | ||
float | period | ||
) |
Calculates the power of a 2-input multiplexer, comprised of transmission gates
Definition at line 445 of file power_lowlevel.c.
void power_usage_mux_singlelevel_dynamic | ( | t_power_usage * | power_usage, |
int | num_inputs, | ||
float | out_density, | ||
float | v_out, | ||
float * | in_prob, | ||
float * | in_dens, | ||
float * | v_in, | ||
float | sel_dens, | ||
float | sel_prob, | ||
float | transistor_size, | ||
float | period | ||
) |
This function calculates the power of a single-level multiplexer, where the select lines are dynamic
Definition at line 688 of file power_lowlevel.c.
void power_usage_mux_singlelevel_static | ( | t_power_usage * | power_usage, |
float * | out_prob, | ||
float * | out_dens, | ||
float * | v_out, | ||
int | num_inputs, | ||
int | selected_idx, | ||
float * | in_prob, | ||
float * | in_dens, | ||
float * | v_in, | ||
float | transistor_size, | ||
boolean | v_out_restored, | ||
float | period | ||
) |
Calucates the power of a static, single-level multiplexer
Definition at line 494 of file power_lowlevel.c.
void power_usage_wire | ( | t_power_usage * | power_usage, |
float | capacitance, | ||
float | density, | ||
float | period | ||
) |
Calculates the power of a wire
Definition at line 429 of file power_lowlevel.c.