!!!! CycleBased.xcc
Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechinst.com). Szymon Cichy (szymon.cichygmail.com).
Copyright 2002 - 2007 STMicroelectronics. Copyright 1995 - 1998 Commissariat a l'Energie Atomique.
This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.
CycleBased_CreateScheduleContext -- Creates context for CycleBased scheduler.
void CycleBased_CreateScheduleContext(int32_t nodeCount, int32_t arcCount, CycleBasedScheduleContext context);
CycleBased_ReleaseScheduleContext -- Releases CycleBased scheduler's context.
void CycleBased_ReleaseScheduleContext(CycleBasedScheduleContext context);
CycleBased_NoResourceConstraints -- Checks if there are free resources for an operation.
Return: boolean success if there are free resources.
bool CycleBased_NoResourceConstraints(CycleBasedNodeId nodeId, int resourceUsageMap[], CycleBasedResourceContext context);
CycleBased_AddResourceUsage -- Adds used by a node resources to the resourceUsageMap.
void CycleBased_AddResourcesUsage(CycleBasedNodeId nodeId, int resourceUsageMap[], CycleBasedResourceContext context);
CycleBased_ReleaseResourcesUsage -- Removes used by a node resource from the resourceUsageMap.
void CycleBased_ReleaseResourcesUsage(CycleBasedNodeId nodeId, int resourceUsageMap[], CycleBasedResourceContext context);
CycleBased_ClearResourcesUsage -- Clears the resourceUsageMap so all resources are available.
void CycleBased_ClearResourcesUsage(int resourceUsageMap[], CycleBasedResourceContext context);
CycleBased_ResourceAvailabilityInit -- Initializes the resourceUsageMap.
void CycleBased_ResourceAvailabilityInit(Scheduler scheduler, CycleBasedResourceContext resourceContext);
CycleBased_ReservationTableInit -- Initializes the reservationsMap.
void CycleBased_ReservationTableInit(DDGraphNode node, CycleBasedNodeId nodeId, int reservationsMap[]);
CycleBased_GetSinkNodes -- Gets all sink nodes from DDG and puts them into bfsList.
void CycleBased_GetSinkNodes(IDList bfsList, CycleBasedScheduleContext context);
CycleBased_CalculatePriorities -- Calculates priorities for all nodes from DDG using Critical Path algorithm.
void CycleBased_CalculatePriorities(void (*getSinkNodes)(IDList bfsList, CycleBasedScheduleContext context), CycleBasedScheduleContext context);
CycleBased_PickReadyAtCurrCycle -- Default interface function which picks all ready operations from readyList that can be scheduled at current cycle.
void CycleBased_PickReadyAtCurrCycle(CycleBasedCycle cycle, CycleBasedScheduleContext context);
CycleBased_callbackPreScheduleNode -- Default interface function invoked before scheduling an operation. Depending on its result an operation may be scheduled or not.
Return: bool success if an operation can be scheduled.
bool CycleBased_callbackPreScheduleNode(CycleBasedNodeId nodeId, CycleBasedCycle cycle, CycleBasedScheduleContext context);
CycleBased_callbackPreUnScheduleNode -- Default interface function invoked before unscheduling an operation.
void CycleBased_callbackPreUnScheduleNode(CycleBasedNodeId nodeId, CycleBasedCycle cycle, CycleBasedScheduleContext context);
CycleBased_callbackPostScheduleNode -- Default interface function invoked after scheduling an operation.
void CycleBased_callbackPostScheduleNode(CycleBasedNodeId nodeId, CycleBasedCycle cycle, CycleBasedScheduleContext context);
CycleBased_callbackNewCycle -- Default interface function invoked at the beginning of each new cycle.
void CycleBased_callbackNewCycle(CycleBasedCycle cycle, CycleBasedScheduleContext context);
CycleBased_Schedule -- Creates a schedule.
bool CycleBased_Schedule(CycleBasedScheduleContext context, CycleBasedScheduleInterface interface);
CycleBased_NotInnerLoopSchedule -- Prepares data for a not inner loop schedule creation and afterwards creates it.
int CycleBased_NotInnerLoopSchedule(Scheduler scheduler, int scheduleDates[], DDGraph mcrlGraph, int32_t firstIndex, int32_t lastIndex);
CycleBased_CreateMCRContext -- Creates context for Minimum Cycle Ratio algorithm.
void CycleBased_CreateMCRContext(int32_t nodeCount, int32_t arcCount, CycleBasedMCRContext context);
CycleBased_ReleaseMCRContext -- Releases Minimum Cycle Ratio algorithm's context.
void CycleBased_ReleaseMCRContext(CycleBasedMCRContext context);
CycleBased_FindMinII -- Finds minimum II for DDG.
Return: int minimum initiation interval.
int CycleBased_FindMinII(DDGraph mcrlGraph, int32_t firstIndex, int32_t lastIndex);