📄 showsetup.c
字号:
#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"/******** Function Prototypes ********/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);/******** Function Implementations ********/voidShowSetup(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){ int i, j, num_p_inputs, num_p_outputs; printf("Timing analysis: %s\n", (TimingEnabled ? "ON" : "OFF")); printf("\n"); ShowOperation(Operation); ShowPlacerOpts(Options, PlacerOpts, AnnealSched); if((ROUTE_ONLY == Operation) || (PLACE_AND_ROUTE == Operation)) { ShowRouterOpts(RouterOpts); } else { printf("Router: DISABLED\n\n"); } if(DETAILED == RouterOpts.route_type) ShowRoutingArch(RoutingArch); printf("The circuit will be mapped into a %d x %d array of clbs.\n", nx, ny); printf("\n"); printf("Netlist num_nets: %d\n", num_nets); printf("Netlist num_blocks: %d\n", num_blocks); /* Count I/O input and output pads */ num_p_inputs = 0; num_p_outputs = 0; for(i = 0; i < num_blocks; i++) { if(block[i].type == IO_TYPE) { for(j = 0; j < IO_TYPE->num_pins; j++) { if(block[i].nets[j] != OPEN) { if(IO_TYPE-> class_inf[IO_TYPE->pin_class[j]]. type == DRIVER) { num_p_inputs++; } else { assert(IO_TYPE-> class_inf[IO_TYPE-> pin_class[j]]. type == RECEIVER); num_p_outputs++; } } } } }/* Print out each block separately instead */ printf("Netlist inputs pins: %d\n", num_p_inputs); printf("Netlist output pins: %d\n", num_p_outputs); printf("\n");}static voidShowRoutingArch(IN struct s_det_routing_arch RoutingArch){ printf("RoutingArch.directionality: "); switch (RoutingArch.directionality) { case BI_DIRECTIONAL: printf("BI_DIRECTIONAL\n"); break; case UNI_DIRECTIONAL: printf("UNI_DIRECTIONAL\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RoutingArch.switch_block_type: "); switch (RoutingArch.switch_block_type) { case SUBSET: printf("SUBSET\n"); break; case WILTON: printf("WILTON\n"); break; case UNIVERSAL: printf("UNIVERSAL\n"); break; case FULL: printf("FULL\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RoutingArch.Fs: %d\n", RoutingArch.Fs); printf("\n");}static voidShowAnnealSched(IN struct s_annealing_sched AnnealSched){ printf("AnnealSched.type: "); switch (AnnealSched.type) { case AUTO_SCHED: printf("AUTO_SCHED\n"); break; case USER_SCHED: printf("USER_SCHED\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("AnnealSched.inner_num: %f\n", AnnealSched.inner_num); if(USER_SCHED == AnnealSched.type) { printf("AnnealSched.init_t: %f\n", AnnealSched.init_t); printf("AnnealSched.alpha_t: %f\n", AnnealSched.alpha_t); printf("AnnealSched.exit_t: %f\n", AnnealSched.exit_t); }}static voidShowRouterOpts(IN struct s_router_opts RouterOpts){ printf("RouterOpts.route_type: "); switch (RouterOpts.route_type) { case GLOBAL: printf("GLOBAL\n"); break; case DETAILED: printf("DETAILED\n"); break; default: printf("<Unknown>\n"); exit(1); } if(DETAILED == RouterOpts.route_type) { printf("RouterOpts.router_algorithm: "); switch (RouterOpts.router_algorithm) { case BREADTH_FIRST: printf("BREADTH_FIRST\n"); break; case TIMING_DRIVEN: printf("TIMING_DRIVEN\n"); break; case DIRECTED_SEARCH: printf("DIRECTED_SEARCH\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RouterOpts.base_cost_type: "); switch (RouterOpts.base_cost_type) { case INTRINSIC_DELAY: printf("INTRINSIC_DELAY\n"); break; case DELAY_NORMALIZED: printf("DELAY_NORMALIZED\n"); break; case DEMAND_ONLY: printf("DEMAND_ONLY\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RouterOpts.fixed_channel_width: "); if(NO_FIXED_CHANNEL_WIDTH == RouterOpts.fixed_channel_width) { printf("NO_FIXED_CHANNEL_WIDTH\n"); } else { printf("%d\n", RouterOpts.fixed_channel_width); } printf("RouterOpts.acc_fac: %f\n", RouterOpts.acc_fac); printf("RouterOpts.bb_factor: %d\n", RouterOpts.bb_factor); printf("RouterOpts.bend_cost: %f\n", RouterOpts.bend_cost); printf("RouterOpts.first_iter_pres_fac: %f\n", RouterOpts.first_iter_pres_fac); printf("RouterOpts.initial_pres_fac: %f\n", RouterOpts.initial_pres_fac); printf("RouterOpts.pres_fac_mult: %f\n", RouterOpts.pres_fac_mult); printf("RouterOpts.max_router_iterations: %d\n", RouterOpts.max_router_iterations); if(TIMING_DRIVEN == RouterOpts.router_algorithm) { printf("RouterOpts.astar_fac: %f\n", RouterOpts.astar_fac); printf("RouterOpts.criticality_exp: %f\n", RouterOpts.criticality_exp); printf("RouterOpts.max_criticality: %f\n", RouterOpts.max_criticality); } } else { assert(GLOBAL == RouterOpts.route_type); printf("RouterOpts.router_algorithm: "); switch (RouterOpts.router_algorithm) { case BREADTH_FIRST: printf("BREADTH_FIRST\n"); break; case TIMING_DRIVEN: printf("TIMING_DRIVEN\n"); break; case DIRECTED_SEARCH: printf("DIRECTED_SEARCH\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RouterOpts.base_cost_type: "); switch (RouterOpts.base_cost_type) { case INTRINSIC_DELAY: printf("INTRINSIC_DELAY\n"); break; case DELAY_NORMALIZED: printf("DELAY_NORMALIZED\n"); break; case DEMAND_ONLY: printf("DEMAND_ONLY\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("RouterOpts.fixed_channel_width: "); if(NO_FIXED_CHANNEL_WIDTH == RouterOpts.fixed_channel_width) { printf("NO_FIXED_CHANNEL_WIDTH\n"); } else { printf("%d\n", RouterOpts.fixed_channel_width); } printf("RouterOpts.acc_fac: %f\n", RouterOpts.acc_fac); printf("RouterOpts.bb_factor: %d\n", RouterOpts.bb_factor); printf("RouterOpts.bend_cost: %f\n", RouterOpts.bend_cost); printf("RouterOpts.first_iter_pres_fac: %f\n", RouterOpts.first_iter_pres_fac); printf("RouterOpts.initial_pres_fac: %f\n", RouterOpts.initial_pres_fac); printf("RouterOpts.pres_fac_mult: %f\n", RouterOpts.pres_fac_mult); printf("RouterOpts.max_router_iterations: %d\n", RouterOpts.max_router_iterations); if(TIMING_DRIVEN == RouterOpts.router_algorithm) { printf("RouterOpts.astar_fac: %f\n", RouterOpts.astar_fac); printf("RouterOpts.criticality_exp: %f\n", RouterOpts.criticality_exp); printf("RouterOpts.max_criticality: %f\n", RouterOpts.max_criticality); } } printf("\n");}static voidShowOperation(IN enum e_operation Operation){ printf("Operation: "); switch (Operation) { case PLACE_AND_ROUTE: printf("PLACE_AND_ROUTE\n"); break; case PLACE_ONLY: printf("PLACE_ONLY\n"); break; case ROUTE_ONLY: printf("ROUTE_ONLY\n"); break; case TIMING_ANALYSIS_ONLY: printf("TIMING_ANALYSIS_ONLY\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("\n");}static voidShowPlacerOpts(IN t_options Options, IN struct s_placer_opts PlacerOpts, IN struct s_annealing_sched AnnealSched){ printf("PlacerOpts.place_freq: "); switch (PlacerOpts.place_freq) { case PLACE_ONCE: printf("PLACE_ONCE\n"); break; case PLACE_ALWAYS: printf("PLACE_ALWAYS\n"); break; case PLACE_NEVER: printf("PLACE_NEVER\n"); break; default: printf("<Unknown>\n"); exit(1); } if((PLACE_ONCE == PlacerOpts.place_freq) || (PLACE_ALWAYS == PlacerOpts.place_freq)) { printf("PlacerOpts.place_algorithm: "); switch (PlacerOpts.place_algorithm) { case BOUNDING_BOX_PLACE: printf("BOUNDING_BOX_PLACE\n"); break; case NET_TIMING_DRIVEN_PLACE: printf("NET_TIMING_DRIVEN_PLACE\n"); break; case PATH_TIMING_DRIVEN_PLACE: printf("PATH_TIMING_DRIVEN_PLACE\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("PlacerOpts.place_cost_type: "); switch (PlacerOpts.place_cost_type) { case LINEAR_CONG: printf("LINEAR_CONG\n"); break; case NONLINEAR_CONG: printf("NONLINEAR_CONG\n"); break; default: printf("<Unknown>\n"); exit(1); } printf("PlacerOpts.pad_loc_type: "); switch (PlacerOpts.pad_loc_type) { case FREE: printf("FREE\n"); break; case RANDOM: printf("RANDOM\n"); break; case USER: printf("USER '%s'\n", PlacerOpts.pad_loc_file); break; default: printf("<Unknown>\n"); exit(1); } printf("PlacerOpts.place_cost_exp: %f\n", PlacerOpts.place_cost_exp); if((LINEAR_CONG == PlacerOpts.place_cost_type) || (Options.Count[OT_PLACE_CHAN_WIDTH])) { printf("PlacerOpts.place_chan_width: %d\n", PlacerOpts.place_chan_width); } if(NONLINEAR_CONG == PlacerOpts.place_cost_type) { printf("PlacerOpts.num_regions: %d\n", PlacerOpts.num_regions); } if((NET_TIMING_DRIVEN_PLACE == PlacerOpts.place_algorithm) || (PATH_TIMING_DRIVEN_PLACE == PlacerOpts.place_algorithm)) { printf("PlacerOpts.inner_loop_recompute_divider: %d\n", PlacerOpts.inner_loop_recompute_divider); printf("PlacerOpts.recompute_crit_iter: %d\n", PlacerOpts.recompute_crit_iter); printf("PlacerOpts.timing_tradeoff: %f\n", PlacerOpts.timing_tradeoff); printf("PlacerOpts.td_place_exp_first: %f\n", PlacerOpts.td_place_exp_first); printf("PlacerOpts.td_place_exp_last: %f\n", PlacerOpts.td_place_exp_last); } printf("PlaceOpts.seed: %d\n", PlacerOpts.seed); ShowAnnealSched(AnnealSched); } printf("\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -