PandA-2024.02
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
HLS_step Class Reference

#include <hls_step.hpp>

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

Public Member Functions

 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 DesignFlowStep_Status Exec ()=0
 Execute the step. More...
 
virtual bool HasToBeExecuted () const =0
 Check if this step has actually to be executed. 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...
 

Static Public Member Functions

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

virtual const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const
 Return the set of analyses in relationship with this design step. More...
 

Protected Attributes

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

Static Protected Attributes

static CustomUnorderedMap< std::string, HLSFlowStep_Typecommand_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...
 

Detailed Description

Definition at line 198 of file hls_step.hpp.

Constructor & Destructor Documentation

◆ HLS_step()

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.

Parameters
Paramclass containing all the parameters
HLSclass containing all the HLS data-structures
design_flow_manageris the design flow manager
hls_flow_step_typeis the type of this hls flow step

Definition at line 90 of file hls_step.cpp.

◆ ~HLS_step()

HLS_step::~HLS_step ( )
overridedefault

Destructor.

Referenced by ComputeHLSRelationships().

Here is the caller graph for this function:

Member Function Documentation

◆ CGetDesignFlowStepFactory()

DesignFlowStepFactoryConstRef HLS_step::CGetDesignFlowStepFactory ( ) const
finalvirtual

Return the factory to create this type of steps.

Implements DesignFlowStep.

Definition at line 407 of file hls_step.cpp.

References DesignFlowStep::design_flow_manager, and Wrefcount< T >::lock().

Referenced by HLSFunctionStep::ComputeRelationships(), TasteInterfaceGeneration::ComputeRelationships(), and ComputeRelationships().

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 > > HLS_step::ComputeHLSRelationships ( const DesignFlowStep::RelationshipType  relationship_type) const
protectedvirtual

◆ ComputeRelationships()

void HLS_step::ComputeRelationships ( DesignFlowStepSet design_flow_step_set,
const DesignFlowStep::RelationshipType  relationship_type 
)
overridevirtual

◆ ComputeSignature()

const std::string HLS_step::ComputeSignature ( const HLSFlowStep_Type  hls_flow_step_type,
const HLSFlowStepSpecializationConstRef  hls_flow_step_specialization 
)
static

Compute the signature of a hls flow step.

Parameters
hls_flow_step_typeis the type of the step
hls_flow_step_specializationis how the step has to be specialized
Returns
the corresponding signature

Definition at line 116 of file hls_step.cpp.

References EnumToName().

Referenced by HLSSynthesisFlow::ComputeHLSRelationships(), ComputeRelationships(), HLSFunctionStep::ComputeSignature(), HLSFlowStepFactory::CreateHLSFlowStep(), and GetSignature().

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

◆ EnumToName()

std::string HLS_step::EnumToName ( const HLSFlowStep_Type  hls_flow_step_type)
static

Given a HLS flow step type, return the name of the type.

Parameters
hls_flow_step_typeis the type to be considered
Returns
the name of the type

Definition at line 134 of file hls_step.cpp.

References ADD_LIBRARY, ALLOCATION, BB_STG_CREATOR, C_TESTBENCH_EXECUTION, CALL_GRAPH_UNFOLDING, CDFC_MODULE_BINDING, CHORDAL_COLORING_REGISTER_BINDING, CLASSIC_DATAPATH_CREATOR, CLASSICAL_HLS_SYNTHESIS_FLOW, COLORING_REGISTER_BINDING, CONTROL_FLOW_CHECKER, DATAPATH_CS_CREATOR, DATAPATH_CS_PARALLEL_CREATOR, DOMINATOR_ALLOCATION, DOMINATOR_FUNCTION_ALLOCATION, DOMINATOR_MEMORY_ALLOCATION, DOMINATOR_MEMORY_ALLOCATION_CS, DRY_RUN_EVALUATION, EASY_MODULE_BINDING, EVALUATION, FSM_CONTROLLER_CREATOR, FSM_CS_CONTROLLER_CREATOR, FSM_NI_SSA_LIVENESS, GENERATE_HDL, GENERATE_SIMULATION_SCRIPT, GENERATE_SYNTHESIS_SCRIPT, HLS_FUNCTION_BIT_VALUE, HLS_SYNTHESIS_FLOW, HW_DISCREPANCY_ANALYSIS, HW_PATH_COMPUTATION, INFERRED_INTERFACE_GENERATION, INITIALIZE_HLS, INTERFACE_CS_GENERATION, LIST_BASED_SCHEDULING, MINIMAL_INTERFACE_GENERATION, MUX_INTERCONNECTION_BINDING, OMP_BODY_LOOP_SYNTHESIS_FLOW, PIPELINE_CONTROLLER_CREATOR, PORT_SWAPPING, SCHED_CHAINING, STANDARD_HLS_FLOW, TEST_VECTOR_PARSER, TESTBENCH_GENERATION, THROW_UNREACHABLE, TOP_ENTITY_CREATION, TOP_ENTITY_CS_CREATION, TOP_ENTITY_CS_PARALLEL_CREATION, TOP_ENTITY_MEMORY_MAPPED_CREATION, UNIQUE_MODULE_BINDING, UNIQUE_REGISTER_BINDING, UNKNOWN, VALUES_SCHEME_STORAGE_VALUE_INSERTION, VIRTUAL_DESIGN_FLOW, WB4_INTERCON_INTERFACE_GENERATION, WB4_INTERFACE_GENERATION, WEIGHTED_CLIQUE_REGISTER_BINDING, and WRITE_HLS_SUMMARY.

Referenced by ComputeSignature(), HLSFlowStepFactory::CreateHLSFlowStep(), HLSFlowStepFactory::CreateHLSFlowSteps(), and GetKindText().

Here is the caller graph for this function:

◆ GetKindText()

std::string HLS_step::GetKindText ( ) const
virtual

Return the name of the type of this frontend flow step.

Definition at line 128 of file hls_step.cpp.

References EnumToName(), hls_flow_step_specialization, and hls_flow_step_type.

Referenced by HLSFunctionStep::GetName(), and GetName().

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

◆ GetName()

std::string HLS_step::GetName ( ) const
overridevirtual

Return the name of this design step.

Returns
the name of the pass (for debug purpose)

Implements DesignFlowStep.

Definition at line 123 of file hls_step.cpp.

References GetKindText().

Referenced by ComputeRelationships().

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

◆ GetSignature()

std::string HLS_step::GetSignature ( ) const
overridevirtual

Return a unified identifier of this design step.

Returns
the signature of the design step

Implements DesignFlowStep.

Definition at line 111 of file hls_step.cpp.

References ComputeSignature(), hls_flow_step_specialization, and hls_flow_step_type.

Here is the call graph for this function:

Field Documentation

◆ command_line_name_to_enum

CustomUnorderedMap< std::string, HLSFlowStep_Type > HLS_step::command_line_name_to_enum
staticprotected

Map hls step name to enum.

Definition at line 202 of file hls_step.hpp.

Referenced by ComputeHLSRelationships().

◆ hls_flow_step_specialization

const HLSFlowStepSpecializationConstRef HLS_step::hls_flow_step_specialization
protected

◆ hls_flow_step_type

const HLSFlowStep_Type HLS_step::hls_flow_step_type
protected

The type of this step.

Definition at line 208 of file hls_step.hpp.

Referenced by GetKindText(), HLSFunctionStep::GetSignature(), and GetSignature().

◆ HLSMgr

const HLS_managerRef HLS_step::HLSMgr
protected

information about all the HLS synthesis

Definition at line 205 of file hls_step.hpp.

Referenced by ControllerCreatorBaseStep::add_command_ports(), controller_cs::add_common_ports(), mux_connection_binding::add_conversion(), controller_cs::add_correct_transition_memory(), conn_binding_creator::add_parameter_ports(), datapath_cs::add_ports(), top_entity::add_ports(), classic_datapath::add_ports(), SDCScheduling::AddDelayConstraints(), OmpAllocation::AddPandaPthreadMutex(), mux_connection_binding::address_precision(), TopEntityMemoryMapped::allocate_parameters(), memory_allocation::allocate_parameters(), WB4_interface::build_WB4_bus_interface(), WB4_interface::build_WB4_complete_logic(), minimal_interface::build_wrapper(), allocation::BuildProxyFunctionVerilog(), allocation::BuildProxyFunctionVHDL(), top_entity_parallel_cs::BW_loop_iter(), BB_based_stg::check_data_dependency(), allocation::check_for_memory_compliancy(), parametric_list_based::check_non_direct_operation_chaining(), allocation::check_proxies(), parametric_list_based::CheckSchedulabilityConditions(), BB_based_stg::compute_EPP_edge_increments(), parametric_list_based::compute_function_topological_order(), parametric_list_based::compute_starting_ending_time_asap(), BB_based_stg::compute_use_def(), HLSSynthesisFlow::ComputeHLSRelationships(), standard_hls::ComputeHLSRelationships(), virtual_hls::ComputeHLSRelationships(), easy_module_binding::ComputeHLSRelationships(), fu_binding_creator::ComputeHLSRelationships(), storage_value_insertion::ComputeHLSRelationships(), reg_binding_creator::ComputeHLSRelationships(), top_entity::ComputeHLSRelationships(), port_swapping::ComputeHLSRelationships(), conn_binding_creator::ComputeHLSRelationships(), add_library::ComputeHLSRelationships(), module_interface::ComputeHLSRelationships(), parametric_list_based::ComputeHLSRelationships(), HLSFunctionStep::ComputeRelationships(), TasteInterfaceGeneration::ComputeRelationships(), SDCScheduling::ComputeRelationships(), ComputeRelationships(), top_entity_parallel_cs::connect_loop_iter(), datapath_parallel_cs::connect_module_kernel(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), mux_connection_binding::create_single_conn(), fsm_controller::create_state_machine(), VcdSignalSelection::CrossPropagateAddrSsa(), vcd_utility::detect_address_mismatch(), vcd_utility::detect_fixed_address_mismatch(), VcdSignalSelection::DetectInvalidReturns(), mux_connection_binding::determine_connection(), HWPathComputation::Exec(), CallGraphUnfolding::Exec(), HWDiscrepancyAnalysis::Exec(), OmpFunctionAllocation::Exec(), OmpFunctionAllocationCS::Exec(), mem_dominator_allocation_cs::Exec(), DryRunEvaluation::Exec(), GenerateTasteHDLArchitecture::Exec(), TestVectorParser::Exec(), GenerateSimulationScripts::Exec(), GenerateSynthesisScripts::Exec(), GenerateTasteSynthesisScript::Exec(), WriteHLSSummary::Exec(), fun_dominator_allocation::Exec(), generate_hdl::Exec(), SimulationEvaluation::Exec(), SynthesisEvaluation::Exec(), Evaluation::Exec(), vcd_utility::Exec(), TestbenchGeneration::Exec(), HLSFunctionStep::Exec(), memory_allocation::Exec(), VcdSignalSelection::Exec(), parametric_list_based::exec(), allocation::extract_bambu_provided(), memory_allocation::finalize_memory_allocation(), WB4_interface::get_addr_bus_bitsize(), WB4_interface::get_data_bus_bitsize(), HLSFunctionStep::GetName(), TasteInterfaceGeneration::HasToBeExecuted(), HLSFunctionStep::HasToBeExecuted(), memory_allocation::HasToBeExecuted(), sched_based_chaining_computation::Initialize(), OmpFunctionAllocation::Initialize(), OmpFunctionAllocationCS::Initialize(), BB_based_stg::Initialize(), FSM_NI_SSA_liveness::Initialize(), function_allocation::Initialize(), easy_module_binding::Initialize(), fu_binding_creator::Initialize(), weighted_clique_register::Initialize(), values_scheme::Initialize(), HLSFunctionStep::Initialize(), TestbenchGeneration::Initialize(), TopEntityMemoryMapped::Initialize(), SDCScheduling::Initialize(), Scheduling::Initialize(), allocation::Initialize(), parametric_list_based::Initialize(), mux_connection_binding::input_logic(), TopEntityMemoryMapped::insertMemoryMappedRegister(), TopEntityMemoryMapped::insertStartDoneLogic(), TopEntityMemoryMapped::insertStatusRegister(), OmpAllocation::IntegrateTechnologyLibraries(), allocation::IntegrateTechnologyLibraries(), InitializeHLS::InternalExec(), pipeline_controller::InternalExec(), BB_based_stg::InternalExec(), unique_binding::InternalExec(), FSM_NI_SSA_liveness::InternalExec(), sched_based_chaining_computation::InternalExec(), fsm_controller::InternalExec(), standard_hls::InternalExec(), minimal_interface::InternalExec(), top_entity_cs::InternalExec(), easy_module_binding::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), values_scheme::InternalExec(), classic_datapath::InternalExec(), HLSFunctionBitValue::InternalExec(), TopEntityMemoryMapped::InternalExec(), mem_dominator_allocation::InternalExec(), top_entity::InternalExec(), add_library::InternalExec(), datapath_parallel_cs::InternalExec(), port_swapping::InternalExec(), mux_connection_binding::InternalExec(), SDCScheduling::InternalExec(), allocation::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::is_instantaneous_operation(), mem_dominator_allocation::is_internal_obj(), allocation::is_ram_not_timing_compliant(), mux_connection_binding::object_bitsize(), BB_based_stg::optimize_cycles(), TestVectorParser::ParseXMLFile(), vcd_utility::print_discrepancy(), VcdSignalSelection::PropagateAddrParamToSsa(), vertex_coloring_register::RegisterBinding(), unique_binding_register::RegisterBinding(), chordal_coloring_register::RegisterBinding(), weighted_clique_register::RegisterBinding(), cs_interface::resize_dimension_bus_port(), datapath_parallel_cs::resize_dimension_bus_port(), TopEntityMemoryMapped::resizing_IO(), VcdSignalSelection::SelectAddrSsa(), VcdSignalSelection::SelectInitialSsa(), VcdSignalSelection::SelectInternalSignals(), memory_allocation::setup_memory_allocation(), vcd_utility::update_discr_list(), cdfc_module_binding::update_slack_starting_time(), vcd_utility::vcd_utility(), VcdSignalSelection::VcdSignalSelection(), WB4Intercon_interface::WB4Intercon_interface(), and cdfc_module_binding::weight_computation().


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

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