Design Verification and Test of Digital VLSI Circuits NPTEL Video Course
Design Verification and Test of Digital VLSI Circuits NPTEL Video Course
Introduction
The functionality of electronics equipments and gadgets has achieved a
phenomenal while their physical sizes and weights have come down drastically.
The major reason is due to the rapid advances in integration technologies, which
enables fabrication of millions of transistors in a single Integrated Circuit (IC) or
chip.
IC (used interchangeably with chip in this course) is a device having multiple
transistors with interconnects manufactured on a single silicon substrate.
Integration with a complexity of 10s of transistors is called Small Scale Integration,
with 100s is Medium Scale Integration (MSI), with 1000s is Large Scale Integration
(LSI), with 10,000 it is Very Large Scale Integration (VLSI)
Systems of systems can be implemented in a VLSI IC. However, with this rise in
functionality of VLSI ICs, design problem has become huge and complex.
Introduction
To
address this complexly issue, after the design specifications are complete
almost all the other steps are automated using CAD tools.
However, even designs automated using CAD tools may have bugs.
In VLSI designs millions of transistors are packed into a single chip. This leads to
manufacturing defects and all the chips need to be physically tested by giving input
signals from a pattern generator and comparing responses using a logic analyzer;
this process is called Testing.
Introduction
VLSI ICs can be divided into analog, digital or mixed-signal (both analog and
digital on the same chip) based on their functionality.
Digital ICs can contain logic gates, flip-flops, multiplexers,
Work using binary mathematics to process "one" and "zero" signals.
Analog ICs, such as current mirrors, voltage followers, filters, OPAMPs etc. work by
processing continuous signals.
When single IC has both analog and digital components it is called mixed signal IC
e.g, Analog to Digital Converter (ADC).
The automation algorithms and CAD tools are mainly available for digital ICs
because transformation of design specifications to silicon implementation can be
accomplished using logical procedures (which can be converted to algorithms and
tools).
However, most of the analog circuits design is like an art which is best
performed by designers with aid of some CAD tools (which provides feedback to
designer if the manual design is progressing fine etc.)
Introduction
In this course we will deal only with digital VLSI circuits. Henceforth, in this course
VLSI IC would imply digital VLSI ICs only and whenever we want to discuss about
analog or mixed signal ICs it will be mentioned explicitly. Also, in this course the
terms ICs and chips would mean VLSI ICs and chips.
This course is concerned with algorithms required to automate the three steps
DESIGN-VERIFICATION-TEST for Digital VLSI ICs.
The HLS tool first schedules the computations (required to meet the
specifications) at different control steps.
Following that, depending on availability of hardware units and time
constraints, the scheduled computations (comprising instructions and variables)
are allocated and binded to the hardware units like adders, multipliers,
multiplexors, registers, wires etc.
out1
out2
1 bit adder
"out1=a+b"
+
out1
Register2
Register1
out1
Register2
d
+
1 bit adder
"out2=c+d"
out2
out2
Register2
b
adder1
"out1=a+b"
Register3
Register4
adder2
"out2=c+d"
out1
out2
control
Mux
Mux
Register2
Register1
adder
out1
out2
After HLS, RTL circuits are transformed into logic gate level implementation; the
step is called logic synthesis.
This example being very simple, we can see that both specifications and the
model are equivalent. Formal techniques for checking equivalence can be will
be elaborated in VERIFICATION section of the course.
control
read b
read a
control=1/1
read d
read c
s1
s0
control=0/0
write out1
write out2
Will illustrate synthesis only for the adder module and for the rest, similar
procedure holds. Details will be explained in the DESIGN module of the
course.
We first determine the Boolean function of the adder module, in terms of mean
terms.
a
0
0
1
1
b
0
1
0
1
Out1(sum)
0
1
1
0
Out1(carry)
0
0
0
1
Out1(sum)
a
b
a
Out1(carry)
b
In backend we start with a software version of the silicon die where the chip will
be finally fabricated.
Broad plan regarding placement of gates, flip-flops etc. (output of logic
synthesis) in appropriate places in the software representation of the chip;
this process is called Floorplan.
Exact locations in the die (software representation) where the circuit
components are placed; this is called Placement.
Required interconnections (as given in the logic circuit) among the gates
that are placed in exact positions in the die; this process is called routing.
Out1(sum)
a
b
a
Out1(carry)
b
Out1(sum)
(0 if fault is there
else 1)
a=1
b=0
(0 if fault is there
else 1)
Introduction
Almost all steps of VLSI design are automated.
Any automated procedure requires that input data being provided is in some
predefined format. Also, the models used to represent the inputs and
transformations (changes of the input) should be efficient for execution of the
procedure.
For example, in case of HLS the input specifications are generally in some
Hardware Definition Language (HDSs) like Verilog, VHDL, System C etc.
The HDL specifications are represented using several modeling paradigms like
Control and Data Flow Diagram (CDFG) , DeJongs hybrid flow graph, SSIM flow
graph, Finite state machine with data etc., which are suitable for scheduling,
allocation and binding procedures.
Sometimes timing constrains (on execution of steps) are also given in the
specifications, which are modeled by the above paradigms, however, with timing
parameter included e.g., CDFG with timing, DF with timing and CF with timing.
Introduction
In this lecture, we will discuss CDFG paradigm for modeling of high-level hardware
descriptions (given in Verilog).
CDFG is one of the most widely used modeling paradigm and the others
mentioned above are not much different; for details of other paradigms the reader
may look into the respective references.
In general, the nodes in a CDFG can be classified into one of the following types:
Operational nodes: These are responsible for arithmetic, logical or relational
operations (or computations); e.g., addition, equality checking etc.
Control nodes: These nodes are responsible for control operations like conditions,
loop constructs etc.; e.g., case statements, while loop etc.
Storage nodes: These nodes represent assignment operations associated with
variables and signals; e.g., reading an input value to register etc.
B3
read D
read C
read B
x B4
B5
B6
0
write A
B7
>
C1
0
END
B8
- B9
The edge B1, B4 corresponds to transfer of value of B, which gets changed (i.e., new
value read) due to processing (reading) in B1. The edge B4, B5 corresponds to transfer
of values (B and C to B*C), which get changed due to processing (*) in B4. After the
computation initial begin A: = B * C + D; end, the value is stored in A; this is captured
by storage node B6.
B7, C1 is the control flow edge, which corresponds to the condition (A>0) required
for execution/exit of the while loop.
Node C1 is a control node responsible for deciding data flow direction after the
condition A>0 is checked at B7. If value transferred by B7, C1 is 0 then the loops
exits at B8, else computation A=A-1 is done at B9 and the loop continues.
B1
2.............................n
Bn
B2
B1
Constant
>
C1
F
B3
B2
read B
read D
x
delay
min=50
read B
x
delay
min=90
read D
write A
>
de lay
min=100
END
00
read B
read C
01
Default
read B
read C
read D
read B
read C
read D
read D
write A
write A
write A
It may be noted that this is software concept because in a program only those
parts of a code are executed which satisfy conditional statements like if-thenelse, case etc.
read C
read D
+
-
00
01
write A
Default
For example, reading of B,C,D are required by all the three circuits and they
may be implemented by storage nodes common to all the three circuits.
Also, operational node for B+C is common to circuit for A = B + C + D and
circuit for A = B + C - D, which can be merged.
Introduction
Any VLSI design starts with specifications and the first step is to obtain the
Register Transfer Level (RTL) circuit.
RTL circuit is obtained from specifications using High Level Synthesis (HLS)
algorithms.
As specifications are processed by HLS algorithms, they need to be represented
using some modeling language.
Control and Data Flow Graph (CDFG), is one of the most widely accepted
modeling paradigm for specifications that are processed by HLS tools.
Introduction
In last Lecture , we saw several examples where specifications written in terms of
Verilog were translated into CDFGs. In the examples, there was almost one-to-one
mapping of the lines of Verlog codes with CDFG nodes and edges.
It must be noted that specifications and HDL codes are written by humans, which
have errors, redundancies and may be inefficient. So, before processing the CDGFs
using HLS tools we need to do some transformations to eliminate redundancies,
inefficiencies etc. In this lecture, we will discuss some well-known transformations
made in the CDFGs, which make them more amiable for HLS.
The transformations that can be performed on CDFGs can be classified into the
following broad categories:
Compiler based transformations
Flow-graph based transformations
Hardware library based transformations
read B
read D
read E
read C
read B
read D
x
x
+
+
write F
0
write A
write A
>
>
T
F
END
1
END
read E
write F
Constant folding
An expression
assigned variable= operand1 OPERATOR operand2, OPERATOR operandn
where all the operands are constants can be replaced with the pre-computed final
result directly written to assigned variable.
This principal of code optimization is called constant folding. Expressions, which
involve computations over constants, always generate the same output
irrespective of inputs. So the output of the computation over constants can be
pre-computed by looking statically at the code and that output value can be
directly used. So resources required for computing such expressions can be
avoided.
Constant folding
Given below is a Verilog code having an expression where all the operands are
constants. It may be noted that the computation A = 1 + 2; always results in A
having the value of 3, irrespective of inputs. Also the final value of A (i.e., 3) can be
pre-computed by statically looking at the code. Finally, the expression A = 1 + 2;
can be replaced with A = 3;, which saves an adder and a register.
Const. 1
Const. 2
Const. 2
write A
write A
Read A
write C
Read B
Read A
write D
Read B
Read A
write C
write D
read A
read B
read A
read C
read E
write D
write F
read B
read A
read C
read E
write T1
write D
write F
Dead-computation elimination
Dead-computation elimination is one of the most simple transformation where
a computation that has no effect on the output of a code is eliminated. In the
CDFG the corresponding nodes are eliminated.
module CDFG_tr_example (A,B,C,D);
input [3:0] B,C,D;
reg [3:0] A,E;
output [3:0] A;
initial begin
A = B + C + D;
E = A + 1;
end
endmodule
Dead-computation elimination
read C
read B
read D
read A
+
+
write A
write E
Now, if we have more adders, then some of the sub-computations can be done
in parallel; A+B, C+D and E+F can be done concurrently and results stored in
three temporary variables. Finally G can be determined by adding the
temporary variables. This parallel computation takes 3 steps.
00
read B
read C
01
Default
read B
read C
read D
read B
read C
read D
read D
write A
write A
write A
read C
read D
+
-
00
01
write A
Default
The OR gate implementation consumes less hardware than the comparator, however,
depends of availability of a 6 input OR gate in the library.
Hardware library based transformations are modifications in the operational nodes of a
CDFG, depending on availability of corresponding circuits in the design library, for achieving
efficient circuit implementation in terms of area, frequency, power etc.
read B
read C
read D
read B
read C
read D
1
+
INCR
00
01
write A
Default
00
01
write A
Default
read A
2
<<
write B
write B
left shift
Thank You