Module 7
Module 7
II. The second step of the HLS, which plays a key role in transforming a CDFG
(i.e., behavioral) representation into a RTL (i.e., structural) representation, is
operation-scheduling (called just “scheduling” in HLS terminology).
• Scheduling involves assigning operations of the CDFG to so-called control steps. A
control step usually corresponds to a cycle of the system clock, the basic time unit
of a synchronous digital system.
III. The third step is Allocation, which chooses functional units and storage elements
from the design library.
• The design library has several alternatives for a given functional unit or a storage
unit.
• For example, for a functional unit like adder, there can be many options like ripple-
carry adder, carry-look-ahead-adder etc.
• Similarly, for storage elements there can be different types of registers like registers
with only resets, registers with both pre-sets and resets, registers with pre-sets, resets
and load etc.
• Among the alternatives, the allocation algorithm must select the one that matches the
design constraints best and maximizes the optimization objective.
IV. The fourth step is Binding. After the functional operations and storage operations
are scheduled and components from design library are selected for such operations
(allocation), then comes the role of binding.
• Binding assigns operations to functional units, variables to storage elements and
data transfers to wires or buses such that data can be correctly computed and passed,
according to the scheduling.
V. The final step of HLS is data-path and controller generation. Depending upon the
scheduling and the binding information, interconnection between the circuit
modules of the data-path components are set up; this is called data-path generation.
• Further, an FSM is generated to control all the micro-operations required to control
data-flow in the data-path; this is called controller generation.
Scheduling Problem
• The scheduling problem involves determining the sequence in which the operations
are executed to produce a control step schedule, which specifies the operations that
execute in each control step.
The following four types of scheduling problems
• Un-Constrained Scheduling (UCS) problem
• Time Constrained Scheduling (TCS) problem
• Resource Constrained Scheduling (RCS) problem
• Time-Resource Constrained Scheduling (TRCS) problem
Allocation Problem
• Once a schedule is made (i.e., type of operators are determined along with their
quantity), the allocation task determines the “exact” operator modules, available in
the design library, to be used in implementation of the operators. Also, the area,
power, frequency is determined after allocation.
• • It has description regarding the type of modules (i.e., functionality), sub-types
(namely, fast, slow, typical etc.), area, power, frequency etc. In case of a modern
sub-micron technology, a design library has many more entries namely, leakage
power, current etc.
Binding
• After all the operations are scheduled and allocation is done, we get information regarding
exact type of circuit modules (from the design library) to be used and their numbers.
• We have seen in the allocation step, that operations in a control step are performed by
different modules, however, modules are shared between operations (of same type) that are in
different control steps.
• Further, to store variables (a,b,c,d,e) and intermediate results (temp1,temp2.temp3) we need
registers. Like operational modules, registers can be shared, which do not lie in same control
step. All the above-mentioned steps (after scheduling and allocation) fall under Binding.
The binding task (also called resource-sharing step) assigns the operations and
variables to hardware modules. A resource such as an operational module or register
can be shared by different operations, data accesses, or data transfers if they are
mutually exclusive.
For example, two operations assigned to two different control steps are mutually
exclusive since they will never execute simultaneously; hence, they can be binded to
the same hardware unit. Binding can be classified into three sub-functions:
Storage binding: This step assigns input, output and temporary variables to registers
units. Two variables that are not alive simultaneously (i.e., not required in overlapping
control steps) in a given control step can be assigned to the same register.
Functional-unit binding: This binding step assigns operations to operational modules
(like adder, multiplier etc.). Two operations of same type that are not in a single control
step can be assigned to the same operational module.
Interconnection binding: This step assigns an interconnection unit such as a
multiplexer or a bus to a data transfer.
Thank-You