PandA-2024.02
Public Member Functions | Protected Member Functions | Protected Attributes
memory_allocation Class Referenceabstract

Allocation memory class. More...

#include <memory_allocation.hpp>

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

Public Member Functions

 memory_allocation (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef())
 Constructor. More...
 
 ~memory_allocation () override
 Destructor. More...
 
void allocate_parameters (unsigned int functionId, memoryRef Rmem=nullptr)
 Allocate parameters for given function. More...
 
bool HasToBeExecuted () const override
 Check if this step has actually to be executed. More...
 
DesignFlowStep_Status Exec () override
 Execute the step. More...
 
- Public Member Functions inherited from HLS_step
 HLS_step (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef())
 Constructor. More...
 
 ~HLS_step () override
 Destructor. More...
 
std::string GetSignature () const override
 Return a unified identifier of this design step. More...
 
std::string GetName () const override
 Return the name of this design step. More...
 
virtual std::string GetKindText () const
 Return the name of the type of this frontend flow step. More...
 
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory () const final
 Return the factory to create this type of steps. More...
 
void ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
- Public Member Functions inherited from DesignFlowStep
 DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
virtual ~DesignFlowStep ()
 Destructor. More...
 
virtual void Initialize ()
 Initialize the step (i.e., like a constructor, but executed just before exec. More...
 
DesignFlowStep_Status GetStatus () const
 Return the status of this design step. More...
 
virtual void WriteDot (std::ostream &out) const
 Write the label for a dot graph. More...
 
bool IsComposed () const
 Returns if this step is composed. More...
 
int CGetDebugLevel () const
 Return the debug level of the step. More...
 
virtual void PrintInitialIR () const
 Dump the initial intermediate representation. More...
 
virtual void PrintFinalIR () const
 Dump the final intermediate representation. More...
 

Protected Member Functions

void setup_memory_allocation ()
 Prepares the data structures for the memory allocation. More...
 
void finalize_memory_allocation ()
 Performs a final analysis of the memory allocation to finalize the data-structure. More...
 
const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const override
 Compute the relationship of this step. More...
 
virtual DesignFlowStep_Status InternalExec ()=0
 Execute the step. More...
 

Protected Attributes

CustomOrderedSet< unsigned int > func_list
 list of functions to be analyzed More...
 
unsigned int memory_version
 The version of memory representation on which this step was applied. More...
 
std::map< unsigned int, unsigned int > last_bb_ver
 The version of BB IR representation on which this step was applied. More...
 
std::map< unsigned int, unsigned int > last_bitvalue_ver
 The version of bit value IR representation on which this step was applied. More...
 
- Protected Attributes inherited from HLS_step
const HLS_managerRef HLSMgr
 information about all the HLS synthesis More...
 
const HLSFlowStep_Type hls_flow_step_type
 The type of this step. More...
 
const HLSFlowStepSpecializationConstRef hls_flow_step_specialization
 The information about specialization. More...
 
- Protected Attributes inherited from DesignFlowStep
bool composed
 True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More...
 
const Wrefcount< const DesignFlowManagerdesign_flow_manager
 The design flow manager. More...
 
const ParameterConstRef parameters
 Set of input parameters. More...
 
int debug_level
 The debug level. More...
 
const int output_level
 The output level. More...
 

Additional Inherited Members

- Public Types inherited from DesignFlowStep
enum  RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP }
 The relationship type. More...
 
- Static Public Member Functions inherited from HLS_step
static std::string EnumToName (const HLSFlowStep_Type hls_flow_step_type)
 Given a HLS flow step type, return the name of the type. More...
 
static const std::string ComputeSignature (const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization)
 Compute the signature of a hls flow step. More...
 
- Static Protected Attributes inherited from HLS_step
static CustomUnorderedMap< std::string, HLSFlowStep_Typecommand_line_name_to_enum
 Map hls step name to enum. More...
 

Detailed Description

Allocation memory class.

Definition at line 120 of file memory_allocation.hpp.

Constructor & Destructor Documentation

◆ memory_allocation()

memory_allocation::memory_allocation ( const ParameterConstRef  _parameters,
const HLS_managerRef  HLSMgr,
const DesignFlowManagerConstRef  design_flow_manager,
const HLSFlowStep_Type  hls_flow_step_type,
const HLSFlowStepSpecializationConstRef  hls_flow_step_specialization = HLSFlowStepSpecializationConstRef() 
)

Constructor.

Parameters
design_flow_manageris the design flow manager
hls_flow_step_typeis the algorithm to be used

Definition at line 135 of file memory_allocation.cpp.

References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~memory_allocation().

Here is the call graph for this function:

◆ ~memory_allocation()

memory_allocation::~memory_allocation ( )
overridedefault

Destructor.

Referenced by memory_allocation().

Here is the caller graph for this function:

Member Function Documentation

◆ allocate_parameters()

void memory_allocation::allocate_parameters ( unsigned int  functionId,
memoryRef  Rmem = nullptr 
)

Allocate parameters for given function.

Parameters
functionIdId of the function to allocate paramters for
Rmemmemory object ref to use (Rmem from HLS manager used if nullptr)

Definition at line 636 of file memory_allocation.cpp.

References memory::add_parameter(), tree_helper::CGetType(), compute_n_bytes(), memory::get_parameter_base_address(), HLS_step::HLSMgr, INDENT_OUT_MEX, tree_helper::name_function(), DesignFlowStep::output_level, OUTPUT_LEVEL_NONE, OUTPUT_LEVEL_VERBOSE, tree_helper::Size(), and STR.

Referenced by mem_dominator_allocation::InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeHLSRelationships()

const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > memory_allocation::ComputeHLSRelationships ( const DesignFlowStep::RelationshipType  relationship_type) const
overrideprotectedvirtual

Compute the relationship of this step.

Parameters
relationship_typeis the type of relationship to be considered
Returns
the steps in relationship with this

Reimplemented from HLS_step.

Definition at line 155 of file memory_allocation.cpp.

References ALL_FUNCTIONS, DesignFlowStep::DEPENDENCE_RELATIONSHIP, INITIALIZE_HLS, DesignFlowStep::INVALIDATION_RELATIONSHIP, DesignFlowStep::parameters, DesignFlowStep::PRECEDENCE_RELATIONSHIP, THROW_UNREACHABLE, and WHOLE_APPLICATION.

◆ Exec()

DesignFlowStep_Status memory_allocation::Exec ( )
overridevirtual

Execute the step.

Returns
the exit status of this step

Implements DesignFlowStep.

Definition at line 708 of file memory_allocation.cpp.

References HLS_step::HLSMgr, InternalExec(), last_bb_ver, last_bitvalue_ver, and memory_version.

Referenced by mem_dominator_allocation_cs::Exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ finalize_memory_allocation()

void memory_allocation::finalize_memory_allocation ( )
protected

◆ HasToBeExecuted()

bool memory_allocation::HasToBeExecuted ( ) const
overridevirtual

Check if this step has actually to be executed.

Returns
true if the step has to be executed

Implements DesignFlowStep.

Definition at line 690 of file memory_allocation.cpp.

References HLS_step::HLSMgr, last_bb_ver, last_bitvalue_ver, and memory_version.

◆ InternalExec()

virtual DesignFlowStep_Status memory_allocation::InternalExec ( )
protectedpure virtual

Execute the step.

Returns
the exit status of this step

Implemented in mem_dominator_allocation.

Referenced by Exec().

Here is the caller graph for this function:

◆ setup_memory_allocation()

void memory_allocation::setup_memory_allocation ( )
protected

Prepares the data structures for the memory allocation.

the analysis has to be performed only on the reachable functions

add parm_decls that have to be copied

add parm_decls that have to be stored

add actual parameters that have to be loaded

Definition at line 182 of file memory_allocation.cpp.

References func_list, and HLS_step::HLSMgr.

Referenced by mem_dominator_allocation::InternalExec().

Here is the caller graph for this function:

Field Documentation

◆ func_list

CustomOrderedSet<unsigned int> memory_allocation::func_list
protected

list of functions to be analyzed

Definition at line 124 of file memory_allocation.hpp.

Referenced by finalize_memory_allocation(), mem_dominator_allocation::InternalExec(), and setup_memory_allocation().

◆ last_bb_ver

std::map<unsigned int, unsigned int> memory_allocation::last_bb_ver
protected

The version of BB IR representation on which this step was applied.

Definition at line 130 of file memory_allocation.hpp.

Referenced by Exec(), and HasToBeExecuted().

◆ last_bitvalue_ver

std::map<unsigned int, unsigned int> memory_allocation::last_bitvalue_ver
protected

The version of bit value IR representation on which this step was applied.

Definition at line 133 of file memory_allocation.hpp.

Referenced by Exec(), and HasToBeExecuted().

◆ memory_version

unsigned int memory_allocation::memory_version
protected

The version of memory representation on which this step was applied.

Definition at line 127 of file memory_allocation.hpp.

Referenced by Exec(), and HasToBeExecuted().


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

Generated on Mon Feb 12 2024 13:03:57 for PandA-2024.02 by doxygen 1.8.13