PandA-2024.02
Public Member Functions | Private Member Functions | Private Attributes | Friends
Schedule Class Reference

Class managing the schedule of the operations. More...

#include <schedule.hpp>

Collaboration diagram for Schedule:
Collaboration graph
[legend]

Public Member Functions

 Schedule (const HLS_managerConstRef hls_manager, const unsigned int function_index, const OpGraphConstRef op_graph, const ParameterConstRef parameters)
 Constructor. More...
 
 ~Schedule ()
 Destructor. More...
 
void Initialize ()
 Initialize the data structure. More...
 
ControlStep get_csteps () const
 This method returns the number of control steps. More...
 
void set_csteps (ControlStep cs)
 This method sets the number of control steps. More...
 
void print (fu_bindingRef Rfu=fu_bindingRef()) const
 Function that prints the class schedule. More...
 
void WriteDot (const std::string &file_name, OpGraphConstRef sub_op_graph=OpGraphConstRef(), OpVertexSet *opSet=nullptr) const
 Function that writes the dot file of the scheduling by using the AT&T direct graph representation. More...
 
void set_spec (const CustomUnorderedMap< vertex, bool > &spec_map)
 Sets the speculation map. More...
 
CustomUnorderedMap< vertex, boolget_spec () const
 Returns the speculation map. More...
 
void set_execution (const vertex &op, ControlStep c_step)
 Sets the starting clock cycle for the given operation. More...
 
void set_execution_end (const vertex &op, ControlStep c_step_end)
 Sets the ending clock cycle for the given operation. More...
 
bool is_scheduled (const vertex &op) const
 Returns true if the given operation has been already scheduled, false otherwise. More...
 
bool is_scheduled (const unsigned int statement_index) const
 Returns true if the given operation has been already scheduled, false otherwise. More...
 
AbsControlStep get_cstep (const vertex &op) const
 Returns the clock cycle where the given operation has been scheduled. More...
 
AbsControlStep get_cstep (const unsigned int index) const
 Returns the clock cycle where the given operation has been scheduled. More...
 
AbsControlStep get_cstep_end (const vertex &op) const
 Return the last clock cycle in which the operation execute. More...
 
AbsControlStep get_cstep_end (const unsigned int statement_index) const
 Return the last clock cycle in which the operation execute. More...
 
double GetEndingTime (const unsigned int operation) const
 Return the starting time of the operation. More...
 
double GetStartingTime (const unsigned int operation) const
 Return the starting time of the operation. More...
 
double get_fo_correction (unsigned int first_operation, unsigned int second_operation) const
 return the fan-out correction for a given edge More...
 
unsigned int num_scheduled () const
 Returns the number of scheduled operations. More...
 
void clear ()
 Erases the current results. More...
 
void set_slack (vertex op, double v_slack)
 set the slack associated with the vertex with respect to the clock period More...
 
double get_slack (vertex op) const
 
void UpdateTime (const unsigned int operation_index, bool update_cs=true)
 Compute the starting and the ending time of a statement. More...
 
FunctionFrontendFlowStep_Movable CanBeMoved (const unsigned int statement_index, const unsigned int basic_block) const
 Check if a statement can be moved at the end of a basic block. More...
 
bool EvaluateCondsMerging (const unsigned statement_index, const unsigned int first_condition, const unsigned second_condition, unsigned int function_decl_nid) const
 Check if a further condition can be added to gimple multi way if without increasing basic block latency. More...
 
bool EvaluateMultiWayIfsMerging (const unsigned int first_statement_index, const unsigned int second_statement_index, unsigned int function_decl_nid) const
 Evaluate if two conditional statements can be merged to create a gimple_multi_way_if. More...
 
const std::string PrintTimingInformation (const unsigned int statement_index) const
 Print the timing information about an operation. More...
 
CustomSet< unsigned int > ComputeCriticalPath (const StateInfoConstRef state_info) const
 Compute the critical path inside a state. More...
 
void AddConnectionTimes (unsigned int first_operation, unsigned int second_operation, const double value)
 Add fan out correction time. More...
 

Private Member Functions

double GetReadyTime (const unsigned int tree_node_index, const unsigned int basic_block_index) const
 Get when in a basic block an ssa is ready. More...
 
double GetBBEndingTime (const unsigned int basic_block_index) const
 Return the ending time of a basic block (i.e., the ending time of the last ending operation. More...
 

Private Attributes

const Wrefcount< const HLS_managerhls_manager
 The HLS manager. More...
 
tree_managerRef TM
 The tree manager. More...
 
tree_manipulationConstRef tree_man
 The tree manipulation. More...
 
AllocationInformationConstRef allocation_information
 The allocation information. More...
 
const unsigned int function_index
 The index of the function. More...
 
ControlStep tot_csteps
 total number of control steps More...
 
CustomUnorderedMapUnstable< unsigned int, ControlStep > op_starting_cycle
 map between the operation index and the clock cycle on which the operation starts its execution NOTE: it must be a map to know which is the last step More...
 
CustomMap< ControlStep, CustomSet< unsigned int > > starting_cycles_to_ops
 The reverse of op_starting_cycle. More...
 
CustomUnorderedMapUnstable< unsigned int, ControlStep > op_ending_cycle
 map between the operation index and the clock cycle on which the operations ends its execution More...
 
CustomMap< unsigned int, double > starting_times
 The absolute starting time of each operation as computed by the scheduling Key is the index of the gimple operation. More...
 
CustomMap< unsigned int, double > ending_times
 The absolute ending time of each operation as computed by the scheduling Key is the index of the gimple operation. More...
 
CustomMap< std::pair< unsigned int, unsigned int >, double > connection_times
 Connection times The key is an operation graph edge. More...
 
CustomUnorderedMap< vertex, boolspec
 Map for speculation property of each operation vertex. More...
 
std::map< vertex, double > op_slack
 slack map More...
 
OpGraphConstRef op_graph
 The operation graph (for scheduling purpose) (cannot be const because of = operator) More...
 
const ParameterConstRef parameters
 The set of input parameters. More...
 
const int debug_level
 The debug level. More...
 

Friends

class parametric_list_based
 
class AllocationInformation
 

Detailed Description

Class managing the schedule of the operations.

Definition at line 118 of file schedule.hpp.

Constructor & Destructor Documentation

◆ Schedule()

Schedule::Schedule ( const HLS_managerConstRef  hls_manager,
const unsigned int  function_index,
const OpGraphConstRef  op_graph,
const ParameterConstRef  parameters 
)

Constructor.

Definition at line 110 of file schedule.cpp.

References ~Schedule().

Here is the call graph for this function:

◆ ~Schedule()

Schedule::~Schedule ( )
default

Destructor.

Referenced by Schedule().

Here is the caller graph for this function:

Member Function Documentation

◆ AddConnectionTimes()

void Schedule::AddConnectionTimes ( unsigned int  first_operation,
unsigned int  second_operation,
const double  value 
)

Add fan out correction time.

Parameters
edgeis the edge to which correction time is associated
valueis the value of the correction

Definition at line 1412 of file schedule.cpp.

References connection_times.

Referenced by parametric_list_based::exec().

Here is the caller graph for this function:

◆ CanBeMoved()

FunctionFrontendFlowStep_Movable Schedule::CanBeMoved ( const unsigned int  statement_index,
const unsigned int  basic_block 
) const

Check if a statement can be moved at the end of a basic block.

Parameters
statement_indexis the index of the statement
basic_blockis the index of the basic block
Returns
true if it can be moved

Moved in a basic block after the definition - there cannot be problem of chaining

Compute the remaining time

Operation is scheduled at the beginning of the next control step

Check if this operation ends not in the last control step

Definition at line 601 of file schedule.cpp.

References allocation_information, FunctionBehavior::CGetBehavioralHelper(), OpGraph::CGetOpNodeInfo(), tree_manager::CGetTreeNode(), tree_helper::compute_ssa_uses_rec_ptr(), debug_level, DEBUG_LEVEL_VERY_PEDANTIC, ending_times, ENTRY_ID, EXIT_ID, function_index, GET_NODE, tree_manager::get_tree_node_const(), GetBBEndingTime(), AllocationInformation::GetClockPeriodMargin(), AllocationInformation::GetConnectionTime(), AllocationInformation::GetCycleLatency(), AllocationInformation::GetFuType(), AllocationInformation::GetTimeLatency(), hls_manager, INDENT_DBG_MEX, AllocationInformation::is_one_cycle_direct_access_memory_unit(), AllocationInformation::is_operation_bounded(), Wrefcount< T >::lock(), MOVABLE, op_graph, STR, THROW_ASSERT, TIMING, TM, tree_node::ToString(), fu_binding::UNKNOWN, and UNMOVABLE.

Referenced by simple_code_motion::CheckMovable(), and PhiOpt::IdentifyPattern().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clear()

void Schedule::clear ( )

Erases the current results.

Definition at line 329 of file schedule.cpp.

References op_starting_cycle, spec, starting_cycles_to_ops, and tot_csteps.

Referenced by ASLAP::compute_ALAP(), ASLAP::compute_ASAP(), and ASLAP::update_ALAP().

Here is the caller graph for this function:

◆ ComputeCriticalPath()

CustomSet< unsigned int > Schedule::ComputeCriticalPath ( const StateInfoConstRef  state_info) const

Compute the critical path inside a state.

Parameters
state_infois the state

The set of operations which are in the critical path of the current basic block

Computing ending time of state

Compute the remaining time

Definition at line 1216 of file schedule.cpp.

References allocation_information, OpGraph::CGetOpNodeInfo(), tree_helper::compute_ssa_uses_rec_ptr(), debug_level, DEBUG_LEVEL_VERY_PEDANTIC, ending_times, ENTRY_ID, EXIT_ID, GET_NODE, tree_manager::get_tree_node_const(), AllocationInformation::GetConnectionTime(), AllocationInformation::GetTimeLatency(), INDENT_DBG_MEX, AllocationInformation::is_operation_PI_registered(), op_graph, op_starting_cycle, starting_times, STR, THROW_ASSERT, THROW_UNREACHABLE, TM, and fu_binding::UNKNOWN.

Here is the call graph for this function:

◆ EvaluateCondsMerging()

bool Schedule::EvaluateCondsMerging ( const unsigned  statement_index,
const unsigned int  first_condition,
const unsigned  second_condition,
unsigned int  function_decl_nid 
) const

Check if a further condition can be added to gimple multi way if without increasing basic block latency.

Parameters
statement_indexis the index of the gimple_multi_way_if
first_conditionis the first condition
second_conditionis the second condition

Definition at line 787 of file schedule.cpp.

References allocation_information, tree_manager::CGetTreeNode(), tree_manipulation::CreateOrExpr(), debug_level, DEBUG_LEVEL_VERY_PEDANTIC, tree_node::get_kind(), GET_NODE, tree_manager::get_tree_node_const(), GetBBEndingTime(), GetReadyTime(), AllocationInformation::GetTimeLatency(), tree_manager::GetTreeReindex(), INDENT_DBG_MEX, index, max, STR, TM, tree_man, and fu_binding::UNKNOWN.

Referenced by PhiOpt::IdentifyPattern().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EvaluateMultiWayIfsMerging()

bool Schedule::EvaluateMultiWayIfsMerging ( const unsigned int  first_statement_index,
const unsigned int  second_statement_index,
unsigned int  function_decl_nid 
) const

Evaluate if two conditional statements can be merged to create a gimple_multi_way_if.

Parameters
first_statement_indexis the index of the first statement to be merged
second_statement_indexis the index of the second statement to be merged
Returns
true if the latency of the basic block does not change

Note that we compute ending times only for the longest newly created condition; existing condition can be worse

The basic block on the default cond edge

Definition at line 814 of file schedule.cpp.

References allocation_information, tree_manipulation::CreateAndExpr(), tree_manipulation::CreateNotExpr(), FunctionBehavior::FBB, function_index, GET_NODE, tree_manager::get_tree_node_const(), GetBBEndingTime(), GetReadyTime(), AllocationInformation::GetTimeLatency(), hls_manager, Wrefcount< T >::lock(), max, STR, THROW_ASSERT, THROW_UNREACHABLE, TM, tree_man, true, and fu_binding::UNKNOWN.

Here is the call graph for this function:

◆ get_cstep() [1/2]

AbsControlStep Schedule::get_cstep ( const vertex op) const

◆ get_cstep() [2/2]

AbsControlStep Schedule::get_cstep ( const unsigned int  index) const

Returns the clock cycle where the given operation has been scheduled.

Parameters
indexis the index of the operation
Returns
an integer representing the clock cycle where it starts the execution

Definition at line 286 of file schedule.cpp.

References BB_ENTRY, BB_EXIT, tree_manager::CGetTreeNode(), ENTRY_ID, EXIT_ID, op_starting_cycle, STR, THROW_ASSERT, and TM.

Here is the call graph for this function:

◆ get_cstep_end() [1/2]

AbsControlStep Schedule::get_cstep_end ( const vertex op) const

Return the last clock cycle in which the operation execute.

Parameters
opis the operation
Returns
the last clock cycle

Definition at line 302 of file schedule.cpp.

References OpGraph::CGetOpNodeInfo(), and op_graph.

Referenced by BB_based_stg::InternalExec(), sched_based_chaining_computation::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), commutative_expr_restructuring::IsCommExprChain(), CondExprRestructuring::IsCondExprChain(), print(), and UpdateTime().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_cstep_end() [2/2]

AbsControlStep Schedule::get_cstep_end ( const unsigned int  statement_index) const

Return the last clock cycle in which the operation execute.

Parameters
opis the operation
Returns
the last clock cycle

Definition at line 308 of file schedule.cpp.

References BB_ENTRY, BB_EXIT, tree_manager::CGetTreeNode(), ENTRY_ID, EXIT_ID, is_scheduled(), op_ending_cycle, STR, THROW_ASSERT, and TM.

Here is the call graph for this function:

◆ get_csteps()

ControlStep Schedule::get_csteps ( ) const
inline

This method returns the number of control steps.

Returns
the number of control steps of the stored scheduling.

Definition at line 216 of file schedule.hpp.

Referenced by parametric_list_based::InternalExec().

Here is the caller graph for this function:

◆ get_fo_correction()

double Schedule::get_fo_correction ( unsigned int  first_operation,
unsigned int  second_operation 
) const

return the fan-out correction for a given edge

Parameters
eis the edge
Returns
return the fan-out correction for e

Definition at line 1162 of file schedule.cpp.

References connection_times.

Referenced by cdfc_module_binding::InternalExec().

Here is the caller graph for this function:

◆ get_slack()

double Schedule::get_slack ( vertex  op) const
inline

Definition at line 345 of file schedule.hpp.

References symmetry::value.

◆ get_spec()

CustomUnorderedMap<vertex, bool> Schedule::get_spec ( ) const
inline

Returns the speculation map.

Definition at line 253 of file schedule.hpp.

References index.

◆ GetBBEndingTime()

double Schedule::GetBBEndingTime ( const unsigned int  basic_block_index) const
private

Return the ending time of a basic block (i.e., the ending time of the last ending operation.

Parameters
basic_block_indexis the index of the basic block
Returns
the ending time of the last operation

Definition at line 1116 of file schedule.cpp.

References allocation_information, ending_times, function_index, GET_NODE, tree_manager::get_tree_node_const(), AllocationInformation::GetClockPeriodMargin(), hls::HLS_C, hls_manager, tree_node::index, Wrefcount< T >::lock(), STR, THROW_ASSERT, and TM.

Referenced by CanBeMoved(), EvaluateCondsMerging(), and EvaluateMultiWayIfsMerging().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetEndingTime()

double Schedule::GetEndingTime ( const unsigned int  operation) const

◆ GetReadyTime()

double Schedule::GetReadyTime ( const unsigned int  tree_node_index,
const unsigned int  basic_block_index 
) const
private

Get when in a basic block an ssa is ready.

Parameters
tree_node_indexis the index of the tree node
basic_block_indexis the index of the basic block to be considered
Returns
the ending time of the definition gimple

Definition at line 1090 of file schedule.cpp.

References debug_level, DEBUG_LEVEL_VERY_PEDANTIC, ending_times, GET_NODE, tree_manager::get_tree_node_const(), INDENT_DBG_MEX, STR, THROW_ASSERT, THROW_UNREACHABLE, and TM.

Referenced by EvaluateCondsMerging(), and EvaluateMultiWayIfsMerging().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetStartingTime()

double Schedule::GetStartingTime ( const unsigned int  operation) const

Return the starting time of the operation.

Definition at line 1151 of file schedule.cpp.

References ENTRY_ID, EXIT_ID, starting_times, STR, and THROW_ASSERT.

Referenced by RemoveEndingIf::InternalExec(), cdfc_module_binding::InternalExec(), commutative_expr_restructuring::IsCommExprChain(), CondExprRestructuring::IsCondExprChain(), and PrintTimingInformation().

Here is the caller graph for this function:

◆ Initialize()

void Schedule::Initialize ( )

Initialize the data structure.

Definition at line 1397 of file schedule.cpp.

References allocation_information, FunctionBehavior::CGetOpGraph(), ending_times, FunctionBehavior::FLSAODG, function_index, hls_manager, Wrefcount< T >::lock(), op_ending_cycle, op_graph, op_slack, op_starting_cycle, spec, starting_times, TM, and tot_csteps.

Referenced by Scheduling::Initialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_scheduled() [1/2]

bool Schedule::is_scheduled ( const vertex op) const

Returns true if the given operation has been already scheduled, false otherwise.

Definition at line 259 of file schedule.cpp.

References OpGraph::CGetOpNodeInfo(), and op_graph.

Referenced by ASLAP::compute_ALAP_fast(), ASLAP::compute_ASAP(), parametric_list_based::exec(), get_cstep(), get_cstep_end(), and UpdateTime().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_scheduled() [2/2]

bool Schedule::is_scheduled ( const unsigned int  statement_index) const

Returns true if the given operation has been already scheduled, false otherwise.

Definition at line 265 of file schedule.cpp.

References op_starting_cycle.

◆ num_scheduled()

unsigned int Schedule::num_scheduled ( ) const

Returns the number of scheduled operations.

Definition at line 324 of file schedule.cpp.

References op_starting_cycle.

Referenced by parametric_list_based::exec(), and ASLAP::print().

Here is the caller graph for this function:

◆ print()

void Schedule::print ( fu_bindingRef  Rfu = fu_bindingRef()) const

Function that prints the class schedule.

Definition at line 126 of file schedule.cpp.

References OpGraph::CGetOpNodeInfo(), get_cstep(), get_cstep_end(), fu_binding::get_fu_name(), GET_NAME, INDENT_OUT_MEX, op_graph, and STR.

Referenced by unique_binding::InternalExec(), parametric_list_based::InternalExec(), and ASLAP::print().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PrintTimingInformation()

const std::string Schedule::PrintTimingInformation ( const unsigned int  statement_index) const

Print the timing information about an operation.

Definition at line 1175 of file schedule.cpp.

References GetEndingTime(), GetStartingTime(), and NumberToString().

Here is the call graph for this function:

◆ set_csteps()

void Schedule::set_csteps ( ControlStep  cs)
inline

This method sets the number of control steps.

Parameters
csis the number of control steps.

Definition at line 225 of file schedule.hpp.

References print().

Referenced by ASLAP::compute_ALAP(), ASLAP::compute_ASAP(), parametric_list_based::exec(), SDCScheduling::InternalExec(), and hls::xload().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_execution()

void Schedule::set_execution ( const vertex op,
ControlStep  c_step 
)

Sets the starting clock cycle for the given operation.

Parameters
opthe the operation vertex
c_stepis an integer representing the clock cycle where the operation starts the computation

Definition at line 232 of file schedule.cpp.

References OpGraph::CGetOpNodeInfo(), op_graph, op_starting_cycle, and starting_cycles_to_ops.

Referenced by ASLAP::add_constraints_to_ALAP(), ASLAP::add_constraints_to_ASAP(), ASLAP::compute_ALAP_fast(), ASLAP::compute_ALAP_worst_case(), ASLAP::compute_ASAP(), parametric_list_based::exec(), SDCScheduling::InternalExec(), ASLAP::update_ALAP(), and hls::xload().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_execution_end()

void Schedule::set_execution_end ( const vertex op,
ControlStep  c_step_end 
)

Sets the ending clock cycle for the given operation.

Parameters
opthe the operation vertex
c_step_endis an integer representing the clock cycle where the operation ends the computation

Definition at line 246 of file schedule.cpp.

References OpGraph::CGetOpNodeInfo(), op_ending_cycle, and op_graph.

Referenced by parametric_list_based::exec(), and SDCScheduling::InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_slack()

void Schedule::set_slack ( vertex  op,
double  v_slack 
)
inline

set the slack associated with the vertex with respect to the clock period

Definition at line 340 of file schedule.hpp.

◆ set_spec()

void Schedule::set_spec ( const CustomUnorderedMap< vertex, bool > &  spec_map)
inline

Sets the speculation map.

Definition at line 245 of file schedule.hpp.

Referenced by parametric_list_based::InternalExec().

Here is the caller graph for this function:

◆ UpdateTime()

void Schedule::UpdateTime ( const unsigned int  operation_index,
bool  update_cs = true 
)

Compute the starting and the ending time of a statement.

Parameters
operation_indexis the index of the created statement
update_cstells if control step information has to be updated

The starting control step

Compute the control step

Compute the remaining time

Check if the first stage is across states; if so move a the beginning of the next state

Checking if we are crossing a state

True if the execution time of this operation has been updated

Remove the old scheduling

Reschedule operation according the order of control flow graph; in this way we are sure that topological order is followed; Skip operations prevoius to this control step since they have not to be rescheduled

Performed in this point to avoid check in the previous cycle

Definition at line 337 of file schedule.cpp.

References allocation_information, tree_manager::CGetTreeNode(), tree_helper::compute_ssa_uses_rec_ptr(), debug_level, DEBUG_LEVEL_VERY_PEDANTIC, ending_times, ENTRY_ID, EXIT_ID, from_strongtype_cast(), function_index, GET_CONST_NODE, get_cstep_end(), GET_NODE, AllocationInformation::GetClockPeriodMargin(), AllocationInformation::GetConnectionTime(), AllocationInformation::GetCycleLatency(), AllocationInformation::GetTimeLatency(), hls_manager, INDENT_DBG_MEX, AllocationInformation::is_operation_bounded(), AllocationInformation::is_operation_PI_registered(), is_scheduled(), AllocationInformation::IsVariableExecutionTime(), Wrefcount< T >::lock(), op_ending_cycle, op_starting_cycle, sl, starting_cycles_to_ops, starting_times, STR, THROW_ASSERT, THROW_UNREACHABLE, TM, AbsControlStep::UNKNOWN, and fu_binding::UNKNOWN.

Referenced by UpdateSchedule::InternalExec(), fanout_opt::InternalExec(), CondExprRestructuring::InternalExec(), commutative_expr_restructuring::InternalExec(), CSE::InternalExec(), SDCScheduling::InternalExec(), bloc::ReorderLUTs(), and bloc::update_new_stmt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDot()

void Schedule::WriteDot ( const std::string &  file_name,
OpGraphConstRef  sub_op_graph = OpGraphConstRef(),
OpVertexSet opSet = nullptr 
) const

Function that writes the dot file of the scheduling by using the AT&T direct graph representation.

Parameters
file_nameis the file name

Definition at line 214 of file schedule.cpp.

References BehavioralHelper::get_function_name(), op_graph, and parameters.

Referenced by parametric_list_based::InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ AllocationInformation

friend class AllocationInformation
friend

Definition at line 122 of file schedule.hpp.

◆ parametric_list_based

friend class parametric_list_based
friend

Definition at line 121 of file schedule.hpp.

Field Documentation

◆ allocation_information

AllocationInformationConstRef Schedule::allocation_information
private

◆ connection_times

CustomMap<std::pair<unsigned int, unsigned int>, double> Schedule::connection_times
private

Connection times The key is an operation graph edge.

Definition at line 162 of file schedule.hpp.

Referenced by AddConnectionTimes(), and get_fo_correction().

◆ debug_level

const int Schedule::debug_level
private

The debug level.

Definition at line 178 of file schedule.hpp.

Referenced by CanBeMoved(), ComputeCriticalPath(), EvaluateCondsMerging(), GetReadyTime(), and UpdateTime().

◆ ending_times

CustomMap<unsigned int, double> Schedule::ending_times
private

The absolute ending time of each operation as computed by the scheduling Key is the index of the gimple operation.

Definition at line 158 of file schedule.hpp.

Referenced by CanBeMoved(), ComputeCriticalPath(), parametric_list_based::exec(), GetBBEndingTime(), GetEndingTime(), GetReadyTime(), Initialize(), and UpdateTime().

◆ function_index

const unsigned int Schedule::function_index
private

The index of the function.

Definition at line 137 of file schedule.hpp.

Referenced by CanBeMoved(), EvaluateMultiWayIfsMerging(), GetBBEndingTime(), Initialize(), and UpdateTime().

◆ hls_manager

const Wrefcount<const HLS_manager> Schedule::hls_manager
private

The HLS manager.

Definition at line 125 of file schedule.hpp.

Referenced by CanBeMoved(), EvaluateMultiWayIfsMerging(), GetBBEndingTime(), Initialize(), and UpdateTime().

◆ op_ending_cycle

CustomUnorderedMapUnstable<unsigned int, ControlStep> Schedule::op_ending_cycle
private

map between the operation index and the clock cycle on which the operations ends its execution

Definition at line 150 of file schedule.hpp.

Referenced by get_cstep_end(), Initialize(), set_execution_end(), and UpdateTime().

◆ op_graph

OpGraphConstRef Schedule::op_graph
private

The operation graph (for scheduling purpose) (cannot be const because of = operator)

Definition at line 172 of file schedule.hpp.

Referenced by CanBeMoved(), ComputeCriticalPath(), get_cstep(), get_cstep_end(), Initialize(), is_scheduled(), print(), set_execution(), set_execution_end(), and WriteDot().

◆ op_slack

std::map<vertex, double> Schedule::op_slack
private

slack map

Definition at line 169 of file schedule.hpp.

Referenced by Initialize().

◆ op_starting_cycle

CustomUnorderedMapUnstable<unsigned int, ControlStep> Schedule::op_starting_cycle
private

map between the operation index and the clock cycle on which the operation starts its execution NOTE: it must be a map to know which is the last step

Definition at line 144 of file schedule.hpp.

Referenced by clear(), ComputeCriticalPath(), get_cstep(), Initialize(), is_scheduled(), num_scheduled(), set_execution(), and UpdateTime().

◆ parameters

const ParameterConstRef Schedule::parameters
private

The set of input parameters.

Definition at line 175 of file schedule.hpp.

Referenced by WriteDot().

◆ spec

CustomUnorderedMap<vertex, bool> Schedule::spec
private

Map for speculation property of each operation vertex.

If true, it means that vertex is speculative executed, false otherwise

Definition at line 166 of file schedule.hpp.

Referenced by clear(), and Initialize().

◆ starting_cycles_to_ops

CustomMap<ControlStep, CustomSet<unsigned int> > Schedule::starting_cycles_to_ops
private

The reverse of op_starting_cycle.

Definition at line 147 of file schedule.hpp.

Referenced by clear(), set_execution(), and UpdateTime().

◆ starting_times

CustomMap<unsigned int, double> Schedule::starting_times
private

The absolute starting time of each operation as computed by the scheduling Key is the index of the gimple operation.

Definition at line 154 of file schedule.hpp.

Referenced by ComputeCriticalPath(), parametric_list_based::exec(), GetStartingTime(), Initialize(), and UpdateTime().

◆ TM

tree_managerRef Schedule::TM
private

◆ tot_csteps

ControlStep Schedule::tot_csteps
private

total number of control steps

Definition at line 140 of file schedule.hpp.

Referenced by clear(), and Initialize().

◆ tree_man

tree_manipulationConstRef Schedule::tree_man
private

The tree manipulation.

Definition at line 131 of file schedule.hpp.

Referenced by EvaluateCondsMerging(), and EvaluateMultiWayIfsMerging().


The documentation for this class was generated from the following files:

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