56 #ifndef ALLOCATION_HPP 57 #define ALLOCATION_HPP 112 std::map<technology_nodeRef, std::map<unsigned long long, std::map<HLS_manager::io_binding_type, unsigned int>>>
131 std::string get_compliant_pipelined_unit(
double clock,
const std::string& pipe_parameter,
133 const std::string& library_name,
const std::string& template_suffix,
134 unsigned long long module_prec);
137 const std::string& bambu_provided_resource_);
144 void set_number_channels(
unsigned int fu_name,
unsigned int n_ports);
146 double get_execution_time_dsp_modified(
const unsigned int fu_name,
const technology_nodeRef& node_op)
const;
148 double get_stage_period_dsp_modified(
const unsigned int fu_name,
const technology_nodeRef& node_op)
const;
154 const std::string& orig_fun_name);
159 void add_proxy_function_wrapper(
const std::string& library_name,
technology_nodeRef techNode_obj,
160 const std::string& orig_fun_name);
165 void BuildProxyWrapper(
functional_unit* current_fu,
const std::string& orig_fun_name,
166 const std::string& orig_library_name);
183 void add_tech_constraint(
technology_nodeRef cur_fu,
unsigned int tech_constrain_value,
unsigned int pos,
184 bool proxy_constrained);
188 const std::vector<std::string>& libraries,
bool isMemory,
189 std::string bambu_provided_resource,
operation* curr_op, std::string specialized_fuName,
191 bool varargs_fu,
unsigned int l, std::string memory_ctrl_type,
192 std::map<std::string, technology_nodeRef> new_fu,
unsigned int tech_constrain_value);
193 bool check_templated_units(
double clock_period, node_kind_prec_infoRef node_info,
const library_managerRef library,
195 bool check_for_memory_compliancy(
bool Has_extern_allocated_data,
technology_nodeRef current_fu,
196 const std::string& memory_ctrl_type,
const std::string& channels_type);
197 bool check_type_and_precision(
operation* curr_op, node_kind_prec_infoRef node_info);
199 bool check_generated_bambu_flopoco(
bool skip_softfloat_resources,
structural_managerRef structManager_obj,
200 std::string& bambu_provided_resource,
bool skip_flopoco_resources,
203 std::string get_synch_ram_latency(
const std::string& ram_template,
const std::string& latency_postfix,
209 virtual void IntegrateTechnologyLibraries();
231 const DesignFlowManagerConstRef design_flow_manager,
249 void Initialize()
override;
254 void PrintInitialIR()
const override;
Data structure representing the entire HLS information.
This structure collect the information of input and output precision of nodes and the node kind...
RelationshipType
The relationship type.
This class manages the circuit structures.
CONSTREF_FORWARD_DECL(OpGraph)
This class specifies the characteristic of a particular functional unit.
std::tuple< unsigned int, unsigned int > io_binding_type
tuple set used to represent the required values or the constant default value associated with the inp...
std::map< std::string, std::string > precomputed_pipeline_unit
store the precomputed pipeline unit: given a functional unit it return the pipeline id compliant ...
REF_FORWARD_DECL(AllocationInformation)
Base class for step of design flow.
This class specifies the characteristic of a particular operation working on a given functional unit...
std::map< technology_nodeRef, std::map< unsigned long long, std::map< HLS_manager::io_binding_type, unsigned int > > > fu_list
This class manages the technology library structures.
Data structure used to store all the HLS constraints.
General class used to describe a graph in PandA.
AllocationInformationRef allocation_information
The allocation solution.
DesignFlowStep_Status
The status of a step.
This wrapper collects all the methods used by the High-level synthesis classes to retrieve informatio...
Template definition of refcount.
This class manages the specific library structure.
technology_managerRef TechM
The technology manager.
constraint functor used by get_attribute_of_fu_per_op
Class used to describe a particular graph with operations as nodes.
HLS_deviceRef HLS_D
The HLS target.
Abstract pure class for the technology structure.