PandA-2024.02
|
#include <hls_step.hpp>
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 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 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... | |
Definition at line 198 of file hls_step.hpp.
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.
Param | class containing all the parameters |
HLS | class containing all the HLS data-structures |
design_flow_manager | is the design flow manager |
hls_flow_step_type | is the type of this hls flow step |
Definition at line 90 of file hls_step.cpp.
|
overridedefault |
|
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().
|
protectedvirtual |
Return the set of analyses in relationship with this design step.
relationship_type | is the type of relationship to be considered |
Reimplemented in parametric_list_based, allocation, SDCScheduling, memory_allocation, vcd_utility, module_interface, TestbenchGeneration, datapath_parallel_cs, Scheduling, conn_binding_creator, add_library, ControllerCreatorBaseStep, port_swapping, Evaluation, top_entity, HWDiscrepancyAnalysis, datapath_creator, HLSFunctionBitValue, TestVectorParser, reg_binding_creator, SynthesisEvaluation, fu_binding_creator, storage_value_insertion, chaining, ClassicalHLSSynthesisFlow, TasteInterfaceGeneration, ControlFlowChecker, SimulationEvaluation, top_entity_parallel_cs, easy_module_binding, liveness_computer, VcdSignalSelection, generate_hdl, function_allocation, virtual_hls, standard_hls, GenerateSimulationScripts, GenerateSynthesisScripts, GenerateTasteSynthesisScript, WriteHLSSummary, BB_based_stg, dominator_allocation, HLSSynthesisFlow, OmpBodyLoopSynthesisFlow, OmpForWrapperCSSynthesisFlow, GenerateTasteHDLArchitecture, CallGraphUnfolding, and HWPathComputation.
Definition at line 101 of file hls_step.cpp.
References command_line_name_to_enum, and ~HLS_step().
Referenced by HLSFunctionStep::ComputeRelationships(), and ComputeRelationships().
|
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 |
check if __builtin_memcpy has to be synthesized
FIXME: temporary deactivated
Managed in HLSFunctionStep::ComputeRelationships
Root function cannot be computed at the beginning
Implements DesignFlowStep.
Reimplemented in allocation, SDCScheduling, TestbenchGeneration, TasteInterfaceGeneration, HLSFunctionBitValue, and CTestbenchExecution.
Definition at line 302 of file hls_step.cpp.
References ALL_FUNCTIONS, CALLED_FUNCTIONS, CGetDesignFlowStepFactory(), ComputeHLSRelationships(), ApplicationFrontendFlowStep::ComputeSignature(), HLSFunctionStep::ComputeSignature(), ComputeSignature(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, DesignFlowStep::design_flow_manager, generic_device::get_technology_manager(), tree_manager::GetFunction(), GetName(), HLSMgr, INDENT_DBG_MEX, Wrefcount< T >::lock(), MEMCPY, tree_helper::name_function(), tree_helper::NormalizeTypename(), SAME_FUNCTION, THROW_UNREACHABLE, TOP_FUNCTION, and WHOLE_APPLICATION.
Referenced by CTestbenchExecution::ComputeRelationships(), HLSFunctionBitValue::ComputeRelationships(), HLSFunctionStep::ComputeRelationships(), fun_dominator_allocation::ComputeRelationships(), and TestbenchGeneration::ComputeRelationships().
|
static |
Compute the signature of a hls flow step.
hls_flow_step_type | is the type of the step |
hls_flow_step_specialization | is how the step has to be specialized |
Definition at line 116 of file hls_step.cpp.
References EnumToName().
Referenced by HLSSynthesisFlow::ComputeHLSRelationships(), ComputeRelationships(), HLSFunctionStep::ComputeSignature(), HLSFlowStepFactory::CreateHLSFlowStep(), and GetSignature().
|
static |
Given a HLS flow step type, return the name of the type.
hls_flow_step_type | is the type to be considered |
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().
|
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().
|
overridevirtual |
Return the name of this design step.
Implements DesignFlowStep.
Definition at line 123 of file hls_step.cpp.
References GetKindText().
Referenced by ComputeRelationships().
|
overridevirtual |
Return a unified identifier of this design step.
Implements DesignFlowStep.
Definition at line 111 of file hls_step.cpp.
References ComputeSignature(), hls_flow_step_specialization, and hls_flow_step_type.
|
staticprotected |
Map hls step name to enum.
Definition at line 202 of file hls_step.hpp.
Referenced by ComputeHLSRelationships().
|
protected |
The information about specialization.
Definition at line 211 of file hls_step.hpp.
Referenced by add_library::ComputeHLSRelationships(), GetKindText(), HLSFunctionStep::GetSignature(), GetSignature(), add_library::InternalExec(), cdfc_module_binding::InternalExec(), and weighted_clique_register::RegisterBinding().
|
protected |
The type of this step.
Definition at line 208 of file hls_step.hpp.
Referenced by GetKindText(), HLSFunctionStep::GetSignature(), and GetSignature().
|
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().