PandA-2024.02
|
#include <top_entity.hpp>
Public Member Functions | |
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... | |
DesignFlowStep_Status | InternalExec () override |
Execute the step. 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... | |
Protected Member Functions | |
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 | |
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... | |
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... | |
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... | |
Definition at line 50 of file top_entity.hpp.
top_entity::top_entity | ( | const ParameterConstRef | _parameters, |
const HLS_managerRef | HLSMgr, | ||
unsigned int | funId, | ||
const DesignFlowManagerConstRef | design_flow_manager, | ||
const HLSFlowStep_Type | _hls_flow_step_type = HLSFlowStep_Type::TOP_ENTITY_CREATION |
||
) |
Constructor.
design_flow_manager | is the design flow manager |
top_entity_type | is the type of top entity to be created |
Definition at line 70 of file top_entity.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~top_entity().
|
overridedefault |
|
protected |
Adds the command signals to the circuit.
circuit | is the reference to the data-structure representing the circuit |
it means that the operation has not to be executed
Definition at line 648 of file top_entity.cpp.
References structural_manager::add_connection(), structural_manager::add_sign(), hls::controller, hls::datapath, structural_object::find_member(), structural_manager::get_circ(), structural_object::get_id(), structural_object::get_typeRef(), conn_binding::GetSelectors(), HLSFunctionStep::HLS, port_o_K, hls::Rconn, sign, SM, and THROW_ASSERT.
Referenced by InternalExec().
|
protectedvirtual |
Add the register to store input parameters.
port_in | is the input parameter port of the datapath |
port_prefix | is the prefix of the port name |
circuit | is the circuit of the top entity |
clock_port | is the port of the clock signal |
reset_port | is the port of the reset signal |
e_port | is the input parameter port of the top entity |
Reimplemented in top_entity_cs.
Definition at line 327 of file top_entity.cpp.
References structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), structural_manager::add_sign(), CLOCK_PORT_NAME, GET_TYPE_SIZE, structural_object::get_typeRef(), HLSFunctionStep::HLS, hls::HLS_D, port_o_K, register_STD, RESET_PORT_NAME, SM, and structural_object::type_resize().
Referenced by add_ports().
|
protected |
Adds the input/output ports to the circuit.
circuit | is the reference to the data-structure representing the circuit |
creating extern IN port on top starting from extern ports on datapath and add connection
creating extern OUT port on top starting from extern ports on datapath and add connection
creating extern IO port on top starting from extern ports on datapath and add connection
Definition at line 355 of file top_entity.cpp.
References structural_manager::add_connection(), structural_manager::add_constant(), add_input_register(), structural_manager::add_port(), structural_manager::add_port_vector(), hls::datapath, DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, structural_object::find_member(), port_o::fix_port_properties(), hls::functionId, HLSFunctionStep::funId, structural_manager::get_circ(), structural_object::get_kind(), structural_object::get_kind_text(), GET_TYPE_SIZE, structural_object::get_typeRef(), HLSFunctionStep::HLS, HLS_step::HLSMgr, INDENT_DBG_MEX, port_o_K, port_vector_o_K, hls::Rconn, hls::registered_inputs, RETURN_PORT_NAME, SM, STR, THROW_ASSERT, THROW_ERROR, and U.
Referenced by top_entity_parallel_cs::InternalExec(), and InternalExec().
|
overrideprotectedvirtual |
Return the set of analyses in relationship with this design step.
relationship_type | is the type of relationship to be considered |
Reimplemented from HLS_step.
Reimplemented in top_entity_parallel_cs.
Definition at line 80 of file top_entity.cpp.
References DesignFlowStep::DEPENDENCE_RELATIONSHIP, HLSFunctionStep::funId, HLS_step::HLSMgr, DesignFlowStep::INVALIDATION_RELATIONSHIP, DesignFlowStep::parameters, DesignFlowStep::PRECEDENCE_RELATIONSHIP, SAME_FUNCTION, and THROW_UNREACHABLE.
|
overridevirtual |
Execute the step.
function name to be synthesized
Test on previous steps. They checks if datapath and controller have been created. If they didn't, top circuit cannot be created.
top circuit creation
main circuit type
setting top circuit component
Set some descriptions and legal stuff
creating structural_manager
creating structural_manager
command signal type descriptor
add clock port
connect to datapath and controller clock
add reset port
connecting global reset port to the datapath one
connecting global reset port to the controller one
start port
check if datapath has a start signal
add done port
check if checker has to be added
add entry in in_port_map between port id and port index
Implements HLSFunctionStep.
Reimplemented in TopEntityMemoryMapped, top_entity_parallel_cs, and top_entity_cs.
Definition at line 110 of file top_entity.cpp.
References add_command_signals(), structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), structural_manager::add_port(), add_ports(), structural_manager::add_sign(), CLOCK_PORT_NAME, hls::control_flow_checker, hls::controller, hls::datapath, DesignFlowStep::debug_level, DEBUG_LEVEL_VERBOSE, DEBUG_LEVEL_VERY_PEDANTIC, DONE_PORT_NAME, DONE_PORT_NAME_CFC, structural_object::find_member(), flipflop_AR, flipflop_SR, FSM_CONTROLLER_CREATOR, FSM_CS_CONTROLLER_CREATOR, HLSFunctionStep::funId, GENERATED_COPYRIGHT, GENERATED_LICENSE, structural_manager::get_circ(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, LIBRARY_STD, NEXT_STATE_PORT_NAME, DesignFlowStep::parameters, PIPELINE_CONTROLLER_CREATOR, port_o_K, PRESENT_STATE_PORT_NAME, PRINT_DBG_MEX, memory::propagate_memory_parameters(), hls::registered_done_port, RESET_PORT_NAME, structural_manager::set_top_info(), SM, START_PORT_NAME, START_PORT_NAME_CFC, SUCCESS, THROW_ASSERT, and hls::top.
Referenced by top_entity_cs::InternalExec(), and TopEntityMemoryMapped::InternalExec().
|
protected |
reference to the resulting circuit
Definition at line 54 of file top_entity.hpp.
Referenced by add_command_signals(), top_entity_cs::add_context_switch_port(), top_entity_cs::add_context_switch_port_kernel(), top_entity_cs::add_input_register(), add_input_register(), add_ports(), top_entity_parallel_cs::connect_loop_iter(), top_entity_parallel_cs::connect_port_parallel(), top_entity_parallel_cs::InternalExec(), and InternalExec().