190 unsigned int _ctrl_step_multiplier);
222 void print(std::ostream& os)
const;
263 bool* feasible =
nullptr,
const ControlStep = ControlStep(0u));
290 void update_ALAP(
const ControlStep maxc,
bool* feasible =
nullptr,
Class managing the schedule of the operations.
const AllocationInformationConstRef allocation_information
The allocation data structure.
ControlStep min_tot_csteps
variable storing the minimum number of control steps required to schedule the graph.
Class specification of the graph structures.
ScheduleRef ALAP
Array storing the ALAP values of the nodes in the graph.
void compute_ALAP(ALAP_method met, const ScheduleConstRef partial_schedule=ScheduleConstRef(), bool *feasible=nullptr, const ControlStep=ControlStep(0u))
Function that computes the ALAP scheduling of the graph.
const ScheduleConstRef CGetALAP() const
Returns the ALAP vector of the vertices.
ScheduleRef ASAP
Array storing the ASAP values of the nodes in the graph.
A set of operation vertices.
int debug_level
debug level
void print(std::ostream &os) const
Function that prints the class ASLAP.
This class specifies the characteristic of a particular operation working on a given functional unit...
void compute_ASAP(const ScheduleConstRef partial_schedule=ScheduleConstRef())
Function that computes the ASAP scheduling of the graph.
Data structure used to store the schedule of the operations.
void add_constraints_to_ASAP()
Modify the ASAP scheduling taking into account also technology constraints.
ControlStep get_min_csteps() const
This method returns the minimum number of control steps to schedule the graph.
ControlStep get_max_csteps() const
This method returns the maximum number of control steps induced by the specification and by the techn...
bool has_branching_blocks
is true if the beh_graph has at least one branching block
~ASLAP()=default
Destructor.
bool speculation
speculation
const ScheduleConstRef CGetASAP() const
Returns the ASAP vector of the vertices.
friend std::ostream & operator<<(std::ostream &os, const ASLAP &s)
Friend definition of the << operator.
Data structure used to store all the HLS constraints.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
General class used to describe a graph in PandA.
ControlStep GetCycleLatency(const vertex operation, Allocation_MinMax minmax) const
Return the number of cycles required to execute an operation.
void compute_ALAP_LB()
Compute the ALAP scheduling with uncontrained resources and with the minumum execution time...
Class managing ALAP and ASAP algorithms.
ASLAP(const HLS_managerConstRef hls_manager, const hlsRef HLS, const bool speculation, const CustomUnorderedSet< vertex > &operations, const ParameterConstRef parameters, unsigned int _ctrl_step_multiplier)
Constructor.
const OpGraphConstRef CGetOpGraph() const
Gets graph.
unsigned int ctrl_step_multiplier
multiplier used to take into account chaining during asap/alap computation
ControlStep max_tot_csteps
variable storing the maximum number of control steps required to schedule the graph.
Template definition of refcount.
std::deque< vertex > levels
constant variable storing the reference to the array of vertexes sorted by topological order associat...
void add_constraints_to_ALAP()
Modify the ALAP scheduling taking into account also technology constraints.
void compute_ALAP_worst_case()
Compute ALAP using list based euristic to identify the total number of control steps.
refcount< const Schedule > ScheduleConstRef
CONSTREF_FORWARD_DECL(AllocationInformation)
void compute_ALAP_fast(bool *feasible=nullptr)
Compute the standard ALAP scheduling with uncontrained resource.
void update_ALAP(const ControlStep maxc, bool *feasible=nullptr, const ScheduleConstRef partial_schedule=ScheduleConstRef())
Update the ALAP by using maxc as upper bound.
REF_FORWARD_DECL(HLS_constraints)
OpGraphConstRef beh_graph
the graph to be scheduled
const CustomUnorderedSet< vertex > & operations
relevant vertex for the aslap scheduling
ALAP_method
Possible type of ALAP method currently implemented.
Data structure that contains all information about high level synthesis process.
Class used to describe a particular graph with operations as nodes.
const double clock_period
The clock period.
const ScheduleRef GetALAP()
Return the ALAP (modifiable)