!!!! 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);