PandA-2024.02
Public Member Functions | Protected Member Functions
TasteInterfaceGeneration Class Reference

Class generating taste interfaces. More...

#include <taste_interface_generation.hpp>

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

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 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 inherited from HLS_step
static CustomUnorderedMap< std::string, HLSFlowStep_Typecommand_line_name_to_enum
 Map hls step name to enum. More...
 

Detailed Description

Class generating taste interfaces.

Definition at line 54 of file taste_interface_generation.hpp.

Constructor & Destructor Documentation

◆ TasteInterfaceGeneration()

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

Here is the call graph for this function:

◆ ~TasteInterfaceGeneration()

TasteInterfaceGeneration::~TasteInterfaceGeneration ( )
overridedefault

Destructor.

Referenced by TasteInterfaceGeneration().

Here is the caller graph for this function:

Member Function Documentation

◆ ComputeHLSRelationships()

const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > TasteInterfaceGeneration::ComputeHLSRelationships ( const DesignFlowStep::RelationshipType  relationship_type) const
overrideprotectedvirtual

Return the set of analyses in relationship with this design step.

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

Here is the call graph for this function:

◆ ComputeRelationships()

void TasteInterfaceGeneration::ComputeRelationships ( DesignFlowStepSet relationship,
const DesignFlowStep::RelationshipType  relationship_type 
)
overridevirtual

◆ HasToBeExecuted()

bool TasteInterfaceGeneration::HasToBeExecuted ( ) const
overridevirtual

Check if this step has actually to be executed.

Returns
true if the step has 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.

Here is the call graph for this function:

◆ InternalExec()

DesignFlowStep_Status TasteInterfaceGeneration::InternalExec ( )
overridevirtual

Execute the step.

Returns
the exit status of this 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.

Here is the call graph for this function:

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

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