Scheduling algorithm

This is an implementation of ASAP scheduling algorithm, ALAP scheduling algorithm and LIST_L scheduling algorithm.

It is assumed that:
    + ALU will do the arithmetical operations: +, -, >,<, etc.
    + Multiplier: *
    + Divisor: /

LIST_L scheduling algorithm: (adjusted from the book: Synthesis and Optimizations of Digital Circuits by Giovanni De Micheli)


{

            Repeat until all vertices determined {

                        Determined the distance label between vertex Vi and sink;

             }



Repeat until all non-leaf vertices are scheduled: {

                        Repeat for each source type

                          {

                                      Determine ready vertices U;

                                      Determine unfinished vertices T;

                                      Select S Є U;

                                      Schedule S at clock cycle l;

                           }

                            l = l + 1;

            }                                           

            return (t);

}



ALAP scheduling algorithm:
(adjusted from the book: Synthesis and Optimizations of Digital Circuits by Giovanni De Micheli)



ALAP_Algorithm(DFG(V,E), λ)

{

            Repeat until all leaf vertices are scheduled:

            {

                        Schedule a leaf vertex Vi by setting ti = λ + 1 - di;

                        Set the status of leaf vertex ti as scheduled;

             }



Repeat until all non-leaf vertices are scheduled:

            {

                        Schedule vertex Vj whose successors are all scheduled;

                        Set tj = Min{ti - dj}; //Vj is a successor vertex of Vi

            }                                            //dj is execution delay of Vj

            return (t);

}


ASAP scheduling algorithm: (adjusted from the book: Synthesis and Optimizations of Digital Circuits by Giovanni De Micheli)


ASAP_Algorithm(DFG(V,E))

{

Schedule all root vertices and set the start time to to = 1;

Repeat until all non-root vertices are scheduled;

            {

                        Schedule vertex Vi whose predecessors are scheduled;

                        Set ti = Max{tj + dj}; //Vj is a predecessor vertex of Vi

            }                                            //dj is execution delay of Vj

            return (t);

}


The input of this program is the text file which contains information of data flow graph.

For the data flow graph as below:

Above DFG will be mapped into the text file as following:

If the third value, resource constraint, is -1, then there is no resource constraint for that functional unit.
For example:
(ALU,1,-1) : ALU operation's execution delay is 1 clock cycle, no resource constraints.

Anyway, this tool assumes that ASAP and ALAP have no resource constraint which means that the third parameter in [Functional Unit Attribute] will be ignored for these 2 algorithms. It just affects the LIST_L algorithm.

Below is the interface of the program, and the result:



Running for ASAP scheduling algorithm:

For LIST_L algorithm:


No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...