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