47 #ifndef PARAMETRIC_LIST_BASED_HPP 48 #define PARAMETRIC_LIST_BASED_HPP 80 struct PrioritySorter :
public std::binary_function<vertex, vertex, bool>
133 std::string GetKindText()
const override;
138 std::string GetSignature()
const override;
149 void compute_exec_stage_time(
const unsigned int fu_type,
double& stage_period,
const ControlStep cs,
151 double& phi_extra_time,
double current_starting_time,
double setup_hold_time);
187 void compute_starting_ending_time_asap(
189 double& current_starting_time,
double& current_ending_time,
double& stage_period,
bool& cannot_be_chained,
191 CustomMap<std::pair<unsigned int, unsigned int>,
double>& local_connection_map);
199 bool BB_update_resources_use(
unsigned int& used_resources,
const unsigned int fu_type)
const;
208 std::set<unsigned int, resource_ordering_functor>& ready_resources,
223 unsigned int v_fu_type,
const ControlStep cs,
233 void CheckSchedulabilityConditions(
235 double& current_starting_time,
double& current_ending_time,
double& current_stage_period,
236 CustomMap<std::pair<unsigned int, unsigned int>,
double>& local_connection_map,
237 double current_cycle_starting_time,
double current_cycle_ending_time,
double setup_hold_time,
238 double& phi_extra_time,
double scheduling_mux_margins,
bool unbounded,
bool unbounded_Functions,
239 bool LoadStoreOp,
const std::set<std::string>& proxy_functions_used,
bool cstep_has_RET_conflict,
241 const ScheduleRef schedule,
bool& predecessorsCond,
bool& pipeliningCond,
bool& cannotBeChained0,
242 bool& chainingRetCond,
bool& cannotBeChained1,
bool& asyncCond,
bool& cannotBeChained2,
bool& cannotBeChained3,
243 bool& MultiCond0,
bool& MultiCond1,
bool& LoadStoreFunctionConflict,
bool& FunctionStoreconflict,
244 bool& proxyFunCond,
bool unbounded_RW,
bool seeMulticycle);
252 void compute_function_topological_order();
264 const DesignFlowManagerConstRef design_flow_manager,
281 void exec(
const OpVertexSet& operations, ControlStep current_cycle);
286 void Initialize()
override;
vertex2float starting_time
The starting time given the scheduling (used for chaining)
const ParametricListBased_Metric parametric_list_based_metric
The metric used in list based.
Functor used to compare which of two resources has to be considered first in the scheduling.
Class managing the schedule of the operations.
RelationshipType
The relationship type.
std::map< std::string, std::set< std::string > > reachable_proxy_functions
reachable proxy from a given function
CustomOrderedMap< T, U > CustomMap
Data structures used to manage set of vertexes.
Class managing map of the vertexes on a generic object.
absl::flat_hash_map< T, U, Hash, Eq, Alloc > CustomUnorderedMapUnstable
redefinition of map to manage ordered/unordered structures
PrioritySorter(const refcount< priority_data< int >> priority, const OpGraphConstRef op_graph)
Constructor.
A set of operation vertices.
static const double EPSILON
This package provides the class used to represent the priority queues adopted by the list based algor...
const ParametricListBased_Metric parametric_list_based_metric
The used metric.
std::vector< std::set< vertex, PrioritySorter > > PriorityQueues
Abstract class containing information about specialization of the single steps.
Base class for all scheduling algorithms.
CustomUnorderedMapUnstable< std::pair< vertex, unsigned int >, bool > is_complex
memoization table used for connection estimation
const OpGraphConstRef op_graph
The operation graph.
redefinition of set to manage ordered/unordered structures
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
OpGraphConstRef flow_graph
The dependence graph.
General class used to describe a graph in PandA.
DesignFlowStep_Status
The status of a step.
bool operator()(const vertex x, const vertex y) const
Compare position of two vertices.
Class managing list based scheduling algorithms.
Template definition of refcount.
Information about specialization of parametric list based step.
refcount< priority_data< int > > priority
The priority.
ParametricListBased_Metric
OpVertexMap< double > ending_time
The ending time given the scheduling (used for chaining)
This file collects some hash functors.
Data structures used in operations graph.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
double clock_cycle
The clock cycle.
Generic class managing scheduling algorithms.
Data structure that contains all information about high level synthesis process.
Class managing the functional-unit binding.
x
Return the smallest n such that 2^n >= _x.
Class used to describe a particular graph with operations as nodes.
CONSTREF_FORWARD_DECL(OpGraph)
OpGraphConstRef flow_graph_with_feedbacks
The dependence graph with feedbacks.