270 likes | 374 Views
2008 IC/CAD Contest Problem A1 :. Test Pattern Generation by Using Reseedable LFSRs 2008 6/6 Team:a027. Outline. Introduction Methods Reduce Hardware Cost LFSR Generation D etermine the unhit cycle range Primitive Polynomial Non-primitive Polynomial Determine the value of seed
E N D
2008 IC/CAD ContestProblem A1: Test Pattern Generation by Using Reseedable LFSRs 2008 6/6 Team:a027
Outline • Introduction • Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow • Experimental Results • Conclusions
Problem Description • Generate an appropriate structure of reseedable LFSR with a given test set
Objectives and Constraints • Minimize the BIST time (cycle counts) • Maximize the pattern coverage • Determine the LFSR structure with a minimal size (least hardware cost) • Reseeding upper bound • 0.2 × test pattern set size • Performance • Dynamic memory allocation • CPU time constraint
Observations • A multi-objective problem • Deterministic approach may not work • Time-consuming on the evaluation of • How to partition? • Which LFSR is better? • What the exact timing for reseeding? • Simulation-based approach • Better timing on reseeding • Fully utilize the reseeding resources
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
Reduce Hardware Cost (1/2) Build a graph of Input SEQs’ relationships • Three different types of relationships • r1. Equivalent • r2. Inverted • r3. Compatible
Reduce Hardware Cost (2/2) Example: I1 Inputs: I1 I2 I3 I4 I5 I6 X 1 0 1 0 0 X X X 1 0 1 0 0 X X 0 1 X X 1 1 0 0 X 1 0 0 1 0 1 1 X 1 0 1 r1 r3 results: G1 G2 G3 0 0 0 1 0 X 1 0 1 0 0 1 0 1 0 1 0 0 Build graph I2 I3 r2 r1 I5 I4 r2 G1: I6, I6 G2: I5,-I4, G3: I3,-I2,-I1
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
LFSR size = 8 Cycle= 1+1+1+1+1+2+3 +50+1 =61 Cycle= 1+1+1+1+1+2+3 +10 (reseed cycle) +1 =21 Determine the Unhit Cycle Range (1/3) Start 1 V1 V3 1 V4 1 V5 V7 1 V6 reseed cycle =LFSR size+2 =8+2=10 1 V9 1 10 V10 50 X 2 V2 V8 3
The period between 2 consecutive patterns hit by the seed One seed to hit patterns in one primitive poly. Unhit cycle range is getting larger Determine the Unhit Cycle Range (2/3)
Determine the Unhit Cycle Range (3/3) • Seed upper bound = 500 x 0.2 =100 Seed# 73 Seed# 99 Seed# 143
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
20x(1-65%)=7 7 0000000 0000001 0000010 0000011 0000100 0000101 0000110 0000111 0001000 0001001 0001010 0001011 ….. 1111110 1111111 27/20 ~= 6 27 20 100x0.2=20 Primitive Polynomial (1/2) Ex: LFSR size = 20 Pattern# = 100 DC% = 65% 20 1X00X0XXXXXX1XXX11 111XXX111XX1X001X0 X01XX00XXXX01XXX0X X1XXX00011XXX10XXX 101XXXXX1X1XXX1111 ….. XXX111100XX0XXX110 010XXXXX11X0X00XXX 6 Unhit cycle range 100 6
Primitive Polynomial (2/2) • Dynamically adjust the unhit cycle range to optimize the solution • Seed # > Upper bound → increase the unhit cycle range • Seed # ≤ upper bound → attenuate the unhit cycle range
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
Non-primitivePolynomial • Randomly generate non-primitive polynomials • Try to find a LFSR structure that can densely hit patterns • Initial range = LFSR size + 2
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
Matching RESEED Determine the Value of Seed (1/2) XX00X 1XX01 1XXX0 1X0X0 00XX1 1X0XX X01XX XX000 X0X1X XXX01 001XX 1XX00 X10X1 XX010 10X1X XX00X 1XXX0 1X0X0 00XX1 X01XX XX000 X0X1X 001XX 1XX00 X10X1 XX010 10X1X XX00X 1XX01 1XXX0 1X0X0 00XX1 1X0XX X01XX XX000 X0X1X XXX01 001XX 1XX00 X10X1 XX010 10X1X 1X0X0 00XX1 X01XX X0X1X 001XX 1XX00 10X1X SELECT 1XX01 HIT SELECT 1X0X0 MERGE 1X001 EXCEED UNHIT CYCLE RANGE MERGE HIT 10010 MERGE 1X001 MERGE 10010 HIT MERGE SEED VALUE HIT 11001 SEED VALUE
Determine the Value of Seed (2/2) • Pick an unmatched vector that has a minimal number of don’t cares • Find compatible unmatched patterns and fill DC values
Methods • Reduce Hardware Cost • LFSR Generation • Determine the unhit cycle range • Primitive Polynomial • Non-primitive Polynomial • Determine the value of seed • Global Flow
Outline • Introduction • Methods • Reduce Hardware Cost • LFSR Generation • Preliminaries • Primitive Polynomial • Non-primitive Polynomial • Global Flow • Experimental Results • Conclusions
Experimental Results (1/2) • A012 vs A027 • BIST Time: Speedup= (429+661+18+24+81)/5=242.6 • Fully utilize the given resources
Experimental Results (2/2) • Runtime efficient • Memory usage efficient
Conclusions • Determine a better timing for reseeding • Fully utilize the reseeding resources to minimize the BIST time • A speedup of 2 orders of magnitude over A012