PandA-2024.02
Public Member Functions | Protected Member Functions | Protected Attributes
top_entity Class Reference

#include <top_entity.hpp>

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

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

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_Typecommand_line_name_to_enum
 Map hls step name to enum. More...
 

Detailed Description

Definition at line 50 of file top_entity.hpp.

Constructor & Destructor Documentation

◆ top_entity()

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.

Parameters
design_flow_manageris the design flow manager
top_entity_typeis 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().

Here is the call graph for this function:

◆ ~top_entity()

top_entity::~top_entity ( )
overridedefault

Destructor.

Referenced by top_entity().

Here is the caller graph for this function:

Member Function Documentation

◆ add_command_signals()

void top_entity::add_command_signals ( structural_objectRef  circuit)
protected

Adds the command signals to the circuit.

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_input_register()

void top_entity::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 
)
protectedvirtual

Add the register to store input parameters.

Parameters
port_inis the input parameter port of the datapath
port_prefixis the prefix of the port name
circuitis the circuit of the top entity
clock_portis the port of the clock signal
reset_portis the port of the reset signal
e_portis 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_ports()

void top_entity::add_ports ( structural_objectRef  circuit,
structural_objectRef  clock_port,
structural_objectRef  reset_port 
)
protected

Adds the input/output ports to the circuit.

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeHLSRelationships()

const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > top_entity::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 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.

◆ InternalExec()

DesignFlowStep_Status top_entity::InternalExec ( )
overridevirtual

Execute the step.

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

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ SM

structural_managerRef top_entity::SM
protected

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

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