OpenFPGA/vpr7_x2p/vpr/SRC/power/power_lowlevel.h

78 lines
2.9 KiB
C
Raw Normal View History

2018-07-26 12:28:21 -05:00
/*********************************************************************
* 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