67 const DesignFlowManagerConstRef _design_flow_manager,
80 switch(relationship_type)
104 if(GetPointer<const HLS_manager>(
AppM) and GetPointer<const HLS_manager>(
AppM)->get_HLS(
function_id) and
111 for(boost::tie(basic_block, basic_block_end) = boost::vertices(*basic_block_graph);
112 basic_block != basic_block_end; basic_block++)
114 basic_block_graph->GetBBNodeInfo(*basic_block)->block->schedule =
schedule;
123 GetPointer<const HLS_manager>(
AppM) and GetPointer<const HLS_manager>(
AppM)->get_HLS(
function_id) and
137 const auto TM =
AppM->get_tree_manager();
138 auto* fd = GetPointer<function_decl>(TM->get_tree_node_const(
function_id));
139 auto*
sl = GetPointer<statement_list>(
GET_NODE(fd->body));
140 for(
const auto&
block : sl->list_of_bloc)
143 for(
const auto&
phi :
block.second->CGetPhiList())
147 for(
const auto& statement :
block.second->CGetStmtList())
#define GET_NODE(t)
Macro used to hide implementation details when accessing a tree_node from another tree_node...
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
Data structure representing the entire HLS information.
#define INDENT_DBG_MEX(dbgLevel, curDbgLevel, mex)
We are producing a debug version of the program, so the message is printed;.
Basic block control flow graph.
File containing functions and utilities to support the printing of debug messagges.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
Definition of the class representing a generic C application.
UpdateSchedule(const application_managerRef _AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
Constructor.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
~UpdateSchedule() override
Destructor.
Data structure describing a basic block at tree level.
#define STR(s)
Macro which performs a lexical_cast to a string.
Auxiliary methods for manipulating string.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
void UpdateTime(const unsigned int operation_index, bool update_cs=true)
Compute the starting and the ending time of a statement.
Data structure used to store the schedule of the operations.
Target must be reexecuted.
boost::graph_traits< graph >::vertex_iterator VertexIterator
vertex_iterator definition.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship > > ComputeFrontendRelationships(const DesignFlowStep::RelationshipType relationship_type) const override
Return the set of analyses in relationship with this design step.
This struct specifies the block node.
Analysis step which updates the schedule of all the instructions.
const unsigned int function_id
The index of the function to be analyzed.
const application_managerRef AppM
The application manager.
Class specification of the tree_reindex support class.
Class specification of the basic_block structure.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
this class is used to manage the command-line or XML options.
ScheduleRef schedule
The scheduling solution.
DesignFlowStep_Status InternalExec() override
Restructures the unstructured code.
int debug_level
The debug level.
Data structure definition for high-level synthesis flow.
Class specification of the manager of the tree structures extracted from the raw file.
const FunctionBehaviorRef function_behavior
The function behavior of the function to be analyzed.