PandA-2024.02
reg_binding_creator.cpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (C) 2004-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
45 #include "reg_binding_creator.hpp"
47 
48 #include "Parameter.hpp"
49 #include "cdfc_module_binding.hpp"
50 #include "dbgPrintHelper.hpp"
51 #include "function_behavior.hpp"
52 #include "hls.hpp"
53 #include "hls_manager.hpp"
54 #include "liveness.hpp"
55 #include "refcount.hpp"
57 #include "utility.hpp"
58 
59 #include <boost/version.hpp>
60 #include <iosfwd>
61 
63  unsigned int _funId, const DesignFlowManagerConstRef _design_flow_manager,
64  const HLSFlowStep_Type _hls_flow_step_type,
65  const HLSFlowStepSpecializationConstRef _hls_flow_step_specialization)
66  : HLSFunctionStep(_Param, _HLSMgr, _funId, _design_flow_manager, _hls_flow_step_type,
67  _hls_flow_step_specialization),
69 {
70 }
71 
74 {
76  switch(relationship_type)
77  {
79  {
80 #if HAVE_FROM_PRAGMA_BUILT
81  if(parameters->getOption<bool>(OPT_parse_pragma))
82  {
83  ret.insert(std::make_tuple(HLSFlowStep_Type::OMP_ALLOCATION, HLSFlowStepSpecializationConstRef(),
85  }
86  else
87 #endif
88  {
91  }
92  if(HLSMgr->GetFunctionBehavior(funId)->is_simple_pipeline())
93  {
96  }
97  else
98  {
101  }
102  ret.insert(std::make_tuple(parameters->getOption<HLSFlowStep_Type>(OPT_stg_algorithm),
104  if(HLSMgr->get_HLS(funId))
105  {
106  ret.insert(std::make_tuple(HLSMgr->get_HLS(funId)->chaining_algorithm, HLSFlowStepSpecializationConstRef(),
108  ret.insert(std::make_tuple(HLSMgr->get_HLS(funId)->liveness_algorithm, HLSFlowStepSpecializationConstRef(),
110  if(HLSMgr->GetFunctionBehavior(funId)->is_simple_pipeline())
111  {
114  }
115  else
116  {
117  ret.insert(std::make_tuple(HLSMgr->get_HLS(funId)->module_binding_algorithm,
120  }
121  }
122  ret.insert(std::make_tuple(parameters->getOption<HLSFlowStep_Type>(OPT_storage_value_insertion_algorithm),
124  break;
125  }
127  {
128  break;
129  }
131  {
132  break;
133  }
134  default:
135  THROW_UNREACHABLE("");
136  }
137  return ret;
138 }
139 
141 {
142  return RegisterBinding();
143 }
DesignFlowStep_Status InternalExec() final
Execute the step.
Class specification to contain liveness information.
const HLS_managerRef HLSMgr
information about all the HLS synthesis
Definition: hls_step.hpp:205
Data structure representing the entire HLS information.
Module binding based on the analysis of the control data flow chained graph.
File containing functions and utilities to support the printing of debug messagges.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
const unsigned int funId
identifier of the function to be processed (0 means that it is a global step)
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
Definition: exceptions.hpp:292
HLSFlowStep_Type
Definition: hls_step.hpp:95
virtual DesignFlowStep_Status RegisterBinding()=0
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
reg_binding_creator(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.
This file collects some utility functions and macros.
unsigned int register_lower_bound
lower bound
Template definition of refcount.
This package is used to define the storage value scheme adopted by the register allocation algorithms...
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Definition: refcount.hpp:94
this class is used to manage the command-line or XML options.
Base class for all the register allocation algorithms.
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.
refcount< const HLSFlowStepSpecialization > HLSFlowStepSpecializationConstRef
const refcount definition of the class
Definition: hls_step.hpp:93
Data structure definition for high-level synthesis flow.
Superclass include.
A brief description of the C++ Header File.

Generated on Mon Feb 12 2024 13:02:53 for PandA-2024.02 by doxygen 1.8.13