Module 2:Scheduling, Allocation and Binding

Lecture 4 :Binding Algorithms

1.  Introduction

In the last (double) lecture we disused scheduling algorithms, which is the first step in HLS. After the scheduling process, which assigns control steps to all the operations, in the allocation step, circuit modules from the design library are selected for executing the operations. Once circuit modules are selected, binding is done, which accomplishes the following:

In the next section, we will give a simple example to illustrate these three sub-parts of the binding task. Following that, we will discuss algorithms that automate the binding procedure.

2.  Illustrative Example: Binding of functional units, storages and data-transfer

A schedule of expressions “out1=a+b+c” and “out2=d+e+f” is shown in Figure 1. Let the allocation be as follows:

We need two adders because in control step1 (also in step2) two addition operations are scheduled and each need an adder to operate. Also we need four registers because in step1, we need four variables (storage) namely, a,b,c,d. These four registers can be re-used in step2 for variables temp1,c,temp2,f.


Figure 1. Schedule of expressions “out1=a+b+c” and “out2=d+e+f”

Let us consider the following option of binding (shown in Figure 2):

Operations 01, 02 are binded to adder1

  1. adder1 to register1 (via Mux) is binded to data transfer “temp1=a+b”
  2. Input a to register1 (via Mux) is binded to data transfer “reading a from input bus”
  3. Input b (and c) to register2 (via Mux) is binded to data transfer “reading b from input bus” (“reading c from input bus”)