VPR-6.0
|
Go to the source code of this file.
Functions | |
void | count_routing_transistors (enum e_directionality directionality, int num_switch, t_segment_inf *segment_inf, float R_minW_nmos, float R_minW_pmos) |
void count_routing_transistors | ( | enum e_directionality | directionality, |
int | num_switch, | ||
t_segment_inf * | segment_inf, | ||
float | R_minW_nmos, | ||
float | R_minW_pmos | ||
) |
Counts how many transistors are needed to implement the FPGA routing resources. Call this only when an rr_graph exists. It does not count the transistors used in logic blocks, but it counts the transistors in the input connection block multiplexers and in the output pin drivers and pass transistors. NB: this routine assumes pass transistors always generate two edges (one forward, one backward) between two nodes. Physically, this is what happens -- make sure your rr_graph does it.
I assume a minimum width transistor takes 1 unit of area. A double-width transistor takes the twice the diffusion width, but the same spacing, so I assume it takes 1.5x the area of a minimum-width transitor.
Definition at line 61 of file rr_graph_area.c.
{ if(directionality == BI_DIRECTIONAL) { count_bidir_routing_transistors(num_switch, R_minW_nmos, R_minW_pmos); } else { assert(directionality == UNI_DIRECTIONAL); count_unidir_routing_transistors(segment_inf, R_minW_nmos, R_minW_pmos); } }