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 | |||
) |
Definition at line 50 of file rr_graph_area.c.
00055 { 00056 00057 /* Counts how many transistors are needed to implement the FPGA routing * 00058 * resources. Call this only when an rr_graph exists. It does not count * 00059 * the transistors used in logic blocks, but it counts the transistors in * 00060 * the input connection block multiplexers and in the output pin drivers and * 00061 * pass transistors. NB: this routine assumes pass transistors always * 00062 * generate two edges (one forward, one backward) between two nodes. * 00063 * Physically, this is what happens -- make sure your rr_graph does it. * 00064 * * 00065 * I assume a minimum width transistor takes 1 unit of area. A double-width * 00066 * transistor takes the twice the diffusion width, but the same spacing, so * 00067 * I assume it takes 1.5x the area of a minimum-width transitor. */ 00068 if(directionality == BI_DIRECTIONAL) 00069 { 00070 count_bidir_routing_transistors(num_switch, R_minW_nmos, 00071 R_minW_pmos); 00072 } 00073 else 00074 { 00075 assert(directionality == UNI_DIRECTIONAL); 00076 count_unidir_routing_transistors(segment_inf, R_minW_nmos, 00077 R_minW_pmos); 00078 } 00079 }