45 #ifndef FU_BINDING_HPP 46 #define FU_BINDING_HPP 131 void update_allocation(
unsigned int unit,
unsigned int number);
151 void kill_proxy_memory_units(std::map<unsigned int, unsigned int>& memory_units,
structural_objectRef curr_gate,
152 std::map<
unsigned int, std::list<structural_objectRef>>& var_call_sites_rel,
153 std::map<unsigned int, unsigned int>& reverse_memory_units);
155 void kill_proxy_function_units(std::map<unsigned int, std::string>& wrapped_units,
structural_objectRef curr_gate,
156 std::map<std::string, std::list<structural_objectRef>>& fun_call_sites_rel,
157 std::map<std::string, unsigned int>& reverse_wrapped_units);
166 void manage_killing_memory_proxies(std::map<unsigned int, structural_objectRef>& mem_obj,
167 std::map<unsigned int, unsigned int>& reverse_memory_units,
168 std::map<
unsigned int, std::list<structural_objectRef>>& var_call_sites_rel,
171 void manage_killing_function_proxies(std::map<unsigned int, structural_objectRef>& fun_obj,
172 std::map<std::string, unsigned int>& reverse_function_units,
173 std::map<std::string, std::list<structural_objectRef>>& fun_call_sites_rel,
221 unsigned int get_assign(
const vertex& v)
const;
228 unsigned int get_assign(
const unsigned int statement_index)
const;
235 unsigned int get_index(
const vertex& v)
const;
242 std::string get_fu_name(
vertex const& v)
const;
251 auto it = allocation_map.find(unit);
252 if(it != allocation_map.end())
281 return (unique_table.count(std::make_pair(name,
index))) ? unique_table[std::make_pair(name,
index)] :
289 std::list<unsigned int> get_allocation_list()
const;
296 bool is_assigned(
const vertex& v)
const;
303 bool is_assigned(
const unsigned int statement_index)
const;
319 const std::list<structural_objectRef>& memory_modules,
322 const std::list<structural_objectRef>& memory_modules,
324 unsigned int& unique_id);
341 unsigned int ar,
const std::string& base_address,
unsigned long long rangesize,
342 bool is_memory_splitted,
bool is_sparse_memory,
bool is_sds);
352 void set_ports_are_swapped(
vertex v,
bool condition);
361 return ports_are_swapped.find(v) != ports_are_swapped.end();
367 return has_resource_sharing_p;
390 static void fill_array_ref_memory(std::ostream& init_file_a, std::ostream& init_file_b,
unsigned int ar,
391 unsigned long long& vec_size,
unsigned long long& elts_size,
const memoryRef mem,
395 std::vector<std::string>& init_file,
const memoryRef mem,
396 unsigned long long element_precision);
int debug_level
The debug level.
std::map< unsigned int, unsigned int > allocation_map
map between functional unit id and number of units allocated
REF_FORWARD_DECL(AllocationInformation)
bool get_ports_are_swapped(vertex v) const
Check if vertex v has its ports swapped or not.
This class manages the tree structures extracted from the raw file.
bool has_resource_sharing() const
return true in case at least one resource is shared
This class manages the circuit structures.
const tree_managerConstRef TreeM
information about the tree data-structure
bool operator()(const structural_objectRef &a, const structural_objectRef &b) const
std::map< std::pair< unsigned int, unsigned int >, generic_objRef > unique_table
map between unit and allocated objects
A set of operation vertices.
Abstract pure class for the tree structure.
const OpGraphConstRef op_graph
The operation graph.
std::map< std::pair< unsigned int, unsigned int >, OpVertexSet > operations
reverse map that associated each functional unit with the set of operations that are executed ...
unsigned map[NUM_VERTICES]
unsigned int get_number(unsigned int unit) const
Returns number of functional unit allocated.
redefinition of set to manage ordered/unordered structures
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
Generic class managing all resources into datapath.
static const unsigned int UNKNOWN
The value used to identified unknown functional unit.
Class representing functional units in the datapath.
CONSTREF_FORWARD_DECL(AllocationInformation)
Template definition of refcount.
AllocationInformationRef allocation_information
allocation manager. Used to retrieve the string name of the functional units.
bool has_resource_sharing_p
useful to know for automatic pipelining
std::map< unsigned int, generic_objRef > op_binding
operation binding
int original[DIMENSION_Y][DIMENSION_X]
Data structures used in operations graph.
Data structure that contains all information about high level synthesis process.
Class managing the functional-unit binding.
const ParameterConstRef parameters
The set of input parameters.
Class used to describe a particular graph with operations as nodes.
CustomOrderedSet< vertex > ports_are_swapped
port assignment: ports are swapped predicate
This class describes a generic module.
Abstract pure class for the technology structure.
Base object for all the structural objects.
refcount< generic_obj > generic_objRef
RefCount definition for generic_obj class.