VPR is a CAD tool used to conduct FPGA architecture exploration. It takes, as input, a technology-mapped netlist and a description of the FPGA architecture being investigated. VPR then generates a packed, placed, and routed FPGA (in .net, .place, and .route files respectively) that implements the input netlist
Software tools interfacing to VPR should generally call just the functions defined here For advanced/power users, you can call functions defined elsewhere in VPR or modify the data structures directly at your discretion but be aware that doing so can break the correctness of this tool
163 char* pszLogFileName =
"vpr_stdout.log";
164 unsigned char enableTimeStamps = 1;
165 unsigned long maxWarningCount = 100000;
166 unsigned long maxErrorCount = 1000;
168 if (PrintHandlerExists() == 1) {
174 PrintHandlerNew(pszLogFileName);
175 PrintHandlerInit(enableTimeStamps, maxWarningCount, maxErrorCount);
189 memset(arch, 0,
sizeof(
t_arch));
198 vpr_setup->constant_net_delay = options->constant_net_delay;
201 SetupVPR(options, vpr_setup->TimingEnabled,
TRUE, &vpr_setup->FileNameOpts,
202 arch, &vpr_setup->Operation, &vpr_setup->user_models,
203 &vpr_setup->library_models, &vpr_setup->PackerOpts,
204 &vpr_setup->PlacerOpts, &vpr_setup->AnnealSched,
205 &vpr_setup->RouterOpts, &vpr_setup->RoutingArch,
206 &vpr_setup->Segments, &vpr_setup->Timing, &vpr_setup->ShowGraphics,
207 &vpr_setup->GraphPause, &vpr_setup->PowerOpts);
211 CheckArch(*arch, vpr_setup->TimingEnabled);
214 CheckSetup(vpr_setup->Operation, vpr_setup->PlacerOpts,
215 vpr_setup->AnnealSched, vpr_setup->RouterOpts,
216 vpr_setup->RoutingArch, vpr_setup->Segments, vpr_setup->Timing,
224 vpr_setup->PackerOpts.sweep_hanging_nets_and_inputs,
225 vpr_setup->user_models, vpr_setup->library_models,
226 vpr_setup->PowerOpts.do_power, vpr_setup->FileNameOpts.ActFile);
void setEchoEnabled(boolean echo_enabled)
boolean IsPostSynthesisEnabled(INP t_options *Options)
void vpr_print_usage(void)
boolean IsTimingEnabled(INP t_options *Options)
boolean IsEchoEnabled(INP t_options *Options)
void CheckOptions(INP t_options Options, INP boolean TimingEnabled)
void ReadOptions(INP int argc, INP char **argv, OUTP t_options *Options)
void SetupVPR(INP t_options *Options, INP boolean TimingEnabled, INP boolean readArchFile, OUTP struct s_file_name_opts *FileNameOpts, INOUTP t_arch *Arch, OUTP enum e_operation *Operation, OUTP t_model **user_models, OUTP t_model **library_models, OUTP struct s_packer_opts *PackerOpts, OUTP struct s_placer_opts *PlacerOpts, OUTP struct s_annealing_sched *AnnealSched, OUTP struct s_router_opts *RouterOpts, OUTP struct s_det_routing_arch *RoutingArch, OUTP t_segment_inf **Segments, OUTP t_timing_inf *Timing, OUTP boolean *ShowGraphics, OUTP int *GraphPause, t_power_opts *PowerOpts)
void CheckArch(INP t_arch Arch, INP boolean TimingEnabled)
void read_and_process_blif(char *blif_file, boolean sweep_hanging_nets_and_inputs, t_model *user_models, t_model *library_models, boolean read_activity_file, char *activity_file)
static boolean has_printhandler_pre_vpr
void vpr_print_title(void)
void ShowSetup(INP t_options options, INP t_vpr_setup vpr_setup)
void CheckSetup(INP enum e_operation Operation, INP struct s_placer_opts PlacerOpts, INP struct s_annealing_sched AnnealSched, INP struct s_router_opts RouterOpts, INP struct s_det_routing_arch RoutingArch, INP t_segment_inf *Segments, INP t_timing_inf Timing, INP t_chan_width_dist Chans)
void SetPostSynthesisOption(boolean post_synthesis_enabled)