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)
ALAP scheduling algorithm:
(adjusted from the book: Synthesis and Optimizations of Digital Circuits by Giovanni De Micheli)
ASAP scheduling algorithm: (adjusted from the book: Synthesis and Optimizations of Digital Circuits by Giovanni De Micheli)
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:
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