PandA-2024.02
|
#include <fun_dominator_allocation.hpp>
Public Member Functions | |
fun_dominator_allocation (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type=HLSFlowStep_Type::DOMINATOR_FUNCTION_ALLOCATION) | |
Constructor. More... | |
~fun_dominator_allocation () override | |
Destructor. More... | |
DesignFlowStep_Status | Exec () override |
Execute the step. More... | |
void | ComputeRelationships (DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override |
Compute the relationships of a step with other steps. More... | |
bool | HasToBeExecuted () const override |
Check if this step has actually to be executed. More... | |
Public Member Functions inherited from function_allocation | |
function_allocation (const ParameterConstRef Param, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type) | |
Constructor. More... | |
~function_allocation () override | |
Destructor. More... | |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. 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... | |
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 Attributes | |
bool | already_executed |
True if this step has yet been executed. 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 DesignFlowManager > | design_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... | |
Static Protected Attributes | |
static const std::set< std::string > | simple_functions |
list of trivial function that does not require to be proxied More... | |
Static Protected Attributes inherited from HLS_step | |
static CustomUnorderedMap< std::string, HLSFlowStep_Type > | command_line_name_to_enum |
Map hls step name to enum. 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... | |
Protected Member Functions inherited from function_allocation | |
virtual const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > | ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const override |
Return the set of analyses in relationship with this design step. More... | |
Definition at line 49 of file fun_dominator_allocation.hpp.
fun_dominator_allocation::fun_dominator_allocation | ( | const ParameterConstRef | _parameters, |
const HLS_managerRef | HLSMgr, | ||
const DesignFlowManagerConstRef | design_flow_manager, | ||
const HLSFlowStep_Type | hls_flow_step_type = HLSFlowStep_Type::DOMINATOR_FUNCTION_ALLOCATION |
||
) |
Constructor.
Definition at line 79 of file fun_dominator_allocation.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~fun_dominator_allocation().
|
overridedefault |
|
overridevirtual |
Compute the relationships of a step with other steps.
dependencies | is where relationships will be stored |
relationship_type | is the type of relationship to be computed |
Implements DesignFlowStep.
Definition at line 89 of file fun_dominator_allocation.cpp.
References HLS_step::ComputeRelationships(), ApplicationFrontendFlowStep::ComputeSignature(), TechnologyFlowStep::ComputeSignature(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::design_flow_manager, DesignFlowStep::INVALIDATION_RELATIONSHIP, LOAD_TECHNOLOGY, Wrefcount< T >::lock(), DesignFlowStep::PRECEDENCE_RELATIONSHIP, simple_functions, and THROW_UNREACHABLE.
|
overridevirtual |
Execute the step.
the analysis has to be performed only on the reachable functions
we do not need the exit vertex since the post-dominator graph is not used
compute the number of instances for each function
find the common dominator and decide where to allocate
find the common dominator between two candidates
really allocate
add proxies
Implements DesignFlowStep.
Reimplemented in OmpFunctionAllocation, and OmpFunctionAllocationCS.
Definition at line 140 of file fun_dominator_allocation.cpp.
References already_executed, DesignFlowStep::debug_level, DEBUG_LEVEL_PEDANTIC, functions::GetFUName(), tree_helper::GetMangledFunctionName(), HLS_step::HLSMgr, INDENT_DBG_MEX, INDENT_OUT_MEX, INFINITE_UINT, INTERFACE_LIBRARY, tree_helper::is_a_nop_function_decl(), NULL_VERTEX, DesignFlowStep::output_level, OUTPUT_LEVEL_MINIMUM, OUTPUT_LEVEL_PEDANTIC, OUTPUT_LEVEL_VERBOSE, DesignFlowStep::parameters, simple_functions, SplitString(), STR, STR_CST_interface_parameter_keyword, SUCCESS, lenet_tvm::target, THROW_ASSERT, THROW_ERROR, and WORK_LIBRARY.
Referenced by OmpFunctionAllocation::Exec(), and OmpFunctionAllocationCS::Exec().
|
overridevirtual |
Check if this step has actually to be executed.
Implements DesignFlowStep.
Definition at line 135 of file fun_dominator_allocation.cpp.
References already_executed.
|
protected |
True if this step has yet been executed.
Definition at line 53 of file fun_dominator_allocation.hpp.
Referenced by Exec(), and HasToBeExecuted().
|
staticprotected |
list of trivial function that does not require to be proxied
Definition at line 56 of file fun_dominator_allocation.hpp.
Referenced by ComputeRelationships(), and Exec().