1
The BIST History of The BIST History of FPGAs FPGAs
Chuck Stroud Chuck Stroud
Electrical and Computer Engineering Electrical and Computer Engineering Auburn University Auburn University
The The BISTory BISTory of
- f FPGAs
The BIST History of FPGAs FPGAs The BIST History of The BISTory - - PowerPoint PPT Presentation
The BIST History of FPGAs FPGAs The BIST History of The BISTory BISTory of of FPGAs FPGAs The Chuck Stroud Chuck Stroud Electrical and Computer Engineering Electrical and Computer Engineering Auburn University Auburn University 1
1
2
3
1-
8 4-
input LUTs LUTs and 1 and 1-
8 flip-
flops per PLB
50 -
400 per PLB
80 -
2,400 per PLB
50 -
750 per FPGA
4
128 -
18K bits per RAM
4 -
550 per FPGA
30 -
510 per FPGA
Up to 2 hard cores per FPGA
Also support soft processor cores synthesized in FPGA
Write and read access by embedded processor core
5
6
Package dependent and limited by I/O pins
Extremely long test time
7
Good for system-
level testing only
8
9
To faulty PLB or wire segment/switch within FPGA
No diagnostic code development or DFT design
Goal: minimize number of configurations minimize number of configurations
Goal: minimize downloads minimize downloads
10
Prototype boards for over half of these
11
Soft Programmable Logic Array Technology (SPLAT)
My original idea of BIST for FPGAs FPGAs: :
program for “ “easier easier” ” testing testing
Standard cell based ASICs ASICs
PLD-
based bread boards and PCBs
Used 22V10s and 16V8s and considered use of Xilinx LCA
Refined idea of BIST for FPGAs FPGAs: :
program for BIST and diagnosis – – can route around faults can route around faults
Widely used at Bell Labs until early 1990s (then VHDL)
12
No one had done it (nothing in literature nothing in literature) )
Good area for academic R&D starting at Univ. of Ky Ky
Funded by Bell Labs, NSF & UK CRMS (1993-
1998)
ORCA 2C and 2CA series
Also some preliminary BIST work for ORCA 3C and 4 series
Miron Abramovici Abramovici at Bell Labs joined me in 1994 at Bell Labs joined me in 1994
Expertise in ATPG, DFT, and diagnosis of ASICs ASICs
Funded by DARPA and Lucent Lucent→ →Agere Agere (1997 (1997 -
2001)
Used ORCA 2C/2CA due to dynamic partial reconfiguration
Considered Xilinx 6800 series
John Emmert Emmert joined myself and joined myself and Miron Miron Abramovici Abramovici in 1999 in 1999
Expertise in fault-
tolerant approaches in FPGAs FPGAs
13
Some initial work on 37K series CPLDs CPLDs
BIST for embedded RAMs RAMs and and FIFOs FIFOs
Embedded logic analyzer
Similar to Xilinx ChipScope ChipScope
Also applicable to AT40K series FPGA
BIST for embedded RAMs RAMs and I/O buffers and I/O buffers
Guard bands and fail-
silent operation
14
Funded by NSA & NC Space Consortium (2001-
2003)
4000E, 4000XL/XLA, Spartan
BIST for logic and routing resources
Funded by NSA (2004-
2005)
Preliminary work in
BIST and diagnosis
Logic, routing, I/O buffers, embedded RAMs RAMs, multipliers , multipliers
Dynamic partial reconfiguration
Partial configuration memory read back
Guard bands and fail-
silent operation
Embedded processor-
based BIST for Virtex Virtex-
II Pro
Funded by NSA (2005-
2006)
BIST for logic, routing, I/O buffers, RAMs RAMs, , DSPs DSPs
15
16
Xilinx 4000 and Altera Altera
Xilinx 4000 and ORCA
Xilinx 4000 and Virtex Virtex
Xilinx 4000
Xilinx Virtex Virtex
17
O TPG TPG TPG BUT BUT BUT BUT BUT BUT BUT BUT LUT LUT FF FF ORA ORA LUT LUT FF FF ORA ORA
BIST BIST start start pass/fail pass/fail
C+1 C+1 m m O O O
2)
18
BUTs BUTs BUTs BUTs Helpers Helpers Helpers Helpers TPG(s) ORA ORA BUTs BUTs BUTs BUTs Helpers Helpers Helpers Helpers TPG(s) ORA ORA BUTs BUTs Helpers unused PLBs Helpers TPG ORA
BUT BUT
helper helper ILA cell ILA cell
BUT BUT
helper helper ILA ILA cell cell
BUT BUT
helper helper ILA cell ILA cell
ORA ORA from other ILA from other ILA global routing global routing local local routing routing local local routing routing TPG TPG
Particularly for sequential logic functions
19
TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT
Row or column orientation
Easily scalable Good for dynamic partial reconfiguration
=TPG =TPG =BUT =BUT =ORA =ORA
Test Session 1 Test Session 1 Test Session 2 Test Session 2
Local Local routing routing Global routing Global routing Global routing Global routing Local Local routing routing
20
21
DSP counter reads
RAM (ROM) with test patterns
=TPG =TPG =BUT =BUT =ORA =ORA
Test Session #1 Test Session #2
22
TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA TPG TPG BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA BUT BUT ORA ORA
23
24
Test for stuck-
at faults
Test for PIP stuck-
# test configurations = # MUX inputs
A S B Z
x sa1
1 1/0 1/0
25
PAR Routing PAR Routing Our Routing Heuristics Our Routing Heuristics
26
LUT G BLO1 BRO1 BLO2 BRO2 LUT F BLO3 BRO3 BLO4 BRO4 LUT H YQ
inst "ora_1_1" "CLB" , placed R1C1 CLB_R1C1 , inst "ora_1_1" "CLB" , placed R1C1 CLB_R1C1 , cfg " cfg "F::#LUT:F=(F1@F2)+(F3@F4) F::#LUT:F=(F1@F2)+(F3@F4) F4MUX::F4I F4MUX::F4I G::#LUT:G=(G1@G2)+(G3@G4) G3MUX::G3I G2MUX::G2I G::#LUT:G=(G1@G2)+(G3@G4) G3MUX::G3I G2MUX::G2I H::#LUT:H=F+G+H1 H0::G H1::C4 H::#LUT:H=F+G+H1 H0::G H1::C4 H2::F H2::F CLKY::CLK CLKY::CLK DY::H DY::H YQMUX::QY SRY::RESET YQMUX::QY SRY::RESET FFY::#FF FFY::#FF SRX::RESET FFX::#FF " ; SRX::RESET FFX::#FF " ; net "ora_1_1_yq" , net "ora_1_1_yq" ,
inpin "ora_1_1" C4 , inpin "ora_1_1" C4 , pip R1C1 CENTER_GYQ pip R1C1 CENTER_GYQ -
> CENTER_GYQ_VERT , pip R1C1 CENTER_GYQ_VERT pip R1C1 CENTER_GYQ_VERT -
> CENTER_H2R , pip R1C1 CENTER_H2R pip R1C1 CENTER_H2R -
> CENTER_C4 , ; ; routed net in XDL inst "ora_1_1" "CLB" , placed R1C1 CLB_R1C1 , inst "ora_1_1" "CLB" , placed R1C1 CLB_R1C1 , cfg " cfg "F::#LUT:F=(F1@F2)+(F3@F4) F::#LUT:F=(F1@F2)+(F3@F4) F4MUX::F4I F4MUX::F4I G::#LUT:G=(G1@G2)+(G3@G4) G3MUX::G3I G2MUX::G2I G::#LUT:G=(G1@G2)+(G3@G4) G3MUX::G3I G2MUX::G2I H::#LUT:H=F+G+H1 H0::G H1::C4 H::#LUT:H=F+G+H1 H0::G H1::C4 H2::F H2::F CLKY::CLK CLKY::CLK DY::H DY::H YQMUX::QY SRY::RESET YQMUX::QY SRY::RESET FFY::#FF FFY::#FF SRX::RESET FFX::#FF " ; SRX::RESET FFX::#FF " ; net "ora_1_1_yq" , net "ora_1_1_yq" ,
inpin "ora_1_1" C4 , inpin "ora_1_1" C4 , ; ; unrouted net in XDL
27
“no pin swap no pin swap” ” option
download
28
config bit Wire A Wire B
29
Can route to two isolated signal nets
Non-
decoded MUX PIP – – 1 1 config config bit per input bit per input
Decoded MUX PIP – – N N config config bits select from 2 bits select from 2N
N inputs
inputs
30
Bridging faults and opens in wire segments
Line stuck-
at faults
Shorts to Vdd Vdd and and Vss Vss
PIPs stuck stuck-
Opposite logic values on wires/PIPs PIPs
Monitor both logic values
TPG ORA PLB
31
comparison comparison-
based ORA
32
STAR STAR
33
What is fault-
free until you’ ’ve tested it? ve tested it?
Pointed out 2-
testing requirement
parity parity-
based ORA
34
CO CO
Pass/Fail Pass/Fail
WUTs WUTs
Cn Cn Par Par
35
36
4000XL/XLA has 25% more than ORCA 2C/2CA
ORCA 2C/2CA has 48% more than 4000E/Spartan
206 for 4000XL/XLA
48 for ORCA 2C/2CA
128 for 4000E/Spartan
Even more routing BIST configurations
37
long lines long lines by by-
1 lines by by-
4 lines
SB SB SB SB
FGC1 FGC2 FGC3 FGC4 X/XQ Y/YQ
F1-4 G1-4 C1-4 O1-4
repeaters repeaters
38
Methodical verification of BIST configurations
39
Logic BIST Logic BIST Circuitry Circuitry Embedded Embedded Processor Processor
40
41
42
Logic BIST is simple compared to routing BIST