PandA-2024.02
Public Member Functions | Data Fields | Friends
hls Class Reference

Data structure that contains all information about high level synthesis process. More...

#include <hls.hpp>

Collaboration diagram for hls:
Collaboration graph
[legend]

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

Detailed Description

Data structure that contains all information about high level synthesis process.

Definition at line 83 of file hls.hpp.

Constructor & Destructor Documentation

◆ hls()

hls::hls ( const ParameterConstRef  Param,
unsigned int  function_id,
OpVertexSet  operations,
const HLS_deviceRef  HLS_D,
const HLS_constraintsRef  HLS_C 
)

Definition at line 82 of file hls.cpp.

References HLS_C, HLS_D, Param, THROW_ASSERT, and ~hls().

Here is the call graph for this function:

◆ ~hls()

hls::~hls ( )
default

Destructor.

Referenced by hls().

Here is the caller graph for this function:

Member Function Documentation

◆ print()

void hls::print ( std::ostream &  os) const

Prints the hls solution available up to now.

It prints information about:

  • scheduling
  • functional units binding
  • total number of control steps
  • register binding (if register allocation has been performed)
  • connection binding (if it has been performed)
    Parameters
    osis the stream where the information have to be printed

◆ print_connection_binding()

void hls::print_connection_binding ( std::ostream &  os) const

Prints on stream the connection binding (if it has been performed).

It prints information about

  • Connection source and target
  • Element used to perform connection
  • Variables that could cross the connection
    Parameters
    osis the stream where the information have to be printed

◆ print_register_binding()

void hls::print_register_binding ( std::ostream &  os) const

Prints on stream the register binding (if it has been performed).

It prints information about

  • Variable name
  • Operations which variable is live beetween
  • Register where the variable has been stored
    Parameters
    osis the stream where the information have to be printed

◆ print_register_grouping()

void hls::print_register_grouping ( std::ostream &  os) const

Prints on stream the register grouping (if it has been performed).

It prints information about

  • Variable name
  • Operations which variable is live beetween
  • Register where the variable has been stored
    Parameters
    osis the stream where the information have to be printed

◆ PrintResources()

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

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

◆ PrintScheduling()

void hls::PrintScheduling ( ) const

Prints on stream the scheduling (if it has been performed).

It prints information about

  • Operation name
  • Control step where it will start its execution
  • Functional unit where it has been mapped

◆ xload()

void hls::xload ( const xml_element rootnode,
const OpGraphConstRef  data 
)

Loads previous HLS results from XML node.

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

Here is the call graph for this function:

◆ xwrite()

void hls::xwrite ( xml_element rootnode,
const OpGraphConstRef  data 
)

Writes current HLS results to XML node.

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

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

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const hls s 
)
friend

Friend definition of the << operator.

Definition at line 261 of file hls.hpp.

Field Documentation

◆ allocation_information

AllocationInformationRef hls::allocation_information

◆ call_sites_number

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

◆ chaining_algorithm

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

◆ chaining_information

ChainingInformationRef hls::chaining_information

◆ control_flow_checker

structural_managerRef hls::control_flow_checker

◆ controller

structural_managerRef hls::controller

◆ controller_type

HLSFlowStep_Type hls::controller_type

The type of controller to be instantiated.

Definition at line 90 of file hls.hpp.

Referenced by InitializeHLS::InternalExec().

◆ datapath

structural_managerRef hls::datapath

◆ debug_level

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

◆ functionId

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

◆ HLS_C

const HLS_constraintsRef hls::HLS_C

◆ HLS_D

const HLS_deviceRef hls::HLS_D

◆ HLS_execution_time

long hls::HLS_execution_time

HLS execution time.

Definition at line 178 of file hls.hpp.

◆ liveness_algorithm

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

◆ module_binding_algorithm

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

◆ operations

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

◆ output_level

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

◆ Param

const ParameterConstRef hls::Param

◆ Rconn

conn_bindingRef hls::Rconn

◆ registered_done_port

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

◆ registered_inputs

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

◆ Rfu

fu_bindingRef hls::Rfu

◆ Rliv

livenessRef hls::Rliv

◆ Rreg

reg_bindingRef hls::Rreg

◆ RregGroup

reg_bindingRef hls::RregGroup

Store the refcounted register group binding of the variables.

Definition at line 136 of file hls.hpp.

◆ Rsch

ScheduleRef hls::Rsch

◆ STG

◆ storage_value_information

StorageValueInformationRef hls::storage_value_information

◆ top


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

Generated on Mon Feb 12 2024 13:03:54 for PandA-2024.02 by doxygen 1.8.13