| /********************************************************************* | |
| * The following code is part of the power modelling feature of VTR. | |
| * | |
| * For support: | |
| * http://code.google.com/p/vtr-verilog-to-routing/wiki/Power | |
| * | |
| * or email: | |
| * vtr.power.estimation@gmail.com | |
| * | |
| * If you are using power estimation for your researach please cite: | |
| * | |
| * Jeffrey Goeders and Steven Wilton. VersaPower: Power Estimation | |
| * for Diverse FPGA Architectures. In International Conference on | |
| * Field Programmable Technology, 2012. | |
| * | |
| ********************************************************************/ | |
| /** | |
| * This file provides functions that calculate the power of low-level | |
| * components (inverters, simple multiplexers, etc) | |
| */ | |
| #ifndef __POWER_LOW_LEVEL_H__ | |
| #define __POWER_LOW_LEVEL_H__ | |
| /************************* INCLUDES *********************************/ | |
| #include "power.h" | |
| /************************* GLOBALS **********************************/ | |
| /************************* FUNCTION DECLARATION *********************/ | |
| void power_lowlevel_init(); | |
| void power_usage_inverter(t_power_usage * power_usage, float in_dens, | |
| float in_prob, float size, float period); | |
| /*void power_calc_inverter_with_input(t_power_usage * power_usage, | |
| float * input_dynamic_power, float in_density, float in_prob, | |
| float size);*/ | |
| 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_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_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_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); | |
| void power_usage_level_restorer(t_power_usage * power_usage, | |
| float * dyn_power_in, float in_density, float in_probability, | |
| float period); | |
| float power_calc_pb_switching_from_c_internal(t_pb * pb, | |
| t_pb_graph_node * pb_graph_node); | |
| float power_calc_mux_v_out(int num_inputs, float transistor_size, float v_in, | |
| float in_prob_avg); | |
| /*float power_calc_buffer_sc(int stages, float gain, boolean level_restored, | |
| int input_mux_size);*/ | |
| float power_calc_node_switching(float capacitance, float density, float period); | |
| float power_calc_buffer_size_from_Cout(float C_out); | |
| #endif |