VPR-7.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
power_lowlevel.h
Go to the documentation of this file.
1 /*********************************************************************
2  * The following code is part of the power modelling feature of VTR.
3  *
4  * For support:
5  * http://code.google.com/p/vtr-verilog-to-routing/wiki/Power
6  *
7  * or email:
8  * vtr.power.estimation@gmail.com
9  *
10  * If you are using power estimation for your researach please cite:
11  *
12  * Jeffrey Goeders and Steven Wilton. VersaPower: Power Estimation
13  * for Diverse FPGA Architectures. In International Conference on
14  * Field Programmable Technology, 2012.
15  *
16  ********************************************************************/
17 
18 /**
19  * This file provides functions that calculate the power of low-level
20  * components (inverters, simple multiplexers, etc)
21  */
22 
23 #ifndef __POWER_LOW_LEVEL_H__
24 #define __POWER_LOW_LEVEL_H__
25 
26 /************************* INCLUDES *********************************/
27 #include "power.h"
28 
29 /************************* GLOBALS **********************************/
30 
31 /************************* FUNCTION DECLARATION *********************/
32 void power_lowlevel_init();
33 
34 void power_usage_inverter(t_power_usage * power_usage, float in_dens,
35  float in_prob, float size, float period);
36 /*void power_calc_inverter_with_input(t_power_usage * power_usage,
37  float * input_dynamic_power, float in_density, float in_prob,
38  float size);*/
40  float * dyn_power_input, float in_density, float in_probability,
41  float PMOS_size, float NMOS_size, float period);
42 
43 void power_usage_wire(t_power_usage * power_usage, float capacitance,
44  float density, float period);
45 
47  float * out_prob, float * out_dens, float * V_out, int num_inputs,
48  int selected_idx, float * in_prob, float * in_dens, float * v_in,
49  float transistor_size, boolean v_out_restored, float period);
50 
51 void power_usage_MUX2_transmission(t_power_usage * power_usage, float size,
52  float * in_dens, float * in_prob, float sel_dens, float out_dens,
53  float period);
54 
56  int num_inputs, float out_density, float v_out, float * in_prob,
57  float * in_density, float * v_in, float sel_dens, float sel_prob,
58  float transistor_size, float period);
59 
60 void power_usage_level_restorer(t_power_usage * power_usage,
61  float * dyn_power_in, float in_density, float in_probability,
62  float period);
63 
65  t_pb_graph_node * pb_graph_node);
66 
67 float power_calc_mux_v_out(int num_inputs, float transistor_size, float v_in,
68  float in_prob_avg);
69 
70 /*float power_calc_buffer_sc(int stages, float gain, boolean level_restored,
71  int input_mux_size);*/
72 
73 float power_calc_node_switching(float capacitance, float density, float period);
74 
75 float power_calc_buffer_size_from_Cout(float C_out);
76 
77 #endif
void power_usage_level_restorer(t_power_usage *power_usage, float *dyn_power_in, float in_density, float in_probability, float period)
void power_lowlevel_init()
float power_calc_node_switching(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)
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_density, float *v_in, float sel_dens, float sel_prob, float transistor_size, float period)
float power_calc_buffer_size_from_Cout(float C_out)
float power_calc_pb_switching_from_c_internal(t_pb *pb, t_pb_graph_node *pb_graph_node)
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)
void power_usage_wire(t_power_usage *power_usage, 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)