PandA-2024.02
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
module_binding_check< vertex_type > Struct Template Reference

#include <module_binding_check.hpp>

Inheritance diagram for module_binding_check< vertex_type >:
Inheritance graph
[legend]
Collaboration diagram for module_binding_check< vertex_type >:
Collaboration graph
[legend]

Public Member Functions

 module_binding_check (unsigned long long _fu_prec, double _area_resource, const hlsRef _HLS, const HLS_managerRef _HLSMgr, const CustomUnorderedMap< vertex, double > &_slack_time, const CustomUnorderedMap< vertex, double > &_starting_time, double _controller_delay, module_register_binding_spec &_tree_index_dsets)
 
 module_binding_check (const module_binding_check &original)
 
module_binding_checkclone () const override
 
module_binding_checkoperator= (const module_binding_check &)=delete
 
 ~module_binding_check () override=default
 
void initialize_structures (boost_cc_compatibility_graph &graph, CustomUnorderedMap< C_vertex, vertex_type > &Ruv2v) override
 
double cost (size_t clique_count) override
 
size_t num_mux () override
 
void update_after_join (C_vertex &rep, C_vertex &child) override
 
bool check_edge_compatibility (C_vertex &rep, C_vertex &other) override
 
bool check_no_mux_needed (C_vertex &rep, C_vertex &other) override
 
- Public Member Functions inherited from check_clique< vertex_type >
virtual ~check_clique ()=default
 

Protected Member Functions

virtual double getOpSlack (vertex &operationVertex) const
 Takes as input the node representing the operation and returns the maximum number of muxes that can be connected before the fu that implements the operation without compromising the delay of the circuit. More...
 

Protected Attributes

bool is_disabled_slack_based_binding
 

Private Member Functions

std::vector< CustomOrderedSet< unsigned int > > getOperationVariablesAtPort (vertex &operationVertex) const
 Takes as input the vertex of an operation, and returns a vertex. More...
 

Private Attributes

CustomUnorderedMap< C_vertex, double > opSlacks
 slack associated with the Op More...
 
CustomUnorderedMap< C_vertex, std::vector< CustomOrderedSet< unsigned int > > > input_variables
 the set of input to every port of every clique. More...
 
unsigned long long fu_prec
 resource precision More...
 
double area_resource
 area resource More...
 
module_register_binding_spectree_index_dsets
 store the current state for binding More...
 
const hlsRef HLS
 reference to HLS data structure More...
 
const HLS_managerRef HLSMgr
 reference to the HLS Manager More...
 
const CustomUnorderedMap< vertex, double > & slack_time
 reference to the vertex slack More...
 
const CustomUnorderedMap< vertex, double > & starting_time
 reference to the vertex starting time More...
 
double controller_delay
 controller delay More...
 

Detailed Description

template<typename vertex_type>
struct module_binding_check< vertex_type >

Definition at line 80 of file module_binding_check.hpp.

Constructor & Destructor Documentation

◆ module_binding_check() [1/2]

template<typename vertex_type>
module_binding_check< vertex_type >::module_binding_check ( unsigned long long  _fu_prec,
double  _area_resource,
const hlsRef  _HLS,
const HLS_managerRef  _HLSMgr,
const CustomUnorderedMap< vertex, double > &  _slack_time,
const CustomUnorderedMap< vertex, double > &  _starting_time,
double  _controller_delay,
module_register_binding_spec _tree_index_dsets 
)
inline

Definition at line 174 of file module_binding_check.hpp.

◆ module_binding_check() [2/2]

template<typename vertex_type>
module_binding_check< vertex_type >::module_binding_check ( const module_binding_check< vertex_type > &  original)
inline

Definition at line 190 of file module_binding_check.hpp.

◆ ~module_binding_check()

template<typename vertex_type>
module_binding_check< vertex_type >::~module_binding_check ( )
overridedefault

Member Function Documentation

◆ check_edge_compatibility()

template<typename vertex_type>
bool module_binding_check< vertex_type >::check_edge_compatibility ( C_vertex rep,
C_vertex other 
)
inlineoverridevirtual

◆ check_no_mux_needed()

template<typename vertex_type>
bool module_binding_check< vertex_type >::check_no_mux_needed ( C_vertex rep,
C_vertex other 
)
inlineoverridevirtual

◆ clone()

template<typename vertex_type>
module_binding_check* module_binding_check< vertex_type >::clone ( ) const
inlineoverridevirtual

Implements check_clique< vertex_type >.

Definition at line 205 of file module_binding_check.hpp.

◆ cost()

template<typename vertex_type>
double module_binding_check< vertex_type >::cost ( size_t  clique_count)
inlineoverridevirtual

Implements check_clique< vertex_type >.

Definition at line 260 of file module_binding_check.hpp.

References hls::allocation_information, and AllocationInformation::estimate_muxNto1_area().

Here is the call graph for this function:

◆ getOperationVariablesAtPort()

template<typename vertex_type>
std::vector<CustomOrderedSet<unsigned int> > module_binding_check< vertex_type >::getOperationVariablesAtPort ( vertex operationVertex) const
inlineprivate

Takes as input the vertex of an operation, and returns a vertex.

Each element of the vertex is a set containing only the identifier of the variable that is required by the given operation on that port

Definition at line 125 of file module_binding_check.hpp.

References hls::functionId.

◆ getOpSlack()

template<typename vertex_type>
virtual double module_binding_check< vertex_type >::getOpSlack ( vertex operationVertex) const
inlineprotectedvirtual

Takes as input the node representing the operation and returns the maximum number of muxes that can be connected before the fu that implements the operation without compromising the delay of the circuit.

Reimplemented in module_binding_check_no_filter< vertex_type >.

Definition at line 151 of file module_binding_check.hpp.

◆ initialize_structures()

template<typename vertex_type>
void module_binding_check< vertex_type >::initialize_structures ( boost_cc_compatibility_graph graph,
CustomUnorderedMap< C_vertex, vertex_type > &  Ruv2v 
)
inlineoverridevirtual

◆ num_mux()

template<typename vertex_type>
size_t module_binding_check< vertex_type >::num_mux ( )
inlineoverridevirtual

Implements check_clique< vertex_type >.

Definition at line 280 of file module_binding_check.hpp.

◆ operator=()

template<typename vertex_type>
module_binding_check& module_binding_check< vertex_type >::operator= ( const module_binding_check< vertex_type > &  )
delete

◆ update_after_join()

template<typename vertex_type>
void module_binding_check< vertex_type >::update_after_join ( C_vertex rep,
C_vertex child 
)
inlineoverridevirtual

Implements check_clique< vertex_type >.

Definition at line 296 of file module_binding_check.hpp.

References module_register_binding_spec::binding, insert(), and min.

Here is the call graph for this function:

Field Documentation

◆ area_resource

template<typename vertex_type>
double module_binding_check< vertex_type >::area_resource
private

area resource

Definition at line 100 of file module_binding_check.hpp.

◆ controller_delay

template<typename vertex_type>
double module_binding_check< vertex_type >::controller_delay
private

controller delay

Definition at line 118 of file module_binding_check.hpp.

◆ fu_prec

template<typename vertex_type>
unsigned long long module_binding_check< vertex_type >::fu_prec
private

resource precision

Definition at line 97 of file module_binding_check.hpp.

◆ HLS

template<typename vertex_type>
const hlsRef module_binding_check< vertex_type >::HLS
private

reference to HLS data structure

Definition at line 106 of file module_binding_check.hpp.

◆ HLSMgr

template<typename vertex_type>
const HLS_managerRef module_binding_check< vertex_type >::HLSMgr
private

reference to the HLS Manager

Definition at line 109 of file module_binding_check.hpp.

◆ input_variables

template<typename vertex_type>
CustomUnorderedMap<C_vertex, std::vector<CustomOrderedSet<unsigned int> > > module_binding_check< vertex_type >::input_variables
private

the set of input to every port of every clique.

input variables[vertex][port_index] gives the set of ssa variables that are needed at port port_index by the clique represented by the node vertex

Definition at line 94 of file module_binding_check.hpp.

◆ is_disabled_slack_based_binding

template<typename vertex_type>
bool module_binding_check< vertex_type >::is_disabled_slack_based_binding
protected

Definition at line 168 of file module_binding_check.hpp.

◆ opSlacks

template<typename vertex_type>
CustomUnorderedMap<C_vertex, double> module_binding_check< vertex_type >::opSlacks
private

slack associated with the Op

Definition at line 86 of file module_binding_check.hpp.

◆ slack_time

template<typename vertex_type>
const CustomUnorderedMap<vertex, double>& module_binding_check< vertex_type >::slack_time
private

reference to the vertex slack

Definition at line 112 of file module_binding_check.hpp.

◆ starting_time

template<typename vertex_type>
const CustomUnorderedMap<vertex, double>& module_binding_check< vertex_type >::starting_time
private

reference to the vertex starting time

Definition at line 115 of file module_binding_check.hpp.

◆ tree_index_dsets

template<typename vertex_type>
module_register_binding_spec& module_binding_check< vertex_type >::tree_index_dsets
private

store the current state for binding

Definition at line 103 of file module_binding_check.hpp.


The documentation for this struct was generated from the following file:

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