PandA-2024.02
|
Class managing list based scheduling algorithms. More...
#include <parametric_list_based.hpp>
Public Member Functions | |
parametric_list_based (const ParameterConstRef parameters, const HLS_managerRef HLSMgr, unsigned int _funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization) | |
This is the constructor of the list_based. More... | |
~parametric_list_based () override | |
Destructor. More... | |
DesignFlowStep_Status | InternalExec () override |
Execute the step. More... | |
void | exec (const OpVertexSet &operations, ControlStep current_cycle) |
Function that computes the List-Based scheduling of the graph. More... | |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. More... | |
Public Member Functions inherited from Scheduling | |
Scheduling (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef()) | |
Constructor. More... | |
~Scheduling () override | |
Destructor. More... | |
const CustomUnorderedMap< vertex, bool > & | get_spec () const |
It returns speculation property map. More... | |
void | Initialize () override |
Initialize the step (i.e., like a constructor, but executed just before exec. More... | |
Public Member Functions inherited from HLSFunctionStep | |
HLSFunctionStep (const ParameterConstRef Param, const HLS_managerRef HLSMgr, unsigned int funId, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef()) | |
Constructor. More... | |
~HLSFunctionStep () override | |
Destructor. More... | |
bool | HasToBeExecuted () const override |
Check if this step has actually to be executed. More... | |
std::string | GetSignature () const final |
Return a unified identifier of this design step. More... | |
std::string | GetName () const final |
Return the name of this design step. More... | |
DesignFlowStep_Status | Exec () final |
Execute the step. More... | |
Public Member Functions inherited from HLS_step | |
HLS_step (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef()) | |
Constructor. More... | |
~HLS_step () override | |
Destructor. More... | |
std::string | GetSignature () const override |
Return a unified identifier of this design step. More... | |
std::string | GetName () const override |
Return the name of this design step. More... | |
virtual std::string | GetKindText () const |
Return the name of the type of this frontend flow step. More... | |
DesignFlowStepFactoryConstRef | CGetDesignFlowStepFactory () const final |
Return the factory to create this type of steps. More... | |
void | ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override |
Compute the relationships of a step with other steps. More... | |
Public Member Functions inherited from DesignFlowStep | |
DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters) | |
Constructor. More... | |
virtual | ~DesignFlowStep () |
Destructor. More... | |
DesignFlowStep_Status | GetStatus () const |
Return the status of this design step. More... | |
virtual void | WriteDot (std::ostream &out) const |
Write the label for a dot graph. More... | |
bool | IsComposed () const |
Returns if this step is composed. More... | |
int | CGetDebugLevel () const |
Return the debug level of the step. More... | |
virtual void | PrintInitialIR () const |
Dump the initial intermediate representation. More... | |
virtual void | PrintFinalIR () const |
Dump the final intermediate representation. More... | |
Private Member Functions | |
void | compute_exec_stage_time (const unsigned int fu_type, double &stage_period, const ControlStep cs, const OpGraphConstRef op_graph, vertex v, double &op_execution_time, double &phi_extra_time, double current_starting_time, double setup_hold_time) |
void | compute_starting_ending_time_asap (const CustomUnorderedSet< vertex > &operations, const vertex v, const unsigned int fu_type, const ControlStep cs, double ¤t_starting_time, double ¤t_ending_time, double &stage_period, bool &cannot_be_chained, fu_bindingRef res_binding, const ScheduleConstRef schedule, double &phi_extra_time, double setup_hold_time, CustomMap< std::pair< unsigned int, unsigned int >, double > &local_connection_map) |
Given the control step in which an operation is scheduled, compute the exact starting and ending time of an operation. More... | |
bool | BB_update_resources_use (unsigned int &used_resources, const unsigned int fu_type) const |
Update the resource map. More... | |
void | add_to_priority_queues (PriorityQueues &priority_queue, std::set< unsigned int, resource_ordering_functor > &ready_resources, const vertex v) const |
Adds the vertex v to the priority queues. More... | |
bool | store_in_chaining_with_load_in (const CustomUnorderedSet< vertex > &operations, unsigned int current_vertex_cstep, vertex v) |
store_in_chaining_with_load checks if a store is chained with a load operation or vice versa More... | |
bool | store_in_chaining_with_load_out (const CustomUnorderedSet< vertex > &operations, unsigned int current_vertex_cstep, vertex v) |
bool | check_non_direct_operation_chaining (const CustomUnorderedSet< vertex > &operations, vertex current_v, unsigned int v_fu_type, const ControlStep cs, const ScheduleConstRef schedule, fu_bindingRef res_binding) const |
bool | check_direct_operation_chaining (const CustomUnorderedSet< vertex > &operations, vertex current_v, const ControlStep cs, const ScheduleConstRef schedule, fu_bindingRef res_binding) const |
bool | check_LOAD_chaining (const CustomUnorderedSet< vertex > &operations, vertex current_v, const ControlStep cs, const ScheduleConstRef schedule) const |
void | CheckSchedulabilityConditions (const CustomUnorderedSet< vertex > &operations, const vertex ¤t_vertex, ControlStep current_cycle, double ¤t_starting_time, double ¤t_ending_time, double ¤t_stage_period, CustomMap< std::pair< unsigned int, unsigned int >, double > &local_connection_map, double current_cycle_starting_time, double current_cycle_ending_time, double setup_hold_time, double &phi_extra_time, double scheduling_mux_margins, bool unbounded, bool unbounded_Functions, bool LoadStoreOp, const std::set< std::string > &proxy_functions_used, bool cstep_has_RET_conflict, unsigned int fu_type, const vertex2obj< ControlStep > ¤t_ASAP, const fu_bindingRef res_binding, const ScheduleRef schedule, bool &predecessorsCond, bool &pipeliningCond, bool &cannotBeChained0, bool &chainingRetCond, bool &cannotBeChained1, bool &asyncCond, bool &cannotBeChained2, bool &cannotBeChained3, bool &MultiCond0, bool &MultiCond1, bool &LoadStoreFunctionConflict, bool &FunctionStoreconflict, bool &proxyFunCond, bool unbounded_RW, bool seeMulticycle) |
const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > | ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const override |
Compute the relationship of this step. More... | |
void | compute_function_topological_order () |
compute_function_topological_order compute reachable function topological order More... | |
Private Attributes | |
const ParametricListBased_Metric | parametric_list_based_metric |
The used metric. More... | |
OpGraphConstRef | flow_graph |
The dependence graph. More... | |
OpGraphConstRef | flow_graph_with_feedbacks |
The dependence graph with feedbacks. More... | |
vertex2float | starting_time |
The starting time given the scheduling (used for chaining) More... | |
OpVertexMap< double > | ending_time |
The ending time given the scheduling (used for chaining) More... | |
double | clock_cycle |
The clock cycle. More... | |
CustomUnorderedMapUnstable< std::pair< vertex, unsigned int >, bool > | is_complex |
memoization table used for connection estimation More... | |
std::map< std::string, std::set< std::string > > | reachable_proxy_functions |
reachable proxy from a given function More... | |
Static Private Attributes | |
static const double | EPSILON = 0.000000001 |
Additional Inherited Members | |
Public Types inherited from DesignFlowStep | |
enum | RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP } |
The relationship type. More... | |
Static Public Member Functions inherited from HLSFunctionStep | |
static std::string | ComputeSignature (const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization, const unsigned int function_id) |
Compute the signature of a hls flow step. More... | |
Static Public Member Functions inherited from HLS_step | |
static std::string | EnumToName (const HLSFlowStep_Type hls_flow_step_type) |
Given a HLS flow step type, return the name of the type. More... | |
static const std::string | ComputeSignature (const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization) |
Compute the signature of a hls flow step. More... | |
Protected Member Functions inherited from HLSFunctionStep | |
void | ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override |
Compute the relationships of a step with other steps. More... | |
Protected Attributes inherited from Scheduling | |
CustomUnorderedMap< vertex, bool > | spec |
Map for speculation property of each operation vertex. More... | |
const bool | speculation |
flag to check speculation More... | |
Protected Attributes inherited from HLSFunctionStep | |
std::map< unsigned int, unsigned int > | last_bb_ver |
last bb version of the called functions More... | |
std::map< unsigned int, unsigned int > | last_bitvalue_ver |
The version of bit value IR representation on which this step was applied. More... | |
const unsigned int | funId |
identifier of the function to be processed (0 means that it is a global step) More... | |
hlsRef | HLS |
HLS data structure of the function to be analyzed. More... | |
unsigned int | bb_version |
The version of bb intermediate representation on which this step was applied. More... | |
unsigned int | bitvalue_version |
The version of bitvalue on which this step was applied. More... | |
unsigned int | memory_version |
The version of memory representation on which this step was applied. More... | |
Protected Attributes inherited from HLS_step | |
const HLS_managerRef | HLSMgr |
information about all the HLS synthesis More... | |
const HLSFlowStep_Type | hls_flow_step_type |
The type of this step. More... | |
const HLSFlowStepSpecializationConstRef | hls_flow_step_specialization |
The information about specialization. More... | |
Protected Attributes inherited from DesignFlowStep | |
bool | composed |
True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More... | |
const Wrefcount< const DesignFlowManager > | design_flow_manager |
The design flow manager. More... | |
const ParameterConstRef | parameters |
Set of input parameters. More... | |
int | debug_level |
The debug level. More... | |
const int | output_level |
The output level. More... | |
Static Protected Attributes inherited from HLS_step | |
static CustomUnorderedMap< std::string, HLSFlowStep_Type > | command_line_name_to_enum |
Map hls step name to enum. More... | |
Class managing list based scheduling algorithms.
Definition at line 144 of file parametric_list_based.hpp.
parametric_list_based::parametric_list_based | ( | const ParameterConstRef | parameters, |
const HLS_managerRef | HLSMgr, | ||
unsigned int | _funId, | ||
const DesignFlowManagerConstRef | design_flow_manager, | ||
const HLSFlowStepSpecializationConstRef | hls_flow_step_specialization | ||
) |
This is the constructor of the list_based.
parameters | is the set of input parameters |
HLSmgr | is the HLS manager |
function_id | is the function index of the function |
design_flow_manager | is the hls design flow |
hls_flow_step_specialization | specifies how specialize this step |
Definition at line 318 of file parametric_list_based.cpp.
References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~parametric_list_based().
|
overridedefault |
|
private |
Adds the vertex v to the priority queues.
priority_trees | are the priority_queues |
ready_resources | is the set of resources which have at least one ready operation |
v | is the vertex. |
Definition at line 1762 of file parametric_list_based.cpp.
References hls::allocation_information, AllocationInformation::can_implement_set(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, flow_graph, AllocationInformation::get_fu_name(), GET_NAME, HLSFunctionStep::HLS, INDENT_DBG_MEX, and AllocationInformation::is_vertex_bounded_with().
Referenced by exec().
|
private |
Update the resource map.
used_resources_fu | is the resource map. |
fu_type | is the functional unit type on which operation is scheduled |
Definition at line 1749 of file parametric_list_based.cpp.
References hls::allocation_information, AllocationInformation::get_number_fu(), and HLSFunctionStep::HLS.
Referenced by exec().
|
private |
compute the set of operations on the control step frontier
Definition at line 2099 of file parametric_list_based.cpp.
References hls::allocation_information, flow_graph, fu_binding::get_assign(), GET_TYPE, HLSFunctionStep::HLS, AllocationInformation::is_direct_access_memory_unit(), and TYPE_LOAD.
|
private |
compute the set of operations on the control step frontier
Definition at line 2140 of file parametric_list_based.cpp.
References flow_graph, GET_TYPE, and TYPE_LOAD.
Referenced by compute_starting_ending_time_asap().
|
private |
Set of already analyzed operations
compute the set of operations on the control step frontier
Definition at line 2039 of file parametric_list_based.cpp.
References hls::allocation_information, flow_graph, fu_binding::get_assign(), AllocationInformation::get_memory_var(), AllocationInformation::get_number_channels(), AllocationInformation::get_proxy_memory_var(), GET_TYPE, HLSFunctionStep::HLS, HLS_step::HLSMgr, AllocationInformation::is_indirect_access_memory_unit(), AllocationInformation::is_memory_unit(), AllocationInformation::is_one_cycle_direct_access_memory_unit(), AllocationInformation::is_readonly_memory_unit(), hls::Param, DesignFlowStep::parameters, REMOVE_DIRECT_TO_INDIRECT, and TYPE_LOAD.
Referenced by compute_starting_ending_time_asap().
|
private |
Definition at line 365 of file parametric_list_based.cpp.
References hls::allocation_information, OpGraph::CGetOpNodeInfo(), clock_cycle, compute_starting_ending_time_asap(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, EPSILON, AllocationInformation::EstimateControllerDelay(), flow_graph, Schedule::get_cstep(), AllocationInformation::get_cycles(), AllocationInformation::get_initiation_time(), AllocationInformation::get_memory_var(), GET_NAME, AllocationInformation::get_number_channels(), AllocationInformation::get_proxy_memory_var(), GET_TYPE, has_element_in_common(), HLSFunctionStep::HLS, HLS_step::HLSMgr, INDENT_DBG_MEX, AllocationInformation::is_memory_unit(), AllocationInformation::is_one_cycle_direct_access_memory_unit(), AllocationInformation::is_operation_bounded(), AllocationInformation::is_operation_PI_registered(), AllocationInformation::is_readonly_memory_unit(), hls::Param, DesignFlowStep::parameters, reachable_proxy_functions, TYPE_EXTERNAL, TYPE_LOAD, TYPE_PHI, TYPE_RET, TYPE_RW, TYPE_STORE, TYPE_VPHI, and U.
Referenced by exec().
|
private |
check for PHIs attached to the output. They may require one or more muxes.
corrections for the memory controllers
corrections in case the unit first fits in a clock period and then after all the additions does not fit anymore
recompute the execution time from scratch
Stage period has already been used for computing ending time of operation If the operation has registered inputs, the stage period of first stage is 0 (mux delay is described by connection time)
Definition at line 1657 of file parametric_list_based.cpp.
References hls::allocation_information, OpGraph::CGetOpNodeInfo(), clock_cycle, DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, EPSILON, flow_graph, flow_graph_with_feedbacks, from_strongtype_cast(), AllocationInformation::get_correction_time(), AllocationInformation::get_cycles(), AllocationInformation::get_execution_time(), AllocationInformation::get_initiation_time(), GET_NAME, AllocationInformation::GetConnectionTime(), AllocationInformation::GetFuType(), AllocationInformation::GetTimeLatency(), HLSFunctionStep::HLS, INDENT_DBG_MEX, AllocationInformation::is_indirect_access_memory_unit(), AllocationInformation::is_operation_PI_registered(), max, AllocationInformation::mux_time_unit(), DesignFlowStep::parameters, SCALAR, STR, THROW_ERROR, and USE.
Referenced by compute_starting_ending_time_asap().
|
private |
compute_function_topological_order compute reachable function topological order
Definition at line 1795 of file parametric_list_based.cpp.
References DesignFlowStep::debug_level, DEBUG_LEVEL_VERBOSE, HLSFunctionStep::funId, HLS_step::HLSMgr, PRINT_DBG_MEX, and reachable_proxy_functions.
Referenced by InternalExec().
|
private |
Given the control step in which an operation is scheduled, compute the exact starting and ending time of an operation.
v | is the vertex of the operation |
fu_type | is the functional unit type |
cs | is the control step |
current_starting_time | is where starting_time will be stored |
current_ending_time | is where ending_time will be stored |
stage_period | is the minimum period of the pipelined unit fu_type |
ending time is equal to the connection time plus the maximum between the controller time and the operation ending time
Check for chaining
Definition at line 1550 of file parametric_list_based.cpp.
References hls::allocation_information, AllocationInformation::CanBeChained(), OpGraph::CGetOpNodeInfo(), check_LOAD_chaining(), check_non_direct_operation_chaining(), clock_cycle, compute_exec_stage_time(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERBOSE, DEBUG_LEVEL_VERY_PEDANTIC, ending_time, AllocationInformation::estimate_controller_delay_fb(), AllocationInformation::EstimateControllerDelay(), flow_graph, from_strongtype_cast(), fu_binding::get_assign(), AllocationInformation::get_memory_var(), GET_NAME, AllocationInformation::get_number_channels(), AllocationInformation::get_proxy_memory_var(), GET_TYPE, AllocationInformation::GetConnectionTime(), HLSFunctionStep::HLS, HLS_step::HLSMgr, INDENT_DBG_MEX, AllocationInformation::is_memory_unit(), AllocationInformation::is_one_cycle_direct_access_memory_unit(), AllocationInformation::is_readonly_memory_unit(), max, DesignFlowStep::parameters, PRINT_DBG_MEX, starting_time, STR, TYPE_IF, TYPE_LOAD, TYPE_MULTIIF, TYPE_PHI, TYPE_STORE, TYPE_SWITCH, and TYPE_VPHI.
Referenced by CheckSchedulabilityConditions().
|
overrideprivatevirtual |
Compute the relationship of this step.
relationship_type | is the type of relationship to be considered |
Reimplemented from Scheduling.
Definition at line 2178 of file parametric_list_based.cpp.
References Scheduling::ComputeHLSRelationships(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DOMINATOR_ALLOCATION, HLSFunctionStep::funId, HLS_step::HLSMgr, DesignFlowStep::INVALIDATION_RELATIONSHIP, DesignFlowStep::parameters, DesignFlowStep::PRECEDENCE_RELATIONSHIP, SAME_FUNCTION, THROW_UNREACHABLE, and WHOLE_APPLICATION.
void parametric_list_based::exec | ( | const OpVertexSet & | operations, |
ControlStep | current_cycle | ||
) |
Function that computes the List-Based scheduling of the graph.
The scheduling
Current ASAP
The binding
Number of predecessors of a vertex already scheduled
The clock cycle
The setup+hold time delay
The set of resources for which the list of ready operations is not empty
Set of ready operations (needed for update priority)
vertices still live at the beginning of the current control step
select the type of graph
Number of operation to be scheduled
compute asap and alap
compute the set of vertices without input edges. At least one vertex is expected
Updating structure for already scheduled operations
Check if all its predecessors have been scheduled. In this case the vertex is ready
Setting priority
priory queues set up
definition of the data structure used to check if a resource is available given a vertex in case a vertex is not included in a map this mean that the used resources are zero. First index is the functional unit type, second index is the controller node, third index is the condition
Operations which can be scheduled in this control step because precedences are satisfied, but they can't be scheduled in this control step for some reasons Index is the functional unit type
Adding information about operation still live
Ignore empty list
Ignore already scheduled operation
remove current_vertex from the queue
true if operation is schedulable check if there exist enough resources available
check compatibility
put these type of operations as last operation scheduled for the basic block
starting time of the operation
ending time of the operation
stage period for pipelined units
checking if predecessors have finished
scheduling is now possible
update resource usage
check if we have functions accessing the memory
check if we have unbounded resources
check if we have memory accesses
update cstep_vuses
set the schedule information
check if we have operations taking more than one cycle
set the binding information
Check if some successors have become ready
check if to_v should be considered as ready
update priorities and possibly rehash the queues
clear the vuses
move to the next cycle
Definition at line 522 of file parametric_list_based.cpp.
References add_to_priority_queues(), Schedule::AddConnectionTimes(), ASLAP::ALAP_fast, ASLAP::ALAP_with_partial_scheduling, hls::allocation_information, BB_update_resources_use(), fu_binding::bind(), FunctionBehavior::CFG, OpGraph::CGetOpGraphInfo(), OpGraph::CGetOpNodeInfo(), check_if_is_live_in_next_cycle(), CheckSchedulabilityConditions(), clock_cycle, CTRL_STEP_MULTIPLIER, DesignFlowStep::debug_level, DEBUG_LEVEL_VERBOSE, DEBUG_LEVEL_VERY_PEDANTIC, DYNAMIC_MOBILITY, ending_time, Schedule::ending_times, FunctionBehavior::FFLSAODG, flow_graph, flow_graph_with_feedbacks, FunctionBehavior::FLSAODG, from_strongtype_cast(), HLSFunctionStep::funId, fu_binding::get_assign(), AllocationInformation::get_execution_time(), AllocationInformation::get_fu_name(), AllocationInformation::get_initiation_time(), AllocationInformation::get_memory_var(), GET_NAME, AllocationInformation::get_number_fu(), AllocationInformation::get_number_fu_types(), AllocationInformation::get_proxy_memory_var(), AllocationInformation::get_setup_hold_time(), GET_TYPE, tree_helper::GetMangledFunctionName(), HLSFunctionStep::HLS, hls::HLS_C, HLS_step::HLSMgr, INDENT_DBG_MEX, AllocationInformation::is_direct_access_memory_unit(), AllocationInformation::is_memory_unit(), AllocationInformation::is_operation_bounded(), Schedule::is_scheduled(), max, AllocationInformation::mux_time_unit(), Schedule::num_scheduled(), DesignFlowStep::parameters, parametric_list_based_metric, PRINT_DBG_MEX, reachable_proxy_functions, hls::Rfu, hls::Rsch, Schedule::set_csteps(), Schedule::set_execution(), Schedule::set_execution_end(), FunctionBehavior::SG, Scheduling::speculation, starting_time, Schedule::starting_times, STATIC_FIXED, STATIC_MOBILITY, STR, lenet_tvm::target, THROW_ASSERT, THROW_ERROR, THROW_UNREACHABLE, THROW_WARNING, TYPE_EXTERNAL, TYPE_FOR, TYPE_GOTO, TYPE_IF, TYPE_LOAD, TYPE_MULTIIF, TYPE_RET, TYPE_RW, TYPE_STORE, TYPE_SWITCH, and TYPE_WHILE.
Referenced by InternalExec().
|
overridevirtual |
Initialize the step (i.e., like a constructor, but executed just before exec.
Reimplemented from HLSFunctionStep.
Definition at line 337 of file parametric_list_based.cpp.
References FunctionBehavior::CFG, FunctionBehavior::CGetOpGraph(), ending_time, HLSFunctionStep::funId, HLS_step::HLSMgr, and Scheduling::Initialize().
|
overridevirtual |
Execute the step.
initialize topological_sorted_functions
Find the minimum slack
Implements HLSFunctionStep.
Definition at line 1839 of file parametric_list_based.cpp.
References hls::allocation_information, FunctionBehavior::CFG, FunctionBehavior::CGetBBGraph(), BBGraph::CGetBBNodeInfo(), FunctionBehavior::CGetBehavioralHelper(), FunctionBehavior::CGetOpGraph(), clock_cycle, compute_function_topological_order(), xml_document::create_root_node(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERBOSE, ending_time, EPSILON, exec(), FunctionBehavior::FDFG, flow_graph, from_strongtype_cast(), FunctionBehavior::FSDG, HLSFunctionStep::funId, Schedule::get_cstep_end(), Schedule::get_csteps(), BehavioralHelper::get_function_name(), GET_NAME, AllocationInformation::get_setup_hold_time(), Scheduling::get_spec(), AllocationInformation::getMinimumSlack(), GetPath(), HLSFunctionStep::HLS, hls::HLS_C, HLS_step::HLSMgr, INDENT_OUT_MEX, max, min, hls::operations, DesignFlowStep::output_level, OUTPUT_LEVEL_MINIMUM, OUTPUT_LEVEL_PEDANTIC, OUTPUT_LEVEL_VERY_PEDANTIC, DesignFlowStep::parameters, Schedule::print(), print_cpu_time(), PRINT_DBG_MEX, hls::Rfu, hls::Rsch, Schedule::set_spec(), AllocationInformation::setMinimumSlack(), START_TIME, STOP_TIME, STR, SUCCESS, xml_document::write_to_file_formatted(), Schedule::WriteDot(), and hls::xwrite().
|
private |
store_in_chaining_with_load checks if a store is chained with a load operation or vice versa
current_vertex_cstep | control step of vertex v |
v | vertex considered |
Definition at line 1954 of file parametric_list_based.cpp.
References OpGraph::CGetOpNodeInfo(), clock_cycle, ending_time, flow_graph, GET_TYPE, TYPE_LOAD, and TYPE_STORE.
|
private |
Definition at line 1996 of file parametric_list_based.cpp.
References OpGraph::CGetOpNodeInfo(), clock_cycle, flow_graph, GET_TYPE, starting_time, TYPE_LOAD, and TYPE_STORE.
|
private |
The clock cycle.
Definition at line 169 of file parametric_list_based.hpp.
Referenced by CheckSchedulabilityConditions(), compute_exec_stage_time(), compute_starting_ending_time_asap(), exec(), InternalExec(), store_in_chaining_with_load_in(), and store_in_chaining_with_load_out().
|
private |
The ending time given the scheduling (used for chaining)
Definition at line 166 of file parametric_list_based.hpp.
Referenced by compute_starting_ending_time_asap(), exec(), Initialize(), InternalExec(), and store_in_chaining_with_load_in().
|
staticprivate |
Definition at line 147 of file parametric_list_based.hpp.
Referenced by CheckSchedulabilityConditions(), compute_exec_stage_time(), and InternalExec().
|
private |
The dependence graph.
Definition at line 157 of file parametric_list_based.hpp.
Referenced by add_to_priority_queues(), check_direct_operation_chaining(), check_LOAD_chaining(), check_non_direct_operation_chaining(), CheckSchedulabilityConditions(), compute_exec_stage_time(), compute_starting_ending_time_asap(), exec(), InternalExec(), store_in_chaining_with_load_in(), and store_in_chaining_with_load_out().
|
private |
The dependence graph with feedbacks.
Definition at line 160 of file parametric_list_based.hpp.
Referenced by compute_exec_stage_time(), and exec().
|
private |
memoization table used for connection estimation
Definition at line 172 of file parametric_list_based.hpp.
|
private |
|
private |
reachable proxy from a given function
Definition at line 175 of file parametric_list_based.hpp.
Referenced by CheckSchedulabilityConditions(), compute_function_topological_order(), and exec().
|
private |
The starting time given the scheduling (used for chaining)
Definition at line 163 of file parametric_list_based.hpp.
Referenced by compute_starting_ending_time_asap(), exec(), and store_in_chaining_with_load_out().