PandA-2024.02
|
Data structure that contains all information about high level synthesis process. More...
#include <hls.hpp>
Public Member Functions | |
hls (const ParameterConstRef Param, unsigned int function_id, OpVertexSet operations, const HLS_deviceRef HLS_D, const HLS_constraintsRef HLS_C) | |
~hls () | |
Destructor. More... | |
void | xload (const xml_element *rootnode, const OpGraphConstRef data) |
Loads previous HLS results from XML node. More... | |
void | xwrite (xml_element *rootnode, const OpGraphConstRef data) |
Writes current HLS results to XML node. More... | |
void | print (std::ostream &os) const |
Prints the hls solution available up to now. More... | |
void | PrintScheduling () const |
Prints on stream the scheduling (if it has been performed). More... | |
void | print_register_binding (std::ostream &os) const |
Prints on stream the register binding (if it has been performed). More... | |
void | print_register_grouping (std::ostream &os) const |
Prints on stream the register grouping (if it has been performed). More... | |
void | print_connection_binding (std::ostream &os) const |
Prints on stream the connection binding (if it has been performed). More... | |
void | PrintResources () const |
Prints the summary of allocated resources. More... | |
Data Fields | |
unsigned int | functionId |
this is the identifier of the function to be implemented More... | |
HLSFlowStep_Type | controller_type |
The type of controller to be instantiated. More... | |
HLSFlowStep_Type | module_binding_algorithm |
The type of module binding to be adopted. More... | |
HLSFlowStep_Type | chaining_algorithm |
The type of chaining algorithm to be adopted. More... | |
HLSFlowStep_Type | liveness_algorithm |
The type of liveness algorithm to be adopted. More... | |
OpVertexSet | operations |
Set representing the subset of operations in the specification to be implemented. More... | |
const HLS_deviceRef | HLS_D |
reference to the information representing the target for the synthesis More... | |
const HLS_constraintsRef | HLS_C |
store the HLS constraints More... | |
AllocationInformationRef | allocation_information |
Store the technology information. More... | |
ScheduleRef | Rsch |
Store the refcounted scheduling of the operations. More... | |
fu_bindingRef | Rfu |
Store the refcounted functional unit binding of the operations. More... | |
StateTransitionGraphManagerRef | STG |
Store the refcounted state transition graph. More... | |
livenessRef | Rliv |
data-structure containing the variable liveness More... | |
StorageValueInformationRef | storage_value_information |
data-structure for storage values More... | |
reg_bindingRef | Rreg |
Store the refcounted register binding of the variables. More... | |
reg_bindingRef | RregGroup |
Store the refcounted register group binding of the variables. More... | |
conn_bindingRef | Rconn |
Store the refcounted interconnection of datapath elements. More... | |
ChainingInformationRef | chaining_information |
Store the refcounted chaining info. More... | |
bool | registered_inputs |
true when the module has registered inputs More... | |
bool | registered_done_port |
true when the done port is registered More... | |
size_t | call_sites_number |
The number of call points to this function. More... | |
structural_managerRef | datapath |
Store the datapath description. More... | |
structural_managerRef | controller |
Store the controller description. More... | |
structural_managerRef | control_flow_checker |
Store the description of the control flow checker. More... | |
structural_managerRef | top |
Store the top description. More... | |
const ParameterConstRef | Param |
class containing all the parameters More... | |
int | debug_level |
debugging level of the class More... | |
int | output_level |
verbosity level of the class More... | |
long | HLS_execution_time |
HLS execution time. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &os, const hls &s) |
Friend definition of the << operator. More... | |
Data structure that contains all information about high level synthesis process.
hls::hls | ( | const ParameterConstRef | Param, |
unsigned int | function_id, | ||
OpVertexSet | operations, | ||
const HLS_deviceRef | HLS_D, | ||
const HLS_constraintsRef | HLS_C | ||
) |
|
default |
void hls::print | ( | std::ostream & | os | ) | const |
Prints the hls solution available up to now.
It prints information about:
os | is the stream where the information have to be printed |
void hls::print_connection_binding | ( | std::ostream & | os | ) | const |
Prints on stream the connection binding (if it has been performed).
It prints information about
os | is the stream where the information have to be printed |
void hls::print_register_binding | ( | std::ostream & | os | ) | const |
Prints on stream the register binding (if it has been performed).
It prints information about
os | is the stream where the information have to be printed |
void hls::print_register_grouping | ( | std::ostream & | os | ) | const |
Prints on stream the register grouping (if it has been performed).
It prints information about
os | is the stream where the information have to be printed |
void hls::PrintResources | ( | ) | const |
Prints the summary of allocated resources.
Definition at line 304 of file hls.cpp.
References computeResources(), datapath, structural_manager::get_circ(), HLS_D, INDENT_OUT_MEX, output_level, OUTPUT_LEVEL_MINIMUM, OUTPUT_LEVEL_PEDANTIC, STR, and THROW_ASSERT.
Referenced by WriteHLSSummary::Exec().
void hls::PrintScheduling | ( | ) | const |
Prints on stream the scheduling (if it has been performed).
It prints information about
void hls::xload | ( | const xml_element * | rootnode, |
const OpGraphConstRef | data | ||
) |
Loads previous HLS results from XML node.
rootnode | is the pointer to the node containing all the intermediate results |
Definition at line 104 of file hls.cpp.
References allocation_information, fu_binding::bind(), CE_XVM, xml_child::get_children(), AllocationInformation::get_fu_name(), GET_NAME, AllocationInformation::get_number_fu_types(), AllocationInformation::is_artificial_fu(), AllocationInformation::is_assign(), LIBRARY_STD, LOAD_XVM, operations, Rfu, Rsch, Schedule::set_csteps(), Schedule::set_execution(), THROW_ASSERT, and THROW_ERROR.
void hls::xwrite | ( | xml_element * | rootnode, |
const OpGraphConstRef | data | ||
) |
Writes current HLS results to XML node.
rootnode | is the pointer to the node where all the intermediate results have to be stored |
Definition at line 188 of file hls.cpp.
References xml_child::add_child_element(), allocation_information, computeResources(), datapath, fu_binding::get_assign(), structural_manager::get_circ(), Schedule::get_cstep(), AllocationInformation::get_fu_name(), fu_binding::get_index(), GET_NAME, HLS_D, LIBRARY_STD, operations, Rfu, Rsch, and WRITE_XVM.
Referenced by parametric_list_based::InternalExec(), and HLS_manager::xwrite().
|
friend |
AllocationInformationRef hls::allocation_information |
Store the technology information.
Definition at line 115 of file hls.hpp.
Referenced by conn_binding::add_command_ports(), parametric_list_based::add_to_priority_queues(), SDCScheduling::AddDelayConstraints(), mux_connection_binding::address_precision(), parametric_list_based::BB_update_resources_use(), cdfc_module_binding::can_be_clustered(), parametric_list_based::check_direct_operation_chaining(), module_binding_check< vertex_type >::check_edge_compatibility(), parametric_list_based::check_non_direct_operation_chaining(), parametric_list_based::CheckSchedulabilityConditions(), BB_based_stg::compute_EPP_edge_increments(), parametric_list_based::compute_exec_stage_time(), parametric_list_based::compute_starting_ending_time_asap(), module_binding_check< vertex_type >::cost(), mux_connection_binding::create_connections(), fsm_controller::create_state_machine(), estimate_muxes(), parametric_list_based::exec(), SDCScheduling::Initialize(), allocation::Initialize(), pipeline_controller::InternalExec(), BB_based_stg::InternalExec(), unique_binding::InternalExec(), easy_module_binding::InternalExec(), add_library::InternalExec(), port_swapping::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::optimize_cycles(), BB_based_stg::res_const_operation(), xload(), and xwrite().
size_t hls::call_sites_number |
The number of call points to this function.
Definition at line 152 of file hls.hpp.
Referenced by BB_based_stg::InternalExec().
HLSFlowStep_Type hls::chaining_algorithm |
The type of chaining algorithm to be adopted.
Definition at line 96 of file hls.hpp.
Referenced by InitializeHLS::InternalExec().
ChainingInformationRef hls::chaining_information |
Store the refcounted chaining info.
Definition at line 142 of file hls.hpp.
Referenced by sched_based_chaining_computation::Initialize(), chaining::Initialize(), ChainingInformation::Initialize(), sched_based_chaining_computation::InternalExec(), cdfc_module_binding::InternalExec(), and cdfc_module_binding::update_slack_starting_time().
structural_managerRef hls::control_flow_checker |
Store the description of the control flow checker.
Definition at line 161 of file hls.hpp.
Referenced by ControlFlowChecker::add_clock_reset(), ControlFlowChecker::add_done_port(), ControlFlowChecker::add_notifiers(), ControlFlowChecker::add_present_state(), ControlFlowChecker::add_start_port(), fu_binding::add_to_SM(), ControlFlowChecker::InternalExec(), and top_entity::InternalExec().
structural_managerRef hls::controller |
Store the controller description.
Definition at line 158 of file hls.hpp.
Referenced by top_entity::add_command_signals(), top_entity_cs::add_context_switch_port(), top_entity_cs::add_context_switch_port_kernel(), top_entity_cs::add_input_register(), ControllerCreatorBaseStep::Initialize(), pipeline_controller::InternalExec(), fsm_controller::InternalExec(), and top_entity::InternalExec().
HLSFlowStep_Type hls::controller_type |
The type of controller to be instantiated.
Definition at line 90 of file hls.hpp.
Referenced by InitializeHLS::InternalExec().
structural_managerRef hls::datapath |
Store the datapath description.
Definition at line 155 of file hls.hpp.
Referenced by classic_datapath::add_clock_reset(), top_entity::add_command_signals(), top_entity_cs::add_context_switch_port(), top_entity_cs::add_context_switch_port_kernel(), fu_binding::add_gate(), datapath_cs::add_ports(), top_entity::add_ports(), classic_datapath::add_ports(), datapath_parallel_cs::add_ports(), ParallelMemoryFuBinding::add_to_SM(), reg_binding::add_to_SM(), StateTransitionGraphManager::add_to_SM(), fu_binding::add_to_SM(), datapath_parallel_cs::connect_i_module_kernel(), datapath_parallel_cs::connect_module_kernel(), top_entity_parallel_cs::connect_port_parallel(), fu_binding_cs::connect_selector(), fu_binding_cs::connect_selector_kernel(), conn_binding_cs::connectOutOr(), fu_binding_cs::instantiate_component_kernel(), datapath_parallel_cs::instantiate_component_parallel(), conn_binding_cs::instantiate_suspension_component(), top_entity_parallel_cs::InternalExec(), classic_datapath::InternalExec(), top_entity::InternalExec(), datapath_parallel_cs::InternalExec(), PrintResources(), fu_binding_cs::set_atomic_memory_parameter(), fu_binding::specialize_memory_unit(), and xwrite().
int hls::debug_level |
debugging level of the class
Definition at line 172 of file hls.hpp.
Referenced by reg_binding::compute_bitsize(), StateTransitionGraphManager::specialise_mu(), and reg_binding::specialise_reg().
unsigned int hls::functionId |
this is the identifier of the function to be implemented
Definition at line 87 of file hls.hpp.
Referenced by ControllerCreatorBaseStep::add_command_ports(), conn_binding::add_command_ports(), fu_binding::add_gate(), top_entity::add_ports(), classic_datapath::add_ports(), fu_binding_cs::add_to_SM(), ParallelMemoryFuBinding::add_to_SM(), fu_binding::add_to_SM(), mux_connection_binding::address_precision(), TopEntityMemoryMapped::allocate_parameters(), liveness::are_in_conflict(), ASLAP::ASLAP(), reg_binding::bind(), build_bus_interface(), WB4_interface::build_WB4_bus_interface(), WB4_interface::build_WB4_complete_logic(), minimal_interface::build_wrapper(), buildCircuit(), cdfc_module_binding::can_be_clustered(), mux_connection_binding::connect_to_registers(), conn_binding_cs::connectOutOr(), conn_binding::create_conn_binding(), mux_connection_binding::create_connections(), reg_binding::create_reg_binding(), mux_connection_binding::determine_connection(), estimate_muxes(), WB4_interface::get_data_bus_bitsize(), get_data_bus_bitsize(), module_binding_check< vertex_type >::getOperationVariablesAtPort(), values_scheme::Initialize(), TopEntityMemoryMapped::insertMemoryMappedRegister(), TopEntityMemoryMapped::insertStatusRegister(), FSM_NI_SSA_liveness::InternalExec(), values_scheme::InternalExec(), port_swapping::InternalExec(), allocation::InternalExec(), cdfc_module_binding::InternalExec(), fu_binding_cs::manage_extern_global_port(), fu_binding::manage_extern_global_port(), fu_binding_cs::manage_memory_ports_parallel_chained(), ParallelMemoryFuBinding::manage_module_ports(), fu_binding::specialise_fu(), and fu_binding::specialize_memory_unit().
const HLS_constraintsRef hls::HLS_C |
store the HLS constraints
Definition at line 110 of file hls.hpp.
Referenced by parametric_list_based::exec(), Schedule::GetBBEndingTime(), hls(), SDCScheduling::Initialize(), AllocationInformation::Initialize(), allocation::IntegrateTechnologyLibraries(), add_library::InternalExec(), SDCScheduling::InternalExec(), allocation::InternalExec(), parametric_list_based::InternalExec(), and cdfc_module_binding::InternalExec().
const HLS_deviceRef hls::HLS_D |
reference to the information representing the target for the synthesis
Definition at line 107 of file hls.hpp.
Referenced by conn_binding::add_command_ports(), fu_binding::add_gate(), top_entity_cs::add_input_register(), top_entity::add_input_register(), classic_datapath::add_ports(), conn_binding::add_sparse_logic_dp(), ParallelMemoryFuBinding::add_to_SM(), reg_binding::add_to_SM(), StateTransitionGraphManager::add_to_SM(), fu_binding::add_to_SM(), WB4_interface::build_WB4_complete_logic(), buildCircuit(), allocation::BuildProxyWrapper(), hls(), AllocationInformation::Initialize(), TopEntityMemoryMapped::insertMemoryMappedRegister(), TopEntityMemoryMapped::insertStartDoneLogic(), TopEntityMemoryMapped::insertStatusRegister(), fu_binding_cs::instantiate_component_kernel(), datapath_parallel_cs::instantiate_component_parallel(), cs_interface::instantiate_component_parallel(), conn_binding_cs::instantiate_suspension_component(), pipeline_controller::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), classic_datapath::InternalExec(), top_entity::InternalExec(), add_library::InternalExec(), datapath_parallel_cs::InternalExec(), cdfc_module_binding::InternalExec(), fu_binding::join_merge_split(), conn_binding::mux_allocation(), conn_binding::mux_connection(), PrintResources(), fu_binding::specialise_fu(), and xwrite().
HLSFlowStep_Type hls::liveness_algorithm |
The type of liveness algorithm to be adopted.
Definition at line 99 of file hls.hpp.
Referenced by InitializeHLS::InternalExec().
HLSFlowStep_Type hls::module_binding_algorithm |
The type of module binding to be adopted.
Definition at line 93 of file hls.hpp.
Referenced by InitializeHLS::InternalExec().
OpVertexSet hls::operations |
Set representing the subset of operations in the specification to be implemented.
Definition at line 102 of file hls.hpp.
Referenced by conn_binding::add_command_ports(), SDCScheduling::Initialize(), allocation::InternalExec(), parametric_list_based::InternalExec(), xload(), and xwrite().
int hls::output_level |
verbosity level of the class
Definition at line 175 of file hls.hpp.
Referenced by reg_binding::add_to_SM(), fu_binding::add_to_SM(), reg_binding::print_el(), and PrintResources().
const ParameterConstRef hls::Param |
class containing all the parameters
Definition at line 169 of file hls.hpp.
Referenced by top_entity_cs::add_input_register(), conn_binding::add_sparse_logic_dp(), fu_binding::add_to_SM(), conn_binding::add_to_SM(), parametric_list_based::check_non_direct_operation_chaining(), parametric_list_based::CheckSchedulabilityConditions(), reg_binding::create_reg_binding(), hls(), ControllerCreatorBaseStep::Initialize(), BB_based_stg::InternalExec(), TasteInterfaceGeneration::InternalExec(), classic_datapath::InternalExec(), ControlFlowChecker::InternalExec(), datapath_parallel_cs::InternalExec(), TopEntityMemoryMapped::resizing_IO(), fu_binding::specialise_fu(), and reg_binding_cs::specialise_reg().
conn_bindingRef hls::Rconn |
Store the refcounted interconnection of datapath elements.
Definition at line 139 of file hls.hpp.
Referenced by ControllerCreatorBaseStep::add_command_ports(), conn_binding::add_command_ports(), top_entity::add_command_signals(), mux_connection_binding::add_conversion(), conn_binding_creator::add_parameter_ports(), top_entity::add_ports(), classic_datapath::add_ports(), fu_binding::add_to_SM(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), mux_connection_binding::create_single_conn(), fsm_controller::create_state_machine(), mux_connection_binding::determine_connection(), ControllerCreatorBaseStep::Initialize(), mux_connection_binding::Initialize(), mux_connection_binding::input_logic(), pipeline_controller::InternalExec(), classic_datapath::InternalExec(), mux_connection_binding::InternalExec(), and mux_connection_binding::mux_interconnection().
bool hls::registered_done_port |
true when the done port is registered
Definition at line 149 of file hls.hpp.
Referenced by fsm_controller::create_state_machine(), BB_based_stg::InternalExec(), top_entity_parallel_cs::InternalExec(), and top_entity::InternalExec().
bool hls::registered_inputs |
true when the module has registered inputs
Definition at line 147 of file hls.hpp.
Referenced by top_entity::add_ports(), fu_binding::add_to_SM(), BB_based_stg::InternalExec(), top_entity_cs::InternalExec(), and add_library::InternalExec().
fu_bindingRef hls::Rfu |
Store the refcounted functional unit binding of the operations.
Definition at line 121 of file hls.hpp.
Referenced by conn_binding::add_command_ports(), ParallelMemoryConnBinding::add_to_SM(), ParallelMemoryFuBinding::add_to_SM(), fu_binding::add_to_SM(), mux_connection_binding::address_precision(), BB_based_stg::compute_EPP_edge_increments(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), fsm_controller::create_state_machine(), estimate_muxes(), parametric_list_based::exec(), easy_module_binding::Initialize(), fu_binding_creator::Initialize(), StorageValueInformation::Initialize(), SDCScheduling::Initialize(), Scheduling::Initialize(), module_binding_check< vertex_type >::initialize_structures(), TopEntityMemoryMapped::insertMemoryMappedRegister(), TopEntityMemoryMapped::insertStartDoneLogic(), TopEntityMemoryMapped::insertStatusRegister(), pipeline_controller::InternalExec(), BB_based_stg::InternalExec(), unique_binding::InternalExec(), easy_module_binding::InternalExec(), classic_datapath::InternalExec(), TopEntityMemoryMapped::InternalExec(), port_swapping::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::optimize_cycles(), BB_based_stg::res_const_operation(), xload(), and xwrite().
livenessRef hls::Rliv |
data-structure containing the variable liveness
Definition at line 127 of file hls.hpp.
Referenced by reg_binding::bind(), reg_binding::compute_is_without_enable(), mux_connection_binding::connect_to_registers(), compatibility_based_register::create_compatibility_graph(), conflict_based_register::create_conflict_graph(), mux_connection_binding::create_connections(), mux_connection_binding::create_single_conn(), fsm_controller::create_state_machine(), estimate_muxes(), FSM_NI_SSA_liveness::Initialize(), module_binding_check< vertex_type >::initialize_structures(), mux_connection_binding::input_logic(), FSM_NI_SSA_liveness::InternalExec(), values_scheme::InternalExec(), port_swapping::InternalExec(), cdfc_module_binding::InternalExec(), vertex_coloring_register::RegisterBinding(), unique_binding_register::RegisterBinding(), chordal_coloring_register::RegisterBinding(), weighted_clique_register::RegisterBinding(), and update_liveout_with_prev().
reg_bindingRef hls::Rreg |
Store the refcounted register binding of the variables.
Definition at line 133 of file hls.hpp.
Referenced by fu_binding::add_to_SM(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), fsm_controller::create_state_machine(), estimate_muxes(), weighted_clique_register::Initialize(), ControllerCreatorBaseStep::Initialize(), classic_datapath::InternalExec(), port_swapping::InternalExec(), vertex_coloring_register::RegisterBinding(), unique_binding_register::RegisterBinding(), chordal_coloring_register::RegisterBinding(), and weighted_clique_register::RegisterBinding().
reg_bindingRef hls::RregGroup |
ScheduleRef hls::Rsch |
Store the refcounted scheduling of the operations.
Definition at line 118 of file hls.hpp.
Referenced by AllocationInformation::ComputeRoots(), parametric_list_based::exec(), ControllerCreatorBaseStep::Initialize(), Scheduling::Initialize(), BB_based_stg::InternalExec(), unique_binding::InternalExec(), sched_based_chaining_computation::InternalExec(), SDCScheduling::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), xload(), and xwrite().
StateTransitionGraphManagerRef hls::STG |
Store the refcounted state transition graph.
Definition at line 124 of file hls.hpp.
Referenced by conn_binding::add_command_ports(), liveness::are_in_conflict(), reg_binding::bind(), BB_based_stg::compute_EPP_edge_increments(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), mux_connection_binding::create_single_conn(), fsm_controller::create_state_machine(), AllocationInformation::EstimateControllerDelay(), BB_based_stg::Initialize(), pipeline_controller::InternalExec(), BB_based_stg::InternalExec(), FSM_NI_SSA_liveness::InternalExec(), fsm_controller::InternalExec(), values_scheme::InternalExec(), classic_datapath::InternalExec(), ControlFlowChecker::InternalExec(), add_library::InternalExec(), BB_based_stg::move_with_duplication(), BB_based_stg::move_without_duplication(), BB_based_stg::optimize_cycles(), and BB_based_stg::res_const_operation().
StorageValueInformationRef hls::storage_value_information |
data-structure for storage values
Definition at line 130 of file hls.hpp.
Referenced by reg_binding::bind(), mux_connection_binding::connect_to_registers(), compatibility_based_register::create_compatibility_graph(), conflict_based_register::create_conflict_graph(), mux_connection_binding::create_connections(), fsm_controller::create_state_machine(), estimate_muxes(), reg_binding::get_vars(), storage_value_insertion::Initialize(), values_scheme::Initialize(), StorageValueInformation::Initialize(), values_scheme::InternalExec(), port_swapping::InternalExec(), reg_binding::print_el(), vertex_coloring_register::RegisterBinding(), unique_binding_register::RegisterBinding(), chordal_coloring_register::RegisterBinding(), and weighted_clique_register::RegisterBinding().
structural_managerRef hls::top |
Store the top description.
Definition at line 164 of file hls.hpp.
Referenced by TopEntityMemoryMapped::allocate_parameters(), AllocationInformation::estimate_call_delay(), WB4Intercon_interface::exec(), cs_interface::InternalExec(), minimal_interface::InternalExec(), TasteInterfaceGeneration::InternalExec(), top_entity_parallel_cs::InternalExec(), TopEntityMemoryMapped::InternalExec(), top_entity::InternalExec(), add_library::InternalExec(), and WB4_interface::InternalExec().