61 const DesignFlowManagerConstRef _design_flow_manager,
63 :
reg_binding_creator(_Param, _HLSMgr, _funId, _design_flow_manager, _hls_flow_step_type), cg(nullptr)
78 cg_vertices_size_type&>(&
color_vec.front(), boost::get(boost::vertex_index, *
cg));
82 const auto vEnd = support.end();
83 for(
auto vIt = support.begin(); vIt != vEnd; ++vIt)
88 for(
auto k = live.begin();
k != k_end; ++
k)
92 while(k_inner != k_end)
94 boost::graph_traits<conflict_graph>::edge_descriptor e1;
96 THROW_ASSERT(tail < cg_num_vertices,
"wrong conflict graph index");
98 THROW_ASSERT(head < cg_num_vertices,
"wrong conflict graph index");
105 for(
unsigned int vj = 1; vj < cg_num_vertices; ++vj)
107 for(
unsigned int vi = 0; vi < vj; ++vi)
111 boost::graph_traits<conflict_graph>::edge_descriptor e1;
Class specification to contain liveness information.
std::vector< cg_vertices_size_type > color_vec
boost::iterator_property_map< cg_vertices_size_type *, cg_vertex_index_map, cg_vertices_size_type, cg_vertices_size_type & > color
File containing functions and utilities to support the printing of debug messagges.
boost::adjacency_matrix< boost::undirectedS > conflict_graph
void create_conflict_graph()
conflict_graph * cg
conflict graph
boost::graph_traits< conflict_graph >::vertices_size_type cg_vertices_size_type
const std::list< vertex > & get_support() const
return the support set of the live in/out
StorageValueInformationRef storage_value_information
data-structure for storage values
static const uint32_t k[]
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
Generic class managing the different register allocation algorithms.
unsigned int register_lower_bound
lower bound
~conflict_based_register() override
livenessRef Rliv
data-structure containing the variable liveness
This file collects some utility functions.
boost::property_map< conflict_graph, boost::vertex_index_t >::const_type cg_vertex_index_map
conflict_based_register(const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type)
Constructor of the class.
hlsRef HLS
HLS data structure of the function to be analyzed.
Data structures used in operations graph.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Base class specification for register allocation algorithm based on a conflict graph.
this class is used to manage the command-line or XML options.
Data structure definition for high-level synthesis flow.
const CustomOrderedSet< unsigned int > & get_live_in(const vertex &v) const
Get the set of variables live at the input of a vertex.
#define THROW_ASSERT(cond, str_expr)
helper function used to check an assert and if needed to throw an error in a standard way ...