PandA-2024.02
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
ParallelMemoryFuBinding Class Reference

Superclass include. More...

#include <parallel_memory_fu_binding.hpp>

Inheritance diagram for ParallelMemoryFuBinding:
Inheritance graph
[legend]
Collaboration diagram for ParallelMemoryFuBinding:
Collaboration graph
[legend]

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_bindingoperator= (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_objoperator[] (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_objectRefcomponent_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_objectRefaccess_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_objRefunique_table
 map between unit and allocated objects More...
 
std::map< std::pair< unsigned int, unsigned int >, OpVertexSetoperations
 reverse map that associated each functional unit with the set of operations that are executed More...
 
std::map< unsigned int, generic_objRefop_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< vertexports_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...
 

Detailed Description

Superclass include.

utility include

Definition at line 50 of file parallel_memory_fu_binding.hpp.

Constructor & Destructor Documentation

◆ ParallelMemoryFuBinding()

ParallelMemoryFuBinding::ParallelMemoryFuBinding ( const HLS_managerConstRef  _HLS_mgr,
const unsigned int  _function_id,
const ParameterConstRef  _parameters 
)

Constructor.

Header class.

Parameters
HLS_mgris the HLS manager
function_idis the index of the function
parametersis 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.

Member Function Documentation

◆ add_to_SM()

void ParallelMemoryFuBinding::add_to_SM ( const HLS_managerRef  HLSMgr,
const hlsRef  HLS,
structural_objectRef  clock_port,
structural_objectRef  reset_port 
)
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.

Here is the call graph for this function:

◆ manage_module_ports()

bool ParallelMemoryFuBinding::manage_module_ports ( const HLS_managerRef  HLSMgr,
const hlsRef  HLS,
const structural_managerRef  SM,
const structural_objectRef  curr_gate,
unsigned int  num 
)
overrideprotectedvirtual

Field Documentation

◆ access_allowed_killeds

CustomSet<structural_objectRef> ParallelMemoryFuBinding::access_allowed_killeds
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().

◆ component_to_allow_mem_access

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().


The documentation for this class was generated from the following files:

Generated on Mon Feb 12 2024 13:04:00 for PandA-2024.02 by doxygen 1.8.13