PandA-2024.02
Public Member Functions | Protected Member Functions | Protected Attributes
Scheduling Class Reference

Generic class managing scheduling algorithms. More...

#include <scheduling.hpp>

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

Public Member Functions

 Scheduling (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef())
 Constructor. More...
 
 ~Scheduling () override
 Destructor. More...
 
const CustomUnorderedMap< vertex, bool > & get_spec () const
 It returns speculation property map. More...
 
void Initialize () override
 Initialize the step (i.e., like a constructor, but executed just before exec. More...
 
- Public Member Functions inherited from HLSFunctionStep
 HLSFunctionStep (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef())
 Constructor. More...
 
 ~HLSFunctionStep () override
 Destructor. More...
 
bool HasToBeExecuted () const override
 Check if this step has actually to be executed. More...
 
std::string GetSignature () const final
 Return a unified identifier of this design step. More...
 
std::string GetName () const final
 Return the name of this design step. More...
 
DesignFlowStep_Status Exec () final
 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...
 
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

virtual const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const override
 Compute the relationship of this step. More...
 
- Protected Member Functions inherited from HLSFunctionStep
void ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
virtual DesignFlowStep_Status InternalExec ()=0
 Execute the step. More...
 

Protected Attributes

CustomUnorderedMap< vertex, boolspec
 Map for speculation property of each operation vertex. More...
 
const bool speculation
 flag to check speculation More...
 
- Protected Attributes inherited from HLSFunctionStep
std::map< unsigned int, unsigned int > last_bb_ver
 last bb version of the called functions More...
 
std::map< unsigned int, unsigned int > last_bitvalue_ver
 The version of bit value IR representation on which this step was applied. More...
 
const unsigned int funId
 identifier of the function to be processed (0 means that it is a global step) More...
 
hlsRef HLS
 HLS data structure of the function to be analyzed. More...
 
unsigned int bb_version
 The version of bb intermediate representation on which this step was applied. More...
 
unsigned int bitvalue_version
 The version of bitvalue on which this step was applied. More...
 
unsigned int memory_version
 The version of memory 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...
 

Private Attributes

switch statements data structures and functions.
CustomUnorderedMap< vertex, unsigned int > switch_map_size
 store for each switch the number of outgoing branches. More...
 
CustomUnorderedMap< vertex, CustomUnorderedMapUnstable< unsigned int, unsigned int > > switch_normalizing_map
 for each controlling vertex, it defines a relation between switch tags and branch tags 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 HLSFunctionStep
static std::string ComputeSignature (const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization, const unsigned int function_id)
 Compute the signature of a hls flow step. 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

Generic class managing scheduling algorithms.

Definition at line 64 of file scheduling.hpp.

Constructor & Destructor Documentation

◆ Scheduling()

Scheduling::Scheduling ( const ParameterConstRef  Param,
const HLS_managerRef  HLSMgr,
unsigned int  funId,
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 type of scheduling

Definition at line 62 of file scheduling.cpp.

References ~Scheduling().

Here is the call graph for this function:

◆ ~Scheduling()

Scheduling::~Scheduling ( )
overridedefault

Destructor.

Referenced by Scheduling().

Here is the caller graph for this function:

Member Function Documentation

◆ ComputeHLSRelationships()

const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > Scheduling::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.

Reimplemented in parametric_list_based, and SDCScheduling.

Definition at line 96 of file scheduling.cpp.

References ALLOCATION, DesignFlowStep::DEPENDENCE_RELATIONSHIP, DOMINATOR_ALLOCATION, DesignFlowStep::INVALIDATION_RELATIONSHIP, DesignFlowStep::parameters, DesignFlowStep::PRECEDENCE_RELATIONSHIP, SAME_FUNCTION, THROW_UNREACHABLE, and WHOLE_APPLICATION.

Referenced by SDCScheduling::ComputeHLSRelationships(), and parametric_list_based::ComputeHLSRelationships().

Here is the caller graph for this function:

◆ get_spec()

const CustomUnorderedMap<vertex, bool>& Scheduling::get_spec ( ) const
inline

It returns speculation property map.

Returns
the map associated

Definition at line 115 of file scheduling.hpp.

References Initialize(), and spec.

Referenced by parametric_list_based::InternalExec().

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

◆ Initialize()

void Scheduling::Initialize ( )
overridevirtual

Initialize the step (i.e., like a constructor, but executed just before exec.

Reimplemented from HLSFunctionStep.

Reimplemented in SDCScheduling.

Definition at line 73 of file scheduling.cpp.

References FunctionBehavior::CGetOpGraph(), fu_binding::create_fu_binding(), FunctionBehavior::FLSAODG, HLSFunctionStep::funId, HLSFunctionStep::HLS, HLS_step::HLSMgr, HLSFunctionStep::Initialize(), Schedule::Initialize(), DesignFlowStep::parameters, hls::Rfu, and hls::Rsch.

Referenced by get_spec(), SDCScheduling::Initialize(), and parametric_list_based::Initialize().

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

Field Documentation

◆ spec

CustomUnorderedMap<vertex, bool> Scheduling::spec
protected

Map for speculation property of each operation vertex.

If true, it means that vertex is speculative executed, false otherwise

Definition at line 81 of file scheduling.hpp.

Referenced by get_spec().

◆ speculation

const bool Scheduling::speculation
protected

flag to check speculation

Definition at line 84 of file scheduling.hpp.

Referenced by parametric_list_based::exec(), and SDCScheduling::InternalExec().

◆ switch_map_size

CustomUnorderedMap<vertex, unsigned int> Scheduling::switch_map_size
private

store for each switch the number of outgoing branches.

Definition at line 72 of file scheduling.hpp.

◆ switch_normalizing_map

CustomUnorderedMap<vertex, CustomUnorderedMapUnstable<unsigned int, unsigned int> > Scheduling::switch_normalizing_map
private

for each controlling vertex, it defines a relation between switch tags and branch tags

Definition at line 75 of file scheduling.hpp.


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

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