#include <assert.h>
#include "util.h"
#include "vpr_types.h"
#include "globals.h"
#include "OptionTokens.h"
#include "ReadOptions.h"
#include "xml_arch.h"
#include "SetupVPR.h"
Go to the source code of this file.
Functions | |
static void | ShowPlacerOpts (IN t_options Options, IN struct s_placer_opts PlacerOpts, IN struct s_annealing_sched AnnealSched) |
static void | ShowOperation (IN enum e_operation Operation) |
static void | ShowRouterOpts (IN struct s_router_opts RouterOpts) |
static void | ShowAnnealSched (IN struct s_annealing_sched AnnealSched) |
static void | ShowRoutingArch (IN struct s_det_routing_arch RoutingArch) |
void | ShowSetup (IN t_options Options, IN t_arch Arch, IN boolean TimingEnabled, IN enum e_operation Operation, IN struct s_placer_opts PlacerOpts, IN struct s_annealing_sched AnnealSched, IN struct s_router_opts RouterOpts, IN struct s_det_routing_arch RoutingArch, IN t_segment_inf *Segments, IN t_timing_inf Timing, IN t_subblock_data Subblocks) |
static void ShowAnnealSched | ( | IN struct s_annealing_sched | AnnealSched | ) | [static] |
Definition at line 143 of file ShowSetup.c.
00144 { 00145 00146 printf("AnnealSched.type: "); 00147 switch (AnnealSched.type) 00148 { 00149 case AUTO_SCHED: 00150 printf("AUTO_SCHED\n"); 00151 break; 00152 case USER_SCHED: 00153 printf("USER_SCHED\n"); 00154 break; 00155 default: 00156 printf("<Unknown>\n"); 00157 exit(1); 00158 } 00159 00160 printf("AnnealSched.inner_num: %f\n", AnnealSched.inner_num); 00161 00162 if(USER_SCHED == AnnealSched.type) 00163 { 00164 printf("AnnealSched.init_t: %f\n", AnnealSched.init_t); 00165 printf("AnnealSched.alpha_t: %f\n", AnnealSched.alpha_t); 00166 printf("AnnealSched.exit_t: %f\n", AnnealSched.exit_t); 00167 } 00168 }
static void ShowOperation | ( | IN enum e_operation | Operation | ) | [static] |
Definition at line 331 of file ShowSetup.c.
00332 { 00333 printf("Operation: "); 00334 switch (Operation) 00335 { 00336 case PLACE_AND_ROUTE: 00337 printf("PLACE_AND_ROUTE\n"); 00338 break; 00339 case PLACE_ONLY: 00340 printf("PLACE_ONLY\n"); 00341 break; 00342 case ROUTE_ONLY: 00343 printf("ROUTE_ONLY\n"); 00344 break; 00345 case TIMING_ANALYSIS_ONLY: 00346 printf("TIMING_ANALYSIS_ONLY\n"); 00347 break; 00348 default: 00349 printf("<Unknown>\n"); 00350 exit(1); 00351 } 00352 printf("\n"); 00353 }
static void ShowPlacerOpts | ( | IN t_options | Options, | |
IN struct s_placer_opts | PlacerOpts, | |||
IN struct s_annealing_sched | AnnealSched | |||
) | [static] |
Definition at line 357 of file ShowSetup.c.
00360 { 00361 00362 printf("PlacerOpts.place_freq: "); 00363 switch (PlacerOpts.place_freq) 00364 { 00365 case PLACE_ONCE: 00366 printf("PLACE_ONCE\n"); 00367 break; 00368 case PLACE_ALWAYS: 00369 printf("PLACE_ALWAYS\n"); 00370 break; 00371 case PLACE_NEVER: 00372 printf("PLACE_NEVER\n"); 00373 break; 00374 default: 00375 printf("<Unknown>\n"); 00376 exit(1); 00377 } 00378 if((PLACE_ONCE == PlacerOpts.place_freq) || 00379 (PLACE_ALWAYS == PlacerOpts.place_freq)) 00380 { 00381 00382 printf("PlacerOpts.place_algorithm: "); 00383 switch (PlacerOpts.place_algorithm) 00384 { 00385 case BOUNDING_BOX_PLACE: 00386 printf("BOUNDING_BOX_PLACE\n"); 00387 break; 00388 case NET_TIMING_DRIVEN_PLACE: 00389 printf("NET_TIMING_DRIVEN_PLACE\n"); 00390 break; 00391 case PATH_TIMING_DRIVEN_PLACE: 00392 printf("PATH_TIMING_DRIVEN_PLACE\n"); 00393 break; 00394 default: 00395 printf("<Unknown>\n"); 00396 exit(1); 00397 } 00398 00399 printf("PlacerOpts.place_cost_type: "); 00400 switch (PlacerOpts.place_cost_type) 00401 { 00402 case LINEAR_CONG: 00403 printf("LINEAR_CONG\n"); 00404 break; 00405 case NONLINEAR_CONG: 00406 printf("NONLINEAR_CONG\n"); 00407 break; 00408 default: 00409 printf("<Unknown>\n"); 00410 exit(1); 00411 } 00412 00413 printf("PlacerOpts.pad_loc_type: "); 00414 switch (PlacerOpts.pad_loc_type) 00415 { 00416 case FREE: 00417 printf("FREE\n"); 00418 break; 00419 case RANDOM: 00420 printf("RANDOM\n"); 00421 break; 00422 case USER: 00423 printf("USER '%s'\n", PlacerOpts.pad_loc_file); 00424 break; 00425 default: 00426 printf("<Unknown>\n"); 00427 exit(1); 00428 } 00429 00430 printf("PlacerOpts.place_cost_exp: %f\n", 00431 PlacerOpts.place_cost_exp); 00432 00433 if((LINEAR_CONG == PlacerOpts.place_cost_type) || 00434 (Options.Count[OT_PLACE_CHAN_WIDTH])) 00435 { 00436 printf("PlacerOpts.place_chan_width: %d\n", 00437 PlacerOpts.place_chan_width); 00438 } 00439 00440 if(NONLINEAR_CONG == PlacerOpts.place_cost_type) 00441 { 00442 printf("PlacerOpts.num_regions: %d\n", 00443 PlacerOpts.num_regions); 00444 } 00445 00446 if((NET_TIMING_DRIVEN_PLACE == PlacerOpts.place_algorithm) || 00447 (PATH_TIMING_DRIVEN_PLACE == PlacerOpts.place_algorithm)) 00448 { 00449 printf("PlacerOpts.inner_loop_recompute_divider: %d\n", 00450 PlacerOpts.inner_loop_recompute_divider); 00451 printf("PlacerOpts.recompute_crit_iter: %d\n", 00452 PlacerOpts.recompute_crit_iter); 00453 printf("PlacerOpts.timing_tradeoff: %f\n", 00454 PlacerOpts.timing_tradeoff); 00455 printf("PlacerOpts.td_place_exp_first: %f\n", 00456 PlacerOpts.td_place_exp_first); 00457 printf("PlacerOpts.td_place_exp_last: %f\n", 00458 PlacerOpts.td_place_exp_last); 00459 } 00460 00461 printf("PlaceOpts.seed: %d\n", PlacerOpts.seed); 00462 00463 ShowAnnealSched(AnnealSched); 00464 } 00465 printf("\n"); 00466 00467 }
static void ShowRouterOpts | ( | IN struct s_router_opts | RouterOpts | ) | [static] |
Definition at line 172 of file ShowSetup.c.
00173 { 00174 00175 printf("RouterOpts.route_type: "); 00176 switch (RouterOpts.route_type) 00177 { 00178 case GLOBAL: 00179 printf("GLOBAL\n"); 00180 break; 00181 case DETAILED: 00182 printf("DETAILED\n"); 00183 break; 00184 default: 00185 printf("<Unknown>\n"); 00186 exit(1); 00187 } 00188 00189 if(DETAILED == RouterOpts.route_type) 00190 { 00191 printf("RouterOpts.router_algorithm: "); 00192 switch (RouterOpts.router_algorithm) 00193 { 00194 case BREADTH_FIRST: 00195 printf("BREADTH_FIRST\n"); 00196 break; 00197 case TIMING_DRIVEN: 00198 printf("TIMING_DRIVEN\n"); 00199 break; 00200 case DIRECTED_SEARCH: 00201 printf("DIRECTED_SEARCH\n"); 00202 break; 00203 default: 00204 printf("<Unknown>\n"); 00205 exit(1); 00206 } 00207 00208 printf("RouterOpts.base_cost_type: "); 00209 switch (RouterOpts.base_cost_type) 00210 { 00211 case INTRINSIC_DELAY: 00212 printf("INTRINSIC_DELAY\n"); 00213 break; 00214 case DELAY_NORMALIZED: 00215 printf("DELAY_NORMALIZED\n"); 00216 break; 00217 case DEMAND_ONLY: 00218 printf("DEMAND_ONLY\n"); 00219 break; 00220 default: 00221 printf("<Unknown>\n"); 00222 exit(1); 00223 } 00224 00225 printf("RouterOpts.fixed_channel_width: "); 00226 if(NO_FIXED_CHANNEL_WIDTH == RouterOpts.fixed_channel_width) 00227 { 00228 printf("NO_FIXED_CHANNEL_WIDTH\n"); 00229 } 00230 else 00231 { 00232 printf("%d\n", RouterOpts.fixed_channel_width); 00233 } 00234 00235 printf("RouterOpts.acc_fac: %f\n", RouterOpts.acc_fac); 00236 printf("RouterOpts.bb_factor: %d\n", RouterOpts.bb_factor); 00237 printf("RouterOpts.bend_cost: %f\n", RouterOpts.bend_cost); 00238 printf("RouterOpts.first_iter_pres_fac: %f\n", 00239 RouterOpts.first_iter_pres_fac); 00240 printf("RouterOpts.initial_pres_fac: %f\n", 00241 RouterOpts.initial_pres_fac); 00242 printf("RouterOpts.pres_fac_mult: %f\n", 00243 RouterOpts.pres_fac_mult); 00244 printf("RouterOpts.max_router_iterations: %d\n", 00245 RouterOpts.max_router_iterations); 00246 00247 if(TIMING_DRIVEN == RouterOpts.router_algorithm) 00248 { 00249 printf("RouterOpts.astar_fac: %f\n", 00250 RouterOpts.astar_fac); 00251 printf("RouterOpts.criticality_exp: %f\n", 00252 RouterOpts.criticality_exp); 00253 printf("RouterOpts.max_criticality: %f\n", 00254 RouterOpts.max_criticality); 00255 } 00256 } 00257 else 00258 { 00259 assert(GLOBAL == RouterOpts.route_type); 00260 00261 printf("RouterOpts.router_algorithm: "); 00262 switch (RouterOpts.router_algorithm) 00263 { 00264 case BREADTH_FIRST: 00265 printf("BREADTH_FIRST\n"); 00266 break; 00267 case TIMING_DRIVEN: 00268 printf("TIMING_DRIVEN\n"); 00269 break; 00270 case DIRECTED_SEARCH: 00271 printf("DIRECTED_SEARCH\n"); 00272 break; 00273 default: 00274 printf("<Unknown>\n"); 00275 exit(1); 00276 } 00277 00278 printf("RouterOpts.base_cost_type: "); 00279 switch (RouterOpts.base_cost_type) 00280 { 00281 case INTRINSIC_DELAY: 00282 printf("INTRINSIC_DELAY\n"); 00283 break; 00284 case DELAY_NORMALIZED: 00285 printf("DELAY_NORMALIZED\n"); 00286 break; 00287 case DEMAND_ONLY: 00288 printf("DEMAND_ONLY\n"); 00289 break; 00290 default: 00291 printf("<Unknown>\n"); 00292 exit(1); 00293 } 00294 00295 printf("RouterOpts.fixed_channel_width: "); 00296 if(NO_FIXED_CHANNEL_WIDTH == RouterOpts.fixed_channel_width) 00297 { 00298 printf("NO_FIXED_CHANNEL_WIDTH\n"); 00299 } 00300 else 00301 { 00302 printf("%d\n", RouterOpts.fixed_channel_width); 00303 } 00304 00305 printf("RouterOpts.acc_fac: %f\n", RouterOpts.acc_fac); 00306 printf("RouterOpts.bb_factor: %d\n", RouterOpts.bb_factor); 00307 printf("RouterOpts.bend_cost: %f\n", RouterOpts.bend_cost); 00308 printf("RouterOpts.first_iter_pres_fac: %f\n", 00309 RouterOpts.first_iter_pres_fac); 00310 printf("RouterOpts.initial_pres_fac: %f\n", 00311 RouterOpts.initial_pres_fac); 00312 printf("RouterOpts.pres_fac_mult: %f\n", 00313 RouterOpts.pres_fac_mult); 00314 printf("RouterOpts.max_router_iterations: %d\n", 00315 RouterOpts.max_router_iterations); 00316 if(TIMING_DRIVEN == RouterOpts.router_algorithm) 00317 { 00318 printf("RouterOpts.astar_fac: %f\n", 00319 RouterOpts.astar_fac); 00320 printf("RouterOpts.criticality_exp: %f\n", 00321 RouterOpts.criticality_exp); 00322 printf("RouterOpts.max_criticality: %f\n", 00323 RouterOpts.max_criticality); 00324 } 00325 } 00326 printf("\n"); 00327 }
static void ShowRoutingArch | ( | IN struct s_det_routing_arch | RoutingArch | ) | [static] |
Definition at line 99 of file ShowSetup.c.
00100 { 00101 00102 printf("RoutingArch.directionality: "); 00103 switch (RoutingArch.directionality) 00104 { 00105 case BI_DIRECTIONAL: 00106 printf("BI_DIRECTIONAL\n"); 00107 break; 00108 case UNI_DIRECTIONAL: 00109 printf("UNI_DIRECTIONAL\n"); 00110 break; 00111 default: 00112 printf("<Unknown>\n"); 00113 exit(1); 00114 } 00115 00116 printf("RoutingArch.switch_block_type: "); 00117 switch (RoutingArch.switch_block_type) 00118 { 00119 case SUBSET: 00120 printf("SUBSET\n"); 00121 break; 00122 case WILTON: 00123 printf("WILTON\n"); 00124 break; 00125 case UNIVERSAL: 00126 printf("UNIVERSAL\n"); 00127 break; 00128 case FULL: 00129 printf("FULL\n"); 00130 break; 00131 default: 00132 printf("<Unknown>\n"); 00133 exit(1); 00134 } 00135 00136 printf("RoutingArch.Fs: %d\n", RoutingArch.Fs); 00137 00138 printf("\n"); 00139 }
void ShowSetup | ( | IN t_options | Options, | |
IN t_arch | Arch, | |||
IN boolean | TimingEnabled, | |||
IN enum e_operation | Operation, | |||
IN struct s_placer_opts | PlacerOpts, | |||
IN struct s_annealing_sched | AnnealSched, | |||
IN struct s_router_opts | RouterOpts, | |||
IN struct s_det_routing_arch | RoutingArch, | |||
IN t_segment_inf * | Segments, | |||
IN t_timing_inf | Timing, | |||
IN t_subblock_data | Subblocks | |||
) |
Definition at line 24 of file ShowSetup.c.
00035 { 00036 int i, j, num_p_inputs, num_p_outputs; 00037 00038 printf("Timing analysis: %s\n", (TimingEnabled ? "ON" : "OFF")); 00039 printf("\n"); 00040 00041 ShowOperation(Operation); 00042 ShowPlacerOpts(Options, PlacerOpts, AnnealSched); 00043 if((ROUTE_ONLY == Operation) || (PLACE_AND_ROUTE == Operation)) 00044 { 00045 ShowRouterOpts(RouterOpts); 00046 } 00047 else 00048 { 00049 printf("Router: DISABLED\n\n"); 00050 } 00051 00052 if(DETAILED == RouterOpts.route_type) 00053 ShowRoutingArch(RoutingArch); 00054 00055 printf("The circuit will be mapped into a %d x %d array of clbs.\n", 00056 nx, ny); 00057 printf("\n"); 00058 printf("Netlist num_nets: %d\n", num_nets); 00059 printf("Netlist num_blocks: %d\n", num_blocks); 00060 00061 /* Count I/O input and output pads */ 00062 num_p_inputs = 0; 00063 num_p_outputs = 0; 00064 for(i = 0; i < num_blocks; i++) 00065 { 00066 if(block[i].type == IO_TYPE) 00067 { 00068 for(j = 0; j < IO_TYPE->num_pins; j++) 00069 { 00070 if(block[i].nets[j] != OPEN) 00071 { 00072 if(IO_TYPE-> 00073 class_inf[IO_TYPE->pin_class[j]]. 00074 type == DRIVER) 00075 { 00076 num_p_inputs++; 00077 } 00078 else 00079 { 00080 assert(IO_TYPE-> 00081 class_inf[IO_TYPE-> 00082 pin_class[j]]. 00083 type == RECEIVER); 00084 num_p_outputs++; 00085 } 00086 } 00087 } 00088 } 00089 } 00090 00091 /* Print out each block separately instead */ 00092 printf("Netlist inputs pins: %d\n", num_p_inputs); 00093 printf("Netlist output pins: %d\n", num_p_outputs); 00094 printf("\n"); 00095 }