VPR-6.0

vpr/SRC/place/timing_place.h File Reference

This graph shows which files directly or indirectly include this file:

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, 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

Function Documentation

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,
float ***  net_delay,
float ***  net_slack 
)

Definition at line 138 of file timing_place.c.

{

    (*net_slack) = alloc_and_load_timing_graph(timing_inf);

    (*net_delay) = alloc_net_delay(&net_delay_chunk_list_head, clb_net, num_nets);

    compute_delay_lookup_tables(router_opts, det_routing_arch, segment_inf,
                                timing_inf, chan_width_dist);

    timing_place_crit = alloc_crit(&timing_place_crit_chunk_list_head);

}

Here is the call graph for this function:

Here is the caller graph for this function:

void free_lookups_and_criticalities ( float ***  net_delay,
float ***  net_slack 
)

Definition at line 160 of file timing_place.c.

Here is the call graph for this function:

Here is the caller graph for this function:

void load_criticalities ( struct s_placer_opts  placer_opts,
float **  net_slack,
float  d_max,
float  crit_exponent 
)

set criticality values, returns the maximum criticality found assumes that net_slack contains correct values, ie. assumes that load_net_slack has been called

Definition at line 104 of file timing_place.c.

{

    int inet, ipin;
    float pin_crit;



    for(inet = 0; inet < num_nets; inet++)
        {

            if(inet == OPEN)
                continue;
            if(clb_net[inet].is_global)
                continue;

            for(ipin = 1; ipin <= clb_net[inet].num_sinks; ipin++)
                {
                    /*clip the criticality to never go negative (could happen */
                    /*for a constant generator since it's slack is huge) */
                    pin_crit = max(1 - net_slack[inet][ipin] / d_max, 0.);
                    timing_place_crit[inet][ipin] =
                        pow(pin_crit, crit_exponent);

                }
        }
}

Here is the caller graph for this function:


Variable Documentation

available externally

Definition at line 13 of file timing_place.c.