PandA-2024.02
|
Class generating taste interfaces. More...
#include <taste_interface_generation.hpp>
Public Member Functions | |
TasteInterfaceGeneration (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager) | |
Constructor. More... | |
~TasteInterfaceGeneration () override | |
Destructor. More... | |
DesignFlowStep_Status | InternalExec () 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 module_interface | |
module_interface (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type) | |
Constructor. More... | |
~module_interface () override | |
Destructor. 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... | |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. 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... | |
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 | |
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... | |
Protected Member Functions inherited from module_interface | |
void | add_sign (const structural_managerRef SM, const structural_objectRef sig1, const structural_objectRef sig2, const std::string &sig_name) |
Connects two ports by adding a signal (i.e., wire) More... | |
void | AddSignal (const structural_managerRef SM, const structural_objectRef component1, const std::string &port1, const structural_objectRef component2, const std::string &port2, const std::string &signal_name) |
Connects two ports by adding a signal. More... | |
void | AddConnection (const structural_managerRef SM, const structural_objectRef component1, const std::string &port1, const structural_objectRef component2, const std::string &port2) |
Connects two ports by adding a signal. More... | |
void | AddConstant (const structural_managerRef SM, const structural_objectRef component, const std::string &port, const std::string &constant, const unsigned long long size) |
Connects a constant to a port. More... | |
void | add_sign_vector (const structural_managerRef SM, const structural_objectRef sig1, const structural_objectRef sig2, const std::string &sig_name) |
Connects two ports by adding a vector signal (i.e., wire) 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... | |
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 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 inherited from HLS_step | |
static CustomUnorderedMap< std::string, HLSFlowStep_Type > | command_line_name_to_enum |
Map hls step name to enum. More... | |
Class generating taste interfaces.
Definition at line 54 of file taste_interface_generation.hpp.
TasteInterfaceGeneration::TasteInterfaceGeneration | ( | const ParameterConstRef | Param, |
const HLS_managerRef | HLSMgr, | ||
unsigned int | funId, | ||
const DesignFlowManagerConstRef | design_flow_manager | ||
) |
Constructor.
Definition at line 68 of file taste_interface_generation.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~TasteInterfaceGeneration().
|
overridedefault |
|
overrideprotectedvirtual |
Return the set of analyses in relationship with this design step.
relationship_type | is the type of relationship to be considered |
Reimplemented from module_interface.
Definition at line 79 of file taste_interface_generation.cpp.
References module_interface::ComputeHLSRelationships(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::INVALIDATION_RELATIONSHIP, MINIMAL_INTERFACE_GENERATION, DesignFlowStep::PRECEDENCE_RELATIONSHIP, SAME_FUNCTION, and THROW_UNREACHABLE.
|
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 |
Reimplemented from HLSFunctionStep.
Definition at line 691 of file taste_interface_generation.cpp.
References ADD_LIBRARY, HLS_step::CGetDesignFlowStepFactory(), HLSFunctionStep::ComputeRelationships(), HLSFunctionStep::ComputeSignature(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::design_flow_manager, HLSFunctionStep::funId, HLS_step::HLSMgr, Wrefcount< T >::lock(), NULL_VERTEX, STR_CST_taste_address_translation, STR_CST_taste_data_size, STR_CST_taste_endianess_check, STR_CST_taste_endianess_inversion, STR_CST_taste_memory_enabling, STR_CST_taste_output_multiplexer, STR_CST_taste_reg_status, and THROW_ASSERT.
|
overridevirtual |
Check if this step has actually to be executed.
Reimplemented from HLSFunctionStep.
Definition at line 852 of file taste_interface_generation.cpp.
References HLSFunctionStep::funId, HLSFunctionStep::HasToBeExecuted(), HLS_step::HLSMgr, STR_CST_taste_address_translation, STR_CST_taste_data_size, STR_CST_taste_endianess_check, STR_CST_taste_endianess_inversion, STR_CST_taste_memory_enabling, STR_CST_taste_output_multiplexer, and STR_CST_taste_reg_status.
|
overridevirtual |
Execute the step.
function name to be synthesized
auto taste_interface_module = GetPointer<const module>(taste_interface_circuit);
Set some descriptions and legal stuff
Adding minimal interface module to the taste interface
Checking if minimal interface has memory interface
Add ports
Connect minimal interface
Preparing and connecting reg_status
Preparing and connecting reg_status_update
Preparing and connecting reg_status
Computing the mask for addresses
Preparing masked version of address
Preparing and connecting endianess_check
Preparing and connecting endianess_inversion
Creating parameter registers
Resizing register size
Converting size to fit register
Connecting register
Resizing register size
Connects return port to register
Connects done port to register
Converting size to fit data bus
Connect and instantiate memory
component specialization
Preparing and connecting memory_translation
Preparing and connecting data_size
Preparing and connecting memory_enabling
Preparing and connecting actual_enabling of the memory
Prepearing and connecting load enable
Preparing and connecting sel_LOAD of the memory
Preparing and connecting sel_STORE of the memory
Connecting input of memory - in1
Connecting input of memory - in2
Connecting input of memory - in3
Connecting input of memory - sel_LOAD
Connecting input of memory - sel_STORE
Connecting input of memory - clock - reset
Preparing output
Output endianess conversion
Implements HLSFunctionStep.
Definition at line 105 of file taste_interface_generation.cpp.
References module_interface::add_sign_vector(), module_interface::AddConnection(), module_interface::AddConstant(), structural_object::AddParameter(), module_interface::AddSignal(), ARRAY_1D_STD_BRAM_NN, FunctionBehavior::CGetBehavioralHelper(), CLOCK_PORT_NAME, structural_manager::COMPLETE_G, DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, DONE_PORT_NAME, structural_object::find_member(), HLSFunctionStep::funId, BehavioralHelper::get_function_name(), structural_object::get_kind(), technology_manager::get_library(), structural_object::get_path(), GET_TYPE_SIZE, GetPath(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, INDENT_DBG_MEX, index, NP_functionality::LIBRARY, LIBRARY_STD_FU, hls::Param, DesignFlowStep::parameters, port_o_K, port_vector_o_K, register_SE, RESET_PORT_NAME, port_o::resize_if_busport(), RETURN_PORT_NAME, structural_object::set_black_box(), structural_object::set_id(), structural_object::set_owner(), structural_object::SetParameter(), START_PORT_NAME, STR, STR_CST_taste_address_translation, STR_CST_taste_data_size, STR_CST_taste_endianess_check, STR_CST_taste_endianess_inversion, STR_CST_taste_memory_enabling, STR_CST_taste_output_multiplexer, STR_CST_taste_reg_status, SUCCESS, THROW_ASSERT, THROW_UNREACHABLE, hls::top, UUDATA_CONVERTER_STD, and WORK_LIBRARY.