41 #ifndef SDC_SCHEDULING_HPP 42 #define SDC_SCHEDULING_HPP 131 const std::set<vertex, bb_vertex_order_by_map>& loop_bbs);
141 const bool simultaneous)
const;
const HLS_managerRef HLSMgr
information about all the HLS synthesis
Class used to sort operation using ALAP in ascending order as primary key and ASAP ascending order as...
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
double clock_period
The clock period.
~SDCScheduling() override
Destructor.
DesignFlowStep_Status InternalExec() override
Execute the step.
RelationshipType
The relationship type.
void ExecLoop()
Execute the SDCScheduling_Algorithm::SPECULATIVE_LOOP version of the algorithm.
BBGraphConstRef basic_block_graph
The basic block cfg graph.
OpGraphConstRef feedback_op_graph
The operation graph with feedback used to perform scheduling.
CustomUnorderedSet< EdgeDescriptor > temp_edges
The set of temporary flow edges added to the op_graph.
CustomUnorderedMap< std::pair< vertex, unsigned int >, unsigned int > operation_to_varindex
Map operation-stage to variable index.
const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships(const DesignFlowStep::RelationshipType relationship_type) const override
Compute the relationship of this step.
redefinition of map to manage ordered/unordered structures
A set of operation vertices.
Base class for all scheduling algorithms.
Class used to describe a particular graph with basic blocks as nodes.
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
redefinition of set to manage ordered/unordered structures
BehavioralHelperConstRef behavioral_helper
The behavioral helper.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
fu_bindingRef res_binding
The binding.
Base class providing several methods to encapsulate the interface to several ilp solver.
AllocationInformationConstRef allocation_information
The allocation.
void Initialize() override
Initialize the step.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
The key comparison function for vertices set based on levels.
CustomUnorderedSet< unsigned int > limited_resources
Set of reachable operations (in scheduling graph)
CustomUnorderedMap< unsigned int, CustomSet< vertex > > sharing_operations
The set of unbounded operations.
void AddStageConstraints(const meilp_solverRef solver, const vertex operation) const
Add constraints to force consecutive execution of different pipeline stages.
REF_FORWARD_DECL(fu_binding)
This file collects some hash functors.
SDCScheduling(const ParameterConstRef parameters, const HLS_managerRef HLSMgr, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization)
Constructor.
void AddDelayConstraints(const meilp_solverRef solver, const OpGraphConstRef filtered_op_graph, const OpGraphConstRef debug_filtered_op_graph, const std::set< vertex, bb_vertex_order_by_map > &loop_bbs)
Add constraints to force execution in different steps of operations which cannot be chained...
CONSTREF_FORWARD_DECL(AllocationInformation)
Superclass include.
void AddDependenceConstraint(const meilp_solverRef solver, const vertex source, const vertex target, const bool simultaneous) const
Add constraints to force consecutive execution of dependent operations.
Generic class managing scheduling algorithms.
Class managing the functional-unit binding.
std::list< std::vector< unsigned int > > movements_list
Result of SPECULATIVE_LOOP: the list of movement to be performed (first element is the operation...
void ComputeRelationships(DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
Compute the relationships of a step with other steps.
OpGraphConstRef op_graph
The operation graph used to perform scheduling.
const HLSFlowStepSpecializationConstRef hls_flow_step_specialization
The information about specialization.
double margin
The margin which has to be introduced with respect to clock period.