Verilog to Routing - VPR
vpr_api.h
Go to the documentation of this file.
1 
27 #ifndef VPR_API_H
28 #define VPR_API_H
29 
30 #include <vector>
31 #include "physical_types.h"
32 #include "vpr_types.h"
33 #include "read_options.h"
34 #include "globals.h"
35 #include "read_xml_arch_file.h"
36 #include "vpr_utils.h"
37 #include "place_macro.h"
38 #include "timing_info_fwd.h"
39 #include "echo_files.h"
40 #include "RoutingDelayCalculator.h"
41 
42 #include "vpr_error.h"
43 
44 /*
45  * Main VPR Operations
46  */
47 void vpr_init(const int argc, const char** argv, t_options* options, t_vpr_setup* vpr_setup, t_arch* arch);
49 void vpr_init_with_options(const t_options* options, t_vpr_setup* vpr_setup, t_arch* arch);
50 
51 bool vpr_flow(t_vpr_setup& vpr_setup, t_arch& arch); //Run the VPR CAD flow
52 
53 /*
54  * Stage operations
55  */
56 
58 bool vpr_pack_flow(t_vpr_setup& vpr_setup, const t_arch& arch);
60 bool vpr_pack(t_vpr_setup& vpr_setup, const t_arch& arch);
62 void vpr_load_packing(t_vpr_setup& vpr_setup, const t_arch& arch);
63 
65 bool vpr_place_flow(t_vpr_setup& vpr_setup, const t_arch& arch);
67 void vpr_place(t_vpr_setup& vpr_setup, const t_arch& arch);
69 void vpr_load_placement(t_vpr_setup& vpr_setup, const t_arch& arch);
70 
72 RouteStatus vpr_route_flow(t_vpr_setup& vpr_setup, const t_arch& arch);
75  const t_arch& arch,
76  int fixed_channel_width,
77  std::shared_ptr<SetupHoldTimingInfo> timing_info,
78  std::shared_ptr<RoutingDelayCalculator> delay_calc,
79  ClbNetPinsMatrix<float>& net_delay);
82  const t_arch& arch,
83  std::shared_ptr<SetupHoldTimingInfo> timing_info,
84  std::shared_ptr<RoutingDelayCalculator> delay_calc,
85  ClbNetPinsMatrix<float>& net_delay);
88  const t_arch& arch,
89  int fixed_channel_width,
90  std::shared_ptr<SetupHoldTimingInfo> timing_info,
91  ClbNetPinsMatrix<float>& net_delay);
92 
94 bool vpr_analysis_flow(t_vpr_setup& vpr_setup, const t_arch& Arch, const RouteStatus& route_status);
96 void vpr_analysis(t_vpr_setup& vpr_setup, const t_arch& Arch, const RouteStatus& route_status);
97 
99 void vpr_create_device(t_vpr_setup& vpr_setup, const t_arch& Arch);
101 void vpr_create_device_grid(const t_vpr_setup& vpr_setup, const t_arch& Arch);
103 void vpr_create_rr_graph(t_vpr_setup& vpr_setup, const t_arch& arch, int chan_width);
104 
105 void vpr_init_graphics(const t_vpr_setup& vpr_setup, const t_arch& arch);
106 void vpr_close_graphics(const t_vpr_setup& vpr_setup);
107 
108 void vpr_setup_clock_networks(t_vpr_setup& vpr_setup, const t_arch& Arch);
109 void vpr_free_vpr_data_structures(t_arch& Arch, t_vpr_setup& vpr_setup);
110 void vpr_free_all(t_arch& Arch, t_vpr_setup& vpr_setup);
111 
112 /* Display general info to user */
113 void vpr_print_title();
114 void vpr_print_args(int argc, const char** argv);
115 
116 /****************************************************************************************************
117  * Advanced functions
118  * Used when you need fine-grained control over VPR that the main VPR operations do not enable
119  ****************************************************************************************************/
120 
122 void vpr_read_options(const int argc, const char** argv, t_options* options);
124 void vpr_setup_vpr(t_options* Options,
125  const bool TimingEnabled,
126  const bool readArchFile,
127  t_file_name_opts* FileNameOpts,
128  t_arch* Arch,
129  t_model** user_models,
130  t_model** library_models,
131  t_netlist_opts* NetlistOpts,
132  t_packer_opts* PackerOpts,
133  t_placer_opts* PlacerOpts,
134  t_annealing_sched* AnnealSched,
135  t_router_opts* RouterOpts,
136  t_analysis_opts* AnalysisOpts,
137  t_det_routing_arch* RoutingArch,
138  std::vector<t_lb_type_rr_node>** PackerRRGraph,
139  std::vector<t_segment_inf>& Segments,
140  t_timing_inf* Timing,
141  bool* ShowGraphics,
142  int* GraphPause,
143  bool* SaveGraphics,
144  std::string* GraphicsCommands,
145  t_power_opts* PowerOpts);
146 
148 void vpr_check_arch(const t_arch& Arch);
150 void vpr_check_setup(const t_packer_opts& PackerOpts,
151  const t_placer_opts& PlacerOpts,
152  const t_router_opts& RouterOpts,
153  const t_det_routing_arch& RoutingArch,
154  const std::vector<t_segment_inf>& Segments,
155  const t_timing_inf& Timing,
156  const t_chan_width_dist& Chans);
158 void vpr_show_setup(const t_vpr_setup& vpr_setup);
159 void vpr_power_estimation(const t_vpr_setup& vpr_setup,
160  const t_arch& Arch,
161  const SetupTimingInfo& timing_info,
162  const RouteStatus& route_status);
163 
165 void vpr_alloc_and_load_output_file_names(const char* default_name);
166 void vpr_set_output_file_name(enum e_output_files ename, const char* name, const char* default_name);
167 char* vpr_get_output_file_name(enum e_output_files ename);
168 
170 void vpr_print_error(const VprError& vpr_error);
171 
172 #endif
bool vpr_flow(t_vpr_setup &vpr_setup, t_arch &arch)
Definition: vpr_api.cpp:350
void vpr_show_setup(const t_vpr_setup &vpr_setup)
Show current setup.
Definition: vpr_api.cpp:1157
Definition: vpr_types.h:1487
void vpr_create_rr_graph(t_vpr_setup &vpr_setup, const t_arch &arch, int chan_width)
Create routing graph at specified channel width.
Definition: vpr_api.cpp:852
char * vpr_get_output_file_name(enum e_output_files ename)
Power estimation options.
Definition: vpr_types.h:1435
void vpr_read_options(const int argc, const char **argv, t_options *options)
Read in user options.
Definition: vpr_api.cpp:1089
void vpr_create_device(t_vpr_setup &vpr_setup, const t_arch &Arch)
Create the device (grid + rr graph)
Definition: vpr_api.cpp:387
void vpr_init_with_options(const t_options *options, t_vpr_setup *vpr_setup, t_arch *arch)
Initialize VPR with options.
Definition: vpr_api.cpp:185
Definition: read_options.h:10
RouteStatus vpr_route_flow(t_vpr_setup &vpr_setup, const t_arch &arch)
Perform, load or skip the routing stage.
Definition: vpr_api.cpp:671
void vpr_analysis(t_vpr_setup &vpr_setup, const t_arch &Arch, const RouteStatus &route_status)
Perform post-implementation analysis.
Definition: vpr_api.cpp:1184
Defines the detailed routing architecture of the FPGA.
Definition: vpr_types.h:1129
bool vpr_place_flow(t_vpr_setup &vpr_setup, const t_arch &arch)
Perform, load or skip the placement stage.
Definition: vpr_api.cpp:602
This is a core file that defines the major data types used by VPR.
bool vpr_pack(t_vpr_setup &vpr_setup, const t_arch &arch)
Perform packing.
Definition: vpr_api.cpp:525
RouteStatus vpr_load_routing(t_vpr_setup &vpr_setup, const t_arch &arch, int fixed_channel_width, std::shared_ptr< SetupHoldTimingInfo > timing_info, ClbNetPinsMatrix< float > &net_delay)
Loads a previous routing.
Definition: vpr_api.cpp:826
Annealing schedule information for the placer.
Definition: vpr_types.h:803
Definition: vpr_types.h:766
void vpr_print_error(const VprError &vpr_error)
Prints user file or internal errors for VPR.
Definition: vpr_api.cpp:1311
void vpr_print_args(int argc, const char **argv)
Definition: vpr_api.cpp:124
void vpr_create_device_grid(const t_vpr_setup &vpr_setup, const t_arch &Arch)
Create the device grid.
Definition: vpr_api.cpp:403
void vpr_setup_clock_networks(t_vpr_setup &vpr_setup, const t_arch &Arch)
Definition: vpr_api.cpp:481
Options for netlist loading.
Definition: vpr_types.h:737
Definition: vpr_types.h:470
e_output_files
Definition: echo_files.h:60
void vpr_init_graphics(const t_vpr_setup &vpr_setup, const t_arch &arch)
Definition: vpr_api.cpp:891
void vpr_alloc_and_load_output_file_names(const char *default_name)
Output file names management.
Store settings for VPR.
Definition: vpr_types.h:1459
void vpr_place(t_vpr_setup &vpr_setup, const t_arch &arch)
Perform placement.
Definition: vpr_api.cpp:626
RouteStatus vpr_route_fixed_W(t_vpr_setup &vpr_setup, const t_arch &arch, int fixed_channel_width, std::shared_ptr< SetupHoldTimingInfo > timing_info, std::shared_ptr< RoutingDelayCalculator > delay_calc, ClbNetPinsMatrix< float > &net_delay)
Perform routing at a fixed channel width)
Definition: vpr_api.cpp:760
void vpr_close_graphics(const t_vpr_setup &vpr_setup)
Definition: vpr_api.cpp:900
void vpr_power_estimation(const t_vpr_setup &vpr_setup, const t_arch &Arch, const SetupTimingInfo &timing_info, const RouteStatus &route_status)
Pperforms power estimation.
Definition: vpr_api.cpp:1248
void vpr_check_setup(const t_packer_opts &PackerOpts, const t_placer_opts &PlacerOpts, const t_router_opts &RouterOpts, const t_det_routing_arch &RoutingArch, const std::vector< t_segment_inf > &Segments, const t_timing_inf &Timing, const t_chan_width_dist &Chans)
Verify settings don&#39;t conflict or otherwise not make sense.
Definition: vpr_api.cpp:1145
Definition: vpr_types.h:1082
void vpr_check_arch(const t_arch &Arch)
Check inputs are reasonable.
Definition: vpr_api.cpp:1140
void vpr_load_packing(t_vpr_setup &vpr_setup, const t_arch &arch)
Loads a previous packing.
Definition: vpr_api.cpp:581
bool vpr_pack_flow(t_vpr_setup &vpr_setup, const t_arch &arch)
Perform, load or skip the packing stage.
Definition: vpr_api.cpp:487
Definition: vpr_types.h:867
void vpr_load_placement(t_vpr_setup &vpr_setup, const t_arch &arch)
Definition: vpr_api.cpp:657
void vpr_setup_vpr(t_options *Options, const bool TimingEnabled, const bool readArchFile, t_file_name_opts *FileNameOpts, t_arch *Arch, t_model **user_models, t_model **library_models, t_netlist_opts *NetlistOpts, t_packer_opts *PackerOpts, t_placer_opts *PlacerOpts, t_annealing_sched *AnnealSched, t_router_opts *RouterOpts, t_analysis_opts *AnalysisOpts, t_det_routing_arch *RoutingArch, std::vector< t_lb_type_rr_node > **PackerRRGraph, std::vector< t_segment_inf > &Segments, t_timing_inf *Timing, bool *ShowGraphics, int *GraphPause, bool *SaveGraphics, std::string *GraphicsCommands, t_power_opts *PowerOpts)
Read in arch and circuit.
Definition: vpr_api.cpp:1094
void vpr_free_vpr_data_structures(t_arch &Arch, t_vpr_setup &vpr_setup)
Definition: vpr_api.cpp:1061
Names of various files.
Definition: vpr_types.h:722
bool vpr_analysis_flow(t_vpr_setup &vpr_setup, const t_arch &Arch, const RouteStatus &route_status)
Perform or skips the analysis stage.
Definition: vpr_api.cpp:1161
void vpr_print_title()
Display general VPR information.
Definition: vpr_api.cpp:109
void vpr_set_output_file_name(enum e_output_files ename, const char *name, const char *default_name)
void vpr_initialize_logging()
Definition: vpr_api.cpp:135
void vpr_free_all(t_arch &Arch, t_vpr_setup &vpr_setup)
Definition: vpr_api.cpp:1073
RouteStatus vpr_route_min_W(t_vpr_setup &vpr_setup, const t_arch &arch, std::shared_ptr< SetupHoldTimingInfo > timing_info, std::shared_ptr< RoutingDelayCalculator > delay_calc, ClbNetPinsMatrix< float > &net_delay)
Perform routing to find the minimum channel width.
Definition: vpr_api.cpp:797
void vpr_init(const int argc, const char **argv, t_options *options, t_vpr_setup *vpr_setup, t_arch *arch)
Initialize VPR.
Definition: vpr_api.cpp:161
Definition: vpr_types.h:1023