63 #define ControlStep(value) value 105 AbsControlStep(
const unsigned int basic_block_index,
const ControlStep control_step);
186 double GetReadyTime(
const unsigned int tree_node_index,
const unsigned int basic_block_index)
const;
193 double GetBBEndingTime(
const unsigned int basic_block_index)
const;
263 void set_execution(
const vertex& op, ControlStep c_step);
270 void set_execution_end(
const vertex& op, ControlStep c_step_end);
275 bool is_scheduled(
const vertex& op)
const;
280 bool is_scheduled(
const unsigned int statement_index)
const;
308 AbsControlStep get_cstep_end(
const unsigned int statement_index)
const;
313 double GetEndingTime(
const unsigned int operation)
const;
318 double GetStartingTime(
const unsigned int operation)
const;
325 double get_fo_correction(
unsigned int first_operation,
unsigned int second_operation)
const;
330 unsigned int num_scheduled()
const;
342 op_slack[op] = v_slack;
347 if(op_slack.find(op) != op_slack.end())
349 return op_slack.find(op)->second;
362 void UpdateTime(
const unsigned int operation_index,
bool update_cs =
true);
371 const unsigned int basic_block)
const;
379 bool EvaluateCondsMerging(
const unsigned statement_index,
const unsigned int first_condition,
380 const unsigned second_condition,
unsigned int function_decl_nid)
const;
388 bool EvaluateMultiWayIfsMerging(
const unsigned int first_statement_index,
const unsigned int second_statement_index,
389 unsigned int function_decl_nid)
const;
394 const std::string PrintTimingInformation(
const unsigned int statement_index)
const;
407 void AddConnectionTimes(
unsigned int first_operation,
unsigned int second_operation,
const double value);
AbsControlStep()
Empty constructor.
OpGraphConstRef op_graph
The operation graph (for scheduling purpose) (cannot be const because of = operator) ...
CustomUnorderedMapUnstable< unsigned int, ControlStep > op_ending_cycle
map between the operation index and the clock cycle on which the operations ends its execution ...
ControlStep get_csteps() const
This method returns the number of control steps.
refcount< fu_binding > fu_bindingRef
RefCount type definition of the fu_binding class structure.
UINT_STRONG_TYPEDEF(ControlStep)
std::map< vertex, double > op_slack
slack map
Class managing the schedule of the operations.
This class manages the tree structures extracted from the raw file.
CustomMap< unsigned int, double > starting_times
The absolute starting time of each operation as computed by the scheduling Key is the index of the gi...
void set_csteps(ControlStep cs)
This method sets the number of control steps.
Class specification of the graph structures.
tree_managerRef TM
The tree manager.
CustomOrderedMap< T, U > CustomMap
ControlStep tot_csteps
total number of control steps
static const ControlStep UNKNOWN
Constant used to specify unknown control step.
refcount< const OpGraph > OpGraphConstRef
absl::flat_hash_map< T, U, Hash, Eq, Alloc > CustomUnorderedMapUnstable
CustomUnorderedMap< vertex, bool > spec
Map for speculation property of each operation vertex.
redefinition of map to manage ordered/unordered structures
AllocationInformationConstRef allocation_information
The allocation information.
Absolute Control step First field is the basic block Second field is the relative control step...
A set of operation vertices.
CONSTREF_FORWARD_DECL(AllocationInformation)
graph include
REF_FORWARD_DECL(behavioral_manager)
CustomUnorderedMap< vertex, bool > get_spec() const
Returns the speculation map.
CustomMap< ControlStep, CustomSet< unsigned int > > starting_cycles_to_ops
The reverse of op_starting_cycle.
const ParameterConstRef parameters
The set of input parameters.
This class specifies the characteristic of a particular operation working on a given functional unit...
absl::flat_hash_map< T, U, Hash, Eq, Alloc > CustomUnorderedMap
void set_slack(vertex op, double v_slack)
set the slack associated with the vertex with respect to the clock period
tree_manipulationConstRef tree_man
The tree manipulation.
CustomMap< std::pair< unsigned int, unsigned int >, double > connection_times
Connection times The key is an operation graph edge.
redefinition of set to manage ordered/unordered structures
This class macros for the definition of strong typedef.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
const unsigned int function_index
The index of the function.
double get_slack(vertex op) const
Class managing list based scheduling algorithms.
Template definition of refcount.
bool operator<(const AbsControlStep &other) const
Compare two scheduling step.
FunctionFrontendFlowStep_Movable
Enum class used to specify if a statement can be moved.
void set_spec(const CustomUnorderedMap< vertex, bool > &spec_map)
Sets the speculation map.
const int debug_level
The debug level.
Structure holding information about a node into graph.
CustomMap< unsigned int, double > ending_times
The absolute ending time of each operation as computed by the scheduling Key is the index of the gimp...
This file collects some hash functors.
const Wrefcount< const HLS_manager > hls_manager
The HLS manager.
Class managing the functional-unit binding.
Class used to describe a particular graph with operations as nodes.
This class creates a layer to add nodes and to manipulate the tree_nodes manager. ...
CustomUnorderedMapUnstable< unsigned int, ControlStep > op_starting_cycle
map between the operation index and the clock cycle on which the operation starts its execution NOTE:...