PandA-2024.02
|
Build a wrapper layer on the top entity implementing the momory mapped interface. More...
#include <TopEntityMemoryMapped.hpp>
Public Member Functions | |
TopEntityMemoryMapped (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager) | |
Constructor. More... | |
~TopEntityMemoryMapped () override | |
Destructor. More... | |
DesignFlowStep_Status | InternalExec () override |
Execute the step. More... | |
Public Member Functions inherited from top_entity | |
top_entity (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type=HLSFlowStep_Type::TOP_ENTITY_CREATION) | |
Constructor. More... | |
~top_entity () 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... | |
bool | HasToBeExecuted () const override |
Check if this step has actually to be executed. 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... | |
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... | |
Private Member Functions | |
void | allocate_parameters () const |
Allocates the in/out parameters of the module as internal registers. More... | |
void | insertMemoryMappedRegister (structural_managerRef SM, structural_objectRef wrappedObj) |
void | insertStartDoneLogic (structural_managerRef SM, structural_objectRef wrappedObj) |
void | insertStatusRegister (structural_managerRef SM, structural_objectRef wrappedObj) |
void | resizing_IO (module *fu_module, unsigned int max_n_ports) const |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. More... | |
Private Attributes | |
std::list< std::string > | ParametersName |
std::list< structural_objectRef > | AddedComponents |
bool | needMemoryMappedRegisters {false} |
bool | is_root_function {false} |
true when the module is a root function More... | |
unsigned int | _channels_number |
Function scope channels number. More... | |
MemoryAllocation_ChannelsType | _channels_type |
Function scope channels type. 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 Member Functions inherited from top_entity | |
void | add_ports (structural_objectRef circuit, structural_objectRef clock_port, structural_objectRef reset_port) |
Adds the input/output ports to the circuit. More... | |
void | add_command_signals (structural_objectRef circuit) |
Adds the command signals to the circuit. More... | |
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... | |
virtual void | add_input_register (structural_objectRef port_in, const std::string &port_prefix, structural_objectRef circuit, structural_objectRef clock_port, structural_objectRef reset_port, structural_objectRef e_port) |
Add the register to store input parameters. 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... | |
Protected Attributes inherited from top_entity | |
structural_managerRef | SM |
reference to the resulting circuit 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... | |
Build a wrapper layer on the top entity implementing the momory mapped interface.
This step augment the top entity with the logic necessary to build the memory mapped interface when the top function needs it (i.e. when it will be attached to a wishbone bus).
The top entity is augmented adding:
If the bus interface is MINIMAL the top function will not contain the memory mapped registers but it will contain the instances of the additional tops.
Definition at line 68 of file TopEntityMemoryMapped.hpp.
TopEntityMemoryMapped::TopEntityMemoryMapped | ( | const ParameterConstRef | _parameters, |
const HLS_managerRef | HLSMgr, | ||
unsigned int | funId, | ||
const DesignFlowManagerConstRef | design_flow_manager | ||
) |
Constructor.
Param | The set of parameters. |
HLSMgr | The HLS manager. |
funId | The tree index of the synthesized function. |
Definition at line 73 of file TopEntityMemoryMapped.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, TOP_ENTITY_MEMORY_MAPPED_CREATION, and ~TopEntityMemoryMapped().
|
overridedefault |
|
private |
Allocates the in/out parameters of the module as internal registers.
Definition at line 195 of file TopEntityMemoryMapped.cpp.
References memory::add_memory_parameter(), hls::functionId, HLSFunctionStep::funId, HLSFunctionStep::HLS, HLS_step::HLSMgr, STR, and hls::top.
Referenced by InternalExec().
|
overrideprivatevirtual |
Initialize the step (i.e., like a constructor, but executed just before exec.
Reimplemented from DesignFlowStep.
Definition at line 84 of file TopEntityMemoryMapped.cpp.
References _channels_number, _channels_type, AddedComponents, HLSFunctionStep::funId, HLS_step::HLSMgr, HLSFunctionStep::Initialize(), is_root_function, needMemoryMappedRegisters, and DesignFlowStep::parameters.
|
private |
Definition at line 222 of file TopEntityMemoryMapped.cpp.
References _channels_number, _channels_type, structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), structural_manager::add_sign(), AddedComponents, connect_with_signal_name(), connectClockAndReset(), DONE_PORT_NAME, structural_object::find_member(), hls::functionId, HLSFunctionStep::funId, structural_manager::get_circ(), structural_object::get_typeRef(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, is_root_function, fu_binding::manage_module_ports(), MEM_ACC_NN, MEMORY_MAPPED_REGISTER_FU, MEMORY_MAPPED_REGISTERN_FU, MUX_GATE_STD, port_o_K, resizing_IO(), RETURN_MM_REGISTER_FU, RETURN_MM_REGISTERN_FU, RETURN_PORT_NAME, hls::Rfu, setBusSizes(), sign, signal_o_K, STD_GET_SIZE, and STR.
Referenced by InternalExec().
|
private |
Definition at line 338 of file TopEntityMemoryMapped.cpp.
References _channels_number, _channels_type, structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), AddedComponents, connect_with_signal_name(), connectClockAndReset(), DONE_PORT_NAME, structural_object::find_member(), structural_manager::get_circ(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, is_root_function, fu_binding::manage_module_ports(), MEM_ACC_NN, NOTYFY_CALLER_MINIMAL_FU, NOTYFY_CALLER_MINIMALN_FU, OR_GATE_STD, port_o_K, resizing_IO(), hls::Rfu, setBusSizes(), signal_o_K, START_PORT_NAME, and THROW_ASSERT.
Referenced by InternalExec().
|
private |
Definition at line 400 of file TopEntityMemoryMapped.cpp.
References _channels_number, _channels_type, structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), structural_manager::add_sign(), AddedComponents, connectClockAndReset(), DONE_PORT_NAME, structural_object::find_member(), hls::functionId, structural_manager::get_circ(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, is_root_function, fu_binding::manage_module_ports(), MEM_ACC_NN, port_o_K, resizing_IO(), hls::Rfu, structural_object::set_type(), setBusSizes(), START_PORT_NAME, STATUS_REGISTER_FU, STATUS_REGISTER_NO_NOTIFIED_FU, STATUS_REGISTER_NO_NOTIFIEDN_FU, and STATUS_REGISTERN_FU.
Referenced by InternalExec().
|
overridevirtual |
Execute the step.
Reimplemented from top_entity.
Definition at line 98 of file TopEntityMemoryMapped.cpp.
References AddedComponents, allocate_parameters(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, HLSFunctionStep::funId, GENERATED_COPYRIGHT, GENERATED_LICENSE, structural_manager::get_circ(), structural_object::get_id(), HLSFunctionStep::HLS, HLS_step::HLSMgr, INDENT_DBG_MEX, insertMemoryMappedRegister(), insertStartDoneLogic(), insertStatusRegister(), top_entity::InternalExec(), is_root_function, fu_binding::manage_memory_ports_parallel_chained(), fu_binding::manage_module_ports(), needMemoryMappedRegisters, DesignFlowStep::parameters, ParametersName, memory::propagate_memory_parameters(), propagateInterface(), hls::Rfu, structural_manager::set_top_info(), STR, SUCCESS, and hls::top.
|
private |
Definition at line 163 of file TopEntityMemoryMapped.cpp.
References DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, module::get_in_port(), module::get_in_port_size(), module::get_out_port(), module::get_out_port_size(), HLSFunctionStep::HLS, HLS_step::HLSMgr, INDENT_DBG_MEX, hls::Param, port_vector_o_K, port_o::resize_if_busport(), and U.
Referenced by insertMemoryMappedRegister(), insertStartDoneLogic(), and insertStatusRegister().
|
private |
Function scope channels number.
Definition at line 100 of file TopEntityMemoryMapped.hpp.
Referenced by Initialize(), insertMemoryMappedRegister(), insertStartDoneLogic(), and insertStatusRegister().
|
private |
Function scope channels type.
Definition at line 103 of file TopEntityMemoryMapped.hpp.
Referenced by Initialize(), insertMemoryMappedRegister(), insertStartDoneLogic(), and insertStatusRegister().
|
private |
Definition at line 93 of file TopEntityMemoryMapped.hpp.
Referenced by Initialize(), insertMemoryMappedRegister(), insertStartDoneLogic(), insertStatusRegister(), and InternalExec().
true when the module is a root function
Definition at line 97 of file TopEntityMemoryMapped.hpp.
Referenced by Initialize(), insertMemoryMappedRegister(), insertStartDoneLogic(), insertStatusRegister(), and InternalExec().
Definition at line 94 of file TopEntityMemoryMapped.hpp.
Referenced by Initialize(), and InternalExec().
|
private |
Definition at line 92 of file TopEntityMemoryMapped.hpp.
Referenced by InternalExec().