![]() |
PandA-2024.02
|
#include <classic_datapath.hpp>
Public Member Functions | |
classic_datapath (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type=HLSFlowStep_Type::CLASSIC_DATAPATH_CREATOR) | |
Constructor. More... | |
~classic_datapath () override | |
Destructor. More... | |
DesignFlowStep_Status | InternalExec () override |
Execute the step. More... | |
![]() | |
datapath_creator (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type _hls_flow_step_type) | |
Constructor. More... | |
~datapath_creator () override | |
Destructor. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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_clock_reset (structural_objectRef &clock_obj, structural_objectRef &reset_obj) |
Adds the clock and reset ports to the structural description of the circuit. More... | |
virtual void | add_ports () |
Adds the input/output ports of the module. 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... | |
![]() | |
void | ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override |
Compute the relationships of a step with other steps. More... | |
Additional Inherited Members | |
![]() | |
enum | RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP } |
The relationship type. More... | |
![]() | |
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 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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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 CustomUnorderedMap< std::string, HLSFlowStep_Type > | command_line_name_to_enum |
Map hls step name to enum. More... | |
Definition at line 53 of file classic_datapath.hpp.
classic_datapath::classic_datapath | ( | const ParameterConstRef | _parameters, |
const HLS_managerRef | HLSMgr, | ||
unsigned int | funId, | ||
const DesignFlowManagerConstRef | design_flow_manager, | ||
const HLSFlowStep_Type | hls_flow_step_type = HLSFlowStep_Type::CLASSIC_DATAPATH_CREATOR |
||
) |
Constructor.
design_flow_manager | is the design flow manager |
Definition at line 78 of file classic_datapath.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~classic_datapath().
|
overridedefault |
|
protected |
Adds the clock and reset ports to the structural description of the circuit.
clock_sign | is the object representing the clock signal |
reset_sign | is the object representing the reset signal |
define boolean type for clock and reset signal
add clock port
add reset port
Definition at line 275 of file classic_datapath.cpp.
References CLOCK_PORT_NAME, hls::datapath, DesignFlowStep::debug_level, DEBUG_LEVEL_PEDANTIC, DEBUG_LEVEL_VERY_PEDANTIC, structural_manager::get_circ(), HLSFunctionStep::HLS, PRINT_DBG_MEX, and RESET_PORT_NAME.
Referenced by InternalExec(), and datapath_parallel_cs::InternalExec().
|
protectedvirtual |
Adds the input/output ports of the module.
add start and done when needed
Reimplemented in datapath_parallel_cs, and datapath_cs.
Definition at line 297 of file classic_datapath.cpp.
References structural_manager::add_connection(), memory::add_memory_parameter(), structural_manager::add_module_from_technology_library(), structural_manager::add_port(), structural_manager::add_sign(), FunctionBehavior::CGetBehavioralHelper(), CONSTANT_STD, hls::datapath, DesignFlowStep::debug_level, DEBUG_LEVEL_PEDANTIC, DEBUG_LEVEL_VERY_PEDANTIC, DONE_PORT_NAME, structural_object::find_member(), hls::functionId, HLSFunctionStep::funId, structural_manager::get_circ(), conn_binding::get_constant_objs(), BehavioralHelper::get_function_index(), structural_type_descriptor::get_name(), BehavioralHelper::get_parameters(), conn_binding::get_port(), BehavioralHelper::GetFunctionReturnType(), HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, INDENT_DBG_MEX, LIBRARY_STD, param, port_o_K, PRINT_DBG_STRING, BehavioralHelper::print_type(), BehavioralHelper::PrintVariable(), hls::Rconn, RETURN_PORT_NAME, generic_obj::set_out_sign(), generic_obj::set_structural_obj(), structural_object::SetParameter(), sign, START_PORT_NAME, STR, structural_object::type_resize(), and symmetry::value.
Referenced by datapath_cs::add_ports(), datapath_parallel_cs::add_ports(), and InternalExec().
|
overridevirtual |
Execute the step.
Test on previous steps. They checks if schedule and connection binding have been performed. If they didn't, circuit cannot be created.
Test on memory allocation
main circuit type
top circuit creation
Set some descriptions and legal stuff
add clock and reset to circuit. It increments in_port number and update in_port_map
add all input ports
add registers, connecting them to clock and reset ports
allocate functional units
allocate interconnections
circuit is now complete. circuit manager can be initialized and dot representation can be created
Implements HLSFunctionStep.
Reimplemented in datapath_parallel_cs.
Definition at line 88 of file classic_datapath.cpp.
References add_clock_reset(), structural_manager::add_connection(), structural_manager::add_module_from_technology_library(), add_ports(), structural_manager::add_sign(), structural_manager::add_sign_vector(), reg_binding::add_to_SM(), StateTransitionGraphManager::add_to_SM(), fu_binding::add_to_SM(), conn_binding::add_to_SM(), CLOCK_PORT_NAME, structural_manager::COMPLETE_G, hls::datapath, DesignFlowStep::debug_level, DEBUG_LEVEL_NONE, DEBUG_LEVEL_VERBOSE, structural_object::find_member(), flipflop_SR, HLSFunctionStep::funId, GENERATED_COPYRIGHT, GENERATED_LICENSE, structural_manager::get_circ(), GET_TYPE_NAME, HLSFunctionStep::HLS, hls::HLS_D, HLS_step::HLSMgr, INDENT_DBG_MEX, structural_manager::INIT(), LIBRARY_STD, LIBRARY_STD_DATAFLOW, hls::Param, DesignFlowStep::parameters, port_o_K, port_vector_o_K, hls::Rconn, reset(), RESET_PORT_NAME, port_o::resize_std_port(), hls::Rfu, hls::Rreg, structural_object::set_black_box(), structural_manager::set_top_info(), starts_with(), STD_GET_SIZE, hls::STG, SUCCESS, THROW_ASSERT, THROW_ERROR, U, and structural_manager::WriteDot().