Calculates the power of a pb: First checks if dynamic/static power is provided by user in arch file. If not:
316 boolean estimate_buffers_and_wire =
FALSE;
317 boolean estimate_multiplexers =
FALSE;
318 boolean estimate_primitives =
FALSE;
319 boolean recursive_children;
363 dens_avg = dens_avg / num_pins;
416 power_usage_pin_toggle.
leakage +=
427 estimate_buffers_and_wire =
TRUE;
428 estimate_multiplexers =
TRUE;
429 estimate_primitives =
TRUE;
432 estimate_buffers_and_wire =
TRUE;
433 estimate_multiplexers =
TRUE;
434 estimate_primitives =
TRUE;
448 estimate_buffers_and_wire =
FALSE;
449 estimate_multiplexers =
FALSE;
454 if (estimate_primitives) {
474 if (estimate_buffers_and_wire) {
482 &power_usage_bufs_wires);
487 if (estimate_multiplexers) {
507 &power_usage_local_muxes);
511 if (recursive_children) {
513 for (pb_type_idx = 0;
521 t_pb * child_pb = NULL;
526 child_pb = &pb->
child_pbs[pb_type_idx][pb_idx];
528 child_pb_graph_node =
532 child_pb_graph_node);
542 &power_usage_children);
t_pb_graph_pin ** clock_pins
enum e_pb_type_class class_type
struct s_pb_type * pb_type_children
boolean power_method_is_recursive(e_power_estimation_method method)
e_power_estimation_method estimation_method
t_power_usage power_usage
float power_calc_node_switching(float capacitance, float density, float period)
void power_usage_local_interc_mux(t_power_usage *power_usage, t_pb *pb, t_interconnect_pins *interc_pins)
t_pb_type_power * pb_type_power
t_pb_graph_pin ** output_pins
t_solution_inf g_solution_inf
t_power_usage absolute_power_per_instance
void power_add_usage(t_power_usage *dest, const t_power_usage *src)
void power_zero_usage(t_power_usage *power_usage)
struct s_pb_graph_node *** child_pb_graph_nodes
float pin_dens(t_pb *pb, t_pb_graph_pin *pin)
void power_component_add_usage(t_power_usage *power_usage, e_power_component_type component_idx)
struct s_pb_type * pb_type
void power_usage_local_pin_toggle(t_power_usage *power_usage, t_pb *pb, t_pb_graph_pin *pin)
static void power_usage_local_buffers_and_wires(t_power_usage *power_usage, t_pb *pb, t_pb_graph_node *pb_node)
static void power_usage_pb(t_power_usage *power_usage, t_pb *pb, t_pb_graph_node *pb_node)
static void power_usage_primitive(t_power_usage *power_usage, t_pb *pb, t_pb_graph_node *pb_graph_node)
t_power_usage power_usage
t_power_usage power_usage_bufs_wires
t_mode_power * mode_power
t_pb_graph_pin ** input_pins
t_interconnect_pins ** interconnect_pins