Go to the source code of this file.
Functions | |
void | alloc_lookups_and_criticalities (t_chan_width_dist chan_width_dist, struct s_router_opts router_opts, struct s_det_routing_arch det_routing_arch, t_segment_inf *segment_inf, t_timing_inf timing_inf, t_subblock_data subblock_data, float ***net_delay, float ***net_slack) |
void | load_criticalities (struct s_placer_opts placer_opts, float **net_slack, float d_max, float crit_exponent) |
void | free_lookups_and_criticalities (float ***net_delay, float ***net_slack) |
Variables | |
float ** | timing_place_crit |
void alloc_lookups_and_criticalities | ( | t_chan_width_dist | chan_width_dist, | |
struct s_router_opts | router_opts, | |||
struct s_det_routing_arch | det_routing_arch, | |||
t_segment_inf * | segment_inf, | |||
t_timing_inf | timing_inf, | |||
t_subblock_data | subblock_data, | |||
float *** | net_delay, | |||
float *** | net_slack | |||
) |
Definition at line 138 of file timing_place.c.
00146 { 00147 00148 (*net_slack) = alloc_and_load_timing_graph(timing_inf, subblock_data); 00149 00150 (*net_delay) = alloc_net_delay(&net_delay_chunk_list_head); 00151 00152 compute_delay_lookup_tables(router_opts, det_routing_arch, segment_inf, 00153 timing_inf, chan_width_dist, subblock_data); 00154 00155 timing_place_crit = alloc_crit(&timing_place_crit_chunk_list_head); 00156 00157 }
void free_lookups_and_criticalities | ( | float *** | net_delay, | |
float *** | net_slack | |||
) |
Definition at line 161 of file timing_place.c.
00163 { 00164 00165 free(timing_place_crit); 00166 free_crit(&timing_place_crit_chunk_list_head); 00167 00168 free_timing_graph(*net_slack); 00169 free_net_delay(*net_delay, &net_delay_chunk_list_head); 00170 00171 }
void load_criticalities | ( | struct s_placer_opts | placer_opts, | |
float ** | net_slack, | |||
float | d_max, | |||
float | crit_exponent | |||
) |
Definition at line 100 of file timing_place.c.
00104 { 00105 00106 /*set criticality values, returns the maximum criticality found */ 00107 /*assumes that net_slack contains correct values, ie. assumes * 00108 *that load_net_slack has been called*/ 00109 00110 int inet, ipin; 00111 float pin_crit; 00112 00113 00114 00115 for(inet = 0; inet < num_nets; inet++) 00116 { 00117 00118 if(inet == OPEN) 00119 continue; 00120 if(net[inet].is_global) 00121 continue; 00122 00123 for(ipin = 1; ipin <= net[inet].num_sinks; ipin++) 00124 { 00125 /*clip the criticality to never go negative (could happen */ 00126 /*for a constant generator since it's slack is huge) */ 00127 pin_crit = max(1 - net_slack[inet][ipin] / d_max, 0.); 00128 timing_place_crit[inet][ipin] = 00129 pow(pin_crit, crit_exponent); 00130 00131 } 00132 } 00133 }
float** timing_place_crit |
Definition at line 13 of file timing_place.c.