7. Conclusions
In this chapter, we have discussed algorithms for the scheduling step of HLS. We have covered four heuristic based algorithms namely, ASAP, ALAP, Force Directed scheduling and List Scheduling; among them, the first three algorithms are for time constrained scheduling while the fourth one caters to resource constrained scheduling. In addition, we have discussed 0-1 ILP method of scheduling, which being an exact algorithm, always gives optimal result.
In this lecture, we have kept several things simple. First, we assumed that all types of operators have same cost in terms of resource requirements. However, in a real situation some operators involve much more hardware than others do, e.g., a multiplier involves much more area than an adder or subtractor.
Therefore, our scheduling algorithms need to consider also the cost of hardware of the operators. For example, if there is one schedule that leads to four adders and one multiplier while the second requires two adders and two multipliers, we should go for the first schedule. Even if the first schedule requires more number of operators, the second will lead to higher area because, in general, a multiplier consumers more area than an adder (of same bit width).
Secondly, we assume that each operator takes one control step to do the operation. However, in a real situation some operators take more time to complete the computation, e.g., a multiplier involves much more time for computation than an adder or subtractor of similar bit width. In the situations discussed in the lecture, we considered same size of the control steps, which implies that the slowest operator will determine the step size, thereby leading to idle times for the fast operators. To improve efficiency of the operators, size of control steps, which involve slow operators, may be kept higher while those involving fast operators may be kept lower; this however, complicates clocking mechanism. To cater to this problem, size of control steps are kept same, but (slow) operators are scheduled for more than one steps. So the corresponding scheduling algorithms should be capable of handling multiple steps scheduling of operators.
Third, we assume that each operator can perform only one function. However, in practice most of the operators are capable of doing multiple types of operations e.g., an adder can do both addition and subtraction (with slight modification) [2]. So the scheduling algorithms should also consider the aspect of operators with multiple capabilities. For details of scheduling algorithms that accommodate these complex requirements the reader is referred to [3]. Also, under these requirements, allocation no longer remains a simple searching problem (from the design library). For example, in area-constrained designs, allocation is done first, that satisfies the constraint under question, and then allocation determines the duration of the corresponding control steps. In time-area-constrained designs, allocation needs to be done keeping in mind both area and time required for computation by the allocated modules; the details of allocation under these complex requirements can be found in [4,5].