PandA-2024.02
|
Superclass include. More...
#include <parallel_memory_fu_binding.hpp>
Public Member Functions | |
ParallelMemoryFuBinding (const HLS_managerConstRef HLS_mgr, const unsigned int function_id, const ParameterConstRef parameters) | |
Constructor. More... | |
void | add_to_SM (const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef clock_port, structural_objectRef reset_port) override |
Instance the functional unit inside the structural representation of the datapath. More... | |
Public Member Functions inherited from fu_binding | |
fu_binding (const HLS_managerConstRef _HLSMgr, const unsigned int function_id, const ParameterConstRef parameters) | |
Constructor. More... | |
fu_binding (const fu_binding &original) | |
fu_binding & | operator= (const fu_binding &)=delete |
virtual | ~fu_binding () |
Destructor. More... | |
void | bind (const vertex &v, unsigned int unit, unsigned int index=std::numeric_limits< unsigned int >::max()) |
Binds an operation vertex to a functional unit. More... | |
unsigned int | get_assign (const vertex &v) const |
Returns the functional unit assigned to the vertex. More... | |
unsigned int | get_assign (const unsigned int statement_index) const |
Returns the functional unit assigned to the operation. More... | |
unsigned int | get_index (const vertex &v) const |
Returns the index of functional unit assigned to the vertex. More... | |
std::string | get_fu_name (vertex const &v) const |
Returns the name of the functional unit. More... | |
unsigned int | get_number (unsigned int unit) const |
Returns number of functional unit allocated. More... | |
const funit_obj & | operator[] (const vertex &v) |
Redefinition of the [] operator. More... | |
generic_objRef | get (const vertex v) const |
Returns reference to funit object associated with this vertex. More... | |
generic_objRef | get (unsigned int name, unsigned int index) |
std::list< unsigned int > | get_allocation_list () const |
Returns the set of allocated unit. More... | |
bool | is_assigned (const vertex &v) const |
return true in case the vertex has been previously assigned More... | |
bool | is_assigned (const unsigned int statement_index) const |
return true in case the operation has been previously assigned More... | |
virtual void | manage_extern_global_port (const HLS_managerRef HLSMgr, const hlsRef HLS, const structural_managerRef SM, structural_objectRef port_in, unsigned int dir, structural_objectRef circuit, unsigned int num) |
virtual void | manage_memory_ports_parallel_chained (const HLS_managerRef HLSMgr, const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit, const hlsRef HLS, unsigned int &unique_id) |
OpVertexSet | get_operations (unsigned int unit, unsigned int index) const |
Return the operations that are executed by the given functional unit. More... | |
void | specialise_fu (const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef fu_obj, unsigned int fu, const OpVertexSet &operations, unsigned int ar) |
Specialize the functional unit based on variables associated with the corresponding operations. More... | |
void | specialize_memory_unit (const HLS_managerRef HLSMgr, const hlsRef HLS, structural_objectRef fu_obj, unsigned int ar, const std::string &base_address, unsigned long long rangesize, bool is_memory_splitted, bool is_sparse_memory, bool is_sds) |
Specialize a memory unit. More... | |
void | set_ports_are_swapped (vertex v, bool condition) |
specify if vertex v have or not its ports swapped More... | |
bool | get_ports_are_swapped (vertex v) const |
Check if vertex v has its ports swapped or not. More... | |
bool | has_resource_sharing () const |
return true in case at least one resource is shared More... | |
Data Fields | |
CustomMap< structural_objectRef, structural_objectRef > | component_to_allow_mem_access |
For each component, the corresponding ALLOW_MEM_ACCESS_FU. More... | |
Protected Member Functions | |
bool | manage_module_ports (const HLS_managerRef HLSMgr, const hlsRef HLS, const structural_managerRef SM, const structural_objectRef curr_gate, unsigned int num) override |
Protected Member Functions inherited from fu_binding | |
void | update_allocation (unsigned int unit, unsigned int number) |
Update number of allocated units. More... | |
structural_objectRef | add_gate (const HLS_managerRef HLSMgr, const hlsRef HLS, const technology_nodeRef fu, const std::string &name, const OpVertexSet &ops, structural_objectRef clock_port, structural_objectRef reset_port) const |
Add an instance of the current port. More... | |
void | check_parametrization (structural_objectRef curr_gate) |
check the module parametrization More... | |
void | kill_proxy_memory_units (std::map< unsigned int, unsigned int > &memory_units, structural_objectRef curr_gate, std::map< unsigned int, std::list< structural_objectRef >> &var_call_sites_rel, std::map< unsigned int, unsigned int > &reverse_memory_units) |
fix port properties for proxy memory ports More... | |
void | kill_proxy_function_units (std::map< unsigned int, std::string > &wrapped_units, structural_objectRef curr_gate, std::map< std::string, std::list< structural_objectRef >> &fun_call_sites_rel, std::map< std::string, unsigned int > &reverse_wrapped_units) |
void | manage_killing_memory_proxies (std::map< unsigned int, structural_objectRef > &mem_obj, std::map< unsigned int, unsigned int > &reverse_memory_units, std::map< unsigned int, std::list< structural_objectRef >> &var_call_sites_rel, const structural_managerRef SM, const hlsRef HLS, unsigned int &_unique_id) |
connect proxies with storage components More... | |
void | manage_killing_function_proxies (std::map< unsigned int, structural_objectRef > &fun_obj, std::map< std::string, unsigned int > &reverse_function_units, std::map< std::string, std::list< structural_objectRef >> &fun_call_sites_rel, const structural_managerRef SM, const hlsRef HLS, unsigned int &_unique_id) |
Protected Attributes | |
CustomSet< structural_objectRef > | access_allowed_killeds |
Internal objects for which access_allowed was killed. More... | |
Protected Attributes inherited from fu_binding | |
std::map< unsigned int, unsigned int > | allocation_map |
map between functional unit id and number of units allocated More... | |
std::map< std::pair< unsigned int, unsigned int >, generic_objRef > | unique_table |
map between unit and allocated objects More... | |
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 More... | |
std::map< unsigned int, generic_objRef > | op_binding |
operation binding More... | |
AllocationInformationRef | allocation_information |
allocation manager. Used to retrieve the string name of the functional units. More... | |
const tree_managerConstRef | TreeM |
information about the tree data-structure More... | |
const OpGraphConstRef | op_graph |
The operation graph. More... | |
CustomOrderedSet< vertex > | ports_are_swapped |
port assignment: ports are swapped predicate More... | |
const ParameterConstRef | parameters |
The set of input parameters. More... | |
int | debug_level |
The debug level. More... | |
bool | has_resource_sharing_p |
useful to know for automatic pipelining More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from fu_binding | |
static fu_bindingRef | create_fu_binding (const HLS_managerConstRef _HLSMgr, const unsigned int _function_id, const ParameterConstRef _parameters) |
create_fu_binding: factory method for fu_binding More... | |
static void | manage_memory_ports_chained (const structural_managerRef SM, const std::list< structural_objectRef > &memory_modules, const structural_objectRef circuit) |
Manage the connections between memory ports. More... | |
static void | join_merge_split (const structural_managerRef SM, const hlsRef HLS, std::map< structural_objectRef, std::list< structural_objectRef >, jms_sorter > &primary_outs, const structural_objectRef circuit, unsigned int &unique_id) |
static void | fill_array_ref_memory (std::ostream &init_file_a, std::ostream &init_file_b, unsigned int ar, unsigned long long &vec_size, unsigned long long &elts_size, const memoryRef mem, tree_managerConstRef TM, bool is_sds, unsigned long long bitsize_align) |
fill the memory of the array ref More... | |
static void | write_init (const tree_managerConstRef TreeM, tree_nodeRef var_node, tree_nodeRef init_node, std::vector< std::string > &init_file, const memoryRef mem, unsigned long long element_precision) |
Static Public Attributes inherited from fu_binding | |
static const unsigned int | UNKNOWN = std::numeric_limits<unsigned int>::max() |
The value used to identified unknown functional unit. More... | |
ParallelMemoryFuBinding::ParallelMemoryFuBinding | ( | const HLS_managerConstRef | _HLS_mgr, |
const unsigned int | _function_id, | ||
const ParameterConstRef | _parameters | ||
) |
Constructor.
Header class.
HLS_mgr | is the HLS manager |
function_id | is the index of the function |
parameters | is the set of input parameters |
. include circuit include HLS includes HLS/functions include HLS/module_allocation include HLS/virtual_components STD include STL include technology includes tree includes utility include
Definition at line 81 of file parallel_memory_fu_binding.cpp.
References fu_binding::debug_level, GET_CLASS, and fu_binding::parameters.
|
overridevirtual |
Instance the functional unit inside the structural representation of the datapath.
Collecting memory enabled signals which have to be put in and
Considering atomic operations
Check if there is at least a memory enabled to be connected
Collecting ports of internal objects
Reimplemented from fu_binding.
Definition at line 88 of file parallel_memory_fu_binding.cpp.
References fu_binding::add_to_SM(), fu_binding::allocation_information, CHANNELS_TYPE_MEM_ACC_P1N, CLOCK_PORT_NAME, component_to_allow_mem_access, hls::datapath, fu_binding::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, hls::functionId, fu_binding::get_allocation_list(), AllocationInformation::get_fu(), GET_TYPE, structural_object::get_typeRef(), hls::HLS_D, INDENT_DBG_MEX, LIBRARY_PC, fu_binding::manage_extern_global_port(), fu_binding::op_graph, fu_binding::parameters, port_o_K, reset(), RESET_PORT_NAME, hls::Rfu, STR, THROW_ASSERT, THROW_UNREACHABLE, and TYPE_ATOMIC.
|
overrideprotectedvirtual |
Reimplemented from fu_binding.
Definition at line 388 of file parallel_memory_fu_binding.cpp.
References access_allowed_killeds, structural_object::find_member(), hls::functionId, GET_CONST_NODE, structural_object::get_typeRef(), structural_type_descriptor::id_type, fu_binding::manage_module_ports(), and port_o_K.
|
protected |
Internal objects for which access_allowed was killed.
Definition at line 54 of file parallel_memory_fu_binding.hpp.
Referenced by manage_module_ports().
CustomMap<structural_objectRef, structural_objectRef> ParallelMemoryFuBinding::component_to_allow_mem_access |
For each component, the corresponding ALLOW_MEM_ACCESS_FU.
Definition at line 63 of file parallel_memory_fu_binding.hpp.
Referenced by add_to_SM().