ENARM
VLSI · Design for Test

DFT

Design for Test (DFT) այն լրացուցիչ կառուցվածքների ամբողջությունն է, որ միտումնավոր ավելացվում են չիպին, որպեսզի, երբ այն արտադրվի, հնարավոր լինի ստուգել այն ֆիզիկական թերությունների համար — open-ներ, short-ներ, bridge-եր, թույլ բջիջներ — որոնք ֆունկցիոնալ ստուգումը երբեք չի տեսնում, քանի որ ստուգումն ապացուցում է, որ RTL-ը տրամաբանորեն ճիշտ է, ոչ թե որ որևէ կոնկրետ արտադրված բյուրեղիկ ֆիզիկապես թերություններից զերծ է։ Այս էջը ընդգրկում է DFT հոսքը, fault model-երը, scan design-ն ու ATPG-ն, այսօր կիրառվող հիմնական test տեխնիկաները և MBIST-ի ու memory testing-ի խորը ուսումնասիրություն։

Ընդհանուր Ակնարկ

Ինչու DFT, և ինչպես է այն տեղավորվում հոսքի մեջ

Ֆունկցիոնալ ստուգումը (տես Logic Սինթեզ) ապացուցում է, որ RTL-ն անում է այն, ինչ ասում է spec-ը։ DFT-ն լուծում է լիովին այլ խնդիր. նույնիսկ կատարյալ նախագծված չիպը կարող է fab-ից դուրս գալ արտադրական թերությամբ — via, որ չի ձևավորվել, երկու հարևան wire, որ bridge են դարձել իրար հետ, memory բջիջ, որ չափազանց թույլ է իր լիցքը պահելու համար — և ինչ-որ մեկը պիտի բռնի հենց այդ կոնկրետ ֆիզիկական բյուրեղիկը, նախքան այն առաքվի։ Չիպի մեկ միլիարդավոր տրանզիստորների պայմաններում միայն primary input-երն ու output-երը չեն կարող բավականաչափ ներքին state control կամ observe անել՝ այս թերությունները արդյունավետորեն գտնելու համար, ուստի DFT-ն ավելացնում է հատուկ կառուցվածքներ — scan chain-եր, test controller-ներ, self-test logic — զուտ բյուրեղիկը testable դարձնելու համար։

DFT Planning test mode-եր, chain-երի քանակ, compression ratio, MBIST wrapper planning Test Insertion scan chain stitching, MBIST/LBIST controller-ներ, compression logic (EDT) → բացել բաժինը ATPG Pattern Gen ստեղծել նվազագույն pattern set ըստ fault model-ի, fault-drop մոդելավորում → բացել բաժինը Pattern Ստուգում ժամանակային-aware մոդելավորում gate հանգույցների ցանկի դեմ, հաստատել՝ չկան false fail-եր Tester Program թարգմանել pattern-ները ATE-native ֆորմատի → բացել բաժինը Production Test (ATE) թիթեղ sort → final test → binning → բացել բաժինը

Կտտացրեք փուլին՝ դրա բաժինը մտնելու համար։ DFT կառուցվածքները պլանավորվում և ներդրվում են logic սինթեզից անմիջապես հետո (կամ դրան զուգահեռ), pattern-ները ստեղծվում և verify են արվում gate հանգույցների ցանկի դեմ, ապա ամեն ֆիզիկական բյուրեղիկը շահագործվում է այս pattern-ներով automatic test equipment-ի (ATE) վրա՝ նախքան առաքվելը։

Հիմք

Fault Model-եր

Fault model-ը իրական արտադրական թերության պարզեցված, testable աբստրակցիան է, թե ինչպես այն կարող է վարվել էլեկտրականորեն։ Ոչ ոք չի կարող ուղղակիորեն test անել ամեն հնարավոր ֆիզիկական թերության համար, ուստի DFT-ն դրա փոխարեն թիրախավորում է լավ հասկացված fault model-երի փոքր հավաքածու՝ ելնելով այն տեսությունից (հիմնված տասնամյակների արտադրական տվյալների վրա), որ այս model-երը բռնող pattern set-ը բռնում է նաև իրական թերությունների մեծ մասը։

Fault modelԻնչ է ներկայացնում
Stuck-at (SA0 / SA1)Node-ը վարվում է այնպես, կարծես մշտապես կապված է 0-ի կամ 1-ի — ամենահին և ամենապարզ model-ը, պատմականորեն հիմնական թիրախը, դեռ այն DC baseline-ն է, որի դեմ test է արվում ամեն design
Transition / հապաղման faultNode-ը դեռ հասնում է ճիշտ վերջնական արժեքին, բայց չափազանց դանդաղ՝ տակտային ազդանշանի period-ի ընթացքում կայունանալու համար — անտեսանելի է դանդաղ, DC-ոճ test-ի համար և բռնվում է միայն չիպի իրական աշխատանքային արագությամբ test անելիս
Path հապաղման faultՄեկ կոնկրետ critical ժամանակային path-ի երկայնքով կուտակային հապաղումը գերազանցում է տակտային ազդանշանի period-ը, նույնիսկ եթե ոչ մի առանձին transition fault ինքնին դա չէր բացատրի
Bridging faultԵրկու հանգույց, որ պիտի էլեկտրականորեն անկախ լինեին, ակամա short են դարձել իրար հետ — գերիշխող իրական-աշխարհի թերության մեխանիզմ առաջադեմ process node-երում՝ չափազանց խիտ wire spacing-ով
IDDQ (excess quiescent հոսանք)Թերություններից զերծ CMOS gate-ը գրեթե ոչ մի հոսանք չի քաշում, երբ signal-ները կայունանում են. որոշ bridging և gate-oxide թերություններ թողնում են հայտնաբերելի հոսանքի արտահոսք, նույնիսկ երբ logic-ը դեռ «ճիշտ» է կարդում
Memory-ին բնորոշ fault-երCoupling, address-decoder, pattern-sensitivity և retention fault-եր, որոնք յուրահատուկ են կանոնավոր array կառուցվածքներին — մանրամասն ընդգրկված են MBIST և Memory Testing բաժնում
Հիմնական Տեխնիկա

Scan Design և ATPG

Scan design-ը հիմքն է, որի վրա կառուցվում է DFT-ի գրեթե ամեն ինչ։ Նորմալ (ֆունկցիոնալ) աշխատանքի ընթացքում flip-flop-ի հաջորդ state-ը կախված է միայն design-ի սեփական logic-ից։ Scan insertion-ը ամեն flip-flop-ի data input-ի առջև ավելացնում է multiplexer, որպեսզի test mode-ում ամեն flop-ն իր input-ը փոխարենը վերցնի chain-ի նախորդ flop-ից — ամեն flip-flop-ը design-ում վերածելով մեկ հսկա shift register-ի, որ ընդգրկում է չիպն ամբողջությամբ։ Այդ մեկ փոփոխությունը test engineer-ին տալիս է երկու բան, որ միայն primary I/O-ն երբեք չէր կարող. ցանկացած ներքին state ուղղակիորեն force անելու հնարավորությունը (controllability) և ցանկացած ներքին state ուղղակիորեն կարդալու հնարավորությունը (observability)։

⤢ Սեղմեք խոշորացնելու համար Scan chain. flip-flop-երը test mode-ում դառնում են մեկ shift register mux FF1 mux FF2 mux FF3 scan-out scan⁠-⁠in combinational logic FF1-ի և FF2-ի միջև combinational logic FF2-ի և FF3-ի միջև test cycle. shift-in stimulus (N տակտային ազդանշան) capture (1 clk) shift-out response (N տակտային ազդանշան) → կրկնել մեկ pattern-ի shift-out-ը համընկնում է հաջորդի shift-in-ի հետ՝ tester-ը շարունակ զբաղված պահելով

Ամեն scan flop ստանում է mux, որը test mode-ում այն սնում է նախորդ flop-ի output-ից՝ իր նորմալ data input-ի փոխարեն — բոլոր flop-երը շղթայելով մեկ shift register-ի մեջ։ Test cycle-ը ներսում shift է անում հայտնի stimulus, capture է անում մեկ իրական ֆունկցիոնալ տակտային ազդանշանի edge, ապա response-ը shift է անում դուրս։

ATPG. pattern-ների ստեղծումը

Automatic Test Pattern Generation (ATPG) այն է, ինչ իրականում որոշում է, թե ինչ արժեքներ shift անել ներս։ Target fault list-ի ամեն fault-ի համար ATPG գործիքն աշխատում է fault site-ից հետ. այն գտնում է input combination, որը կստեղծեր fault site-ում այլ logic արժեք, քան կստեղծեր fault-ից զերծ սխեման (fault activation), ապա գտնում է path այդ site-ից դեպի observable point — scan flop կամ primary output — որտեղ տարբերությունը իրականում կերևար (fault propagation)։ Pattern-ը ստեղծվելուց հետո fault մոդելավորումը ստուգում է, թե որ այլ fault-երը այն նաև պատահաբար հայտնաբերում է, որպեսզի դրանք dropped լինեն ավելի ուշ pattern-ներից — այս «fault dropping»-ն է, որ պահում է վերջնական pattern count-ը՝ fault list-ի հետ գծայնորեն չաճելուց։ Արդյունքը ամենափոքր pattern set-ն է, որ գործիքը կարող է գտնել և որ դեռ հայտնաբերում է ամեն fault, որի թիրախավորումը խնդրվել է։

Scan chain-երը գրեթե միշտ աշխատում են compressed, ոչ թե raw. ժամանակակից SoC-ն կարող է ունենալ միլիոնավոր scan flop, բայց tester-ն ունի ընդամենը մի քանի տասնյակից մինչև մի քանի հարյուր channel — տես Coverage և Production Test՝ թե ինչպես է on-chip compression logic-ը կամրջում այդ բացը։
Ակնարկ

DFT Testing-ի Տեսակներ

Scan-ի վրա հիմնված structural test-ը ողնաշարն է, բայց այն մի քանի լրացնող տեխնիկաներից մեկն է, որ կիրառվում են միասին, յուրաքանչյուրը բռնում է թերություններ, որոնց մյուսները կույր են, կամ հասնում է համակարգի այն մասերին, որոնց միայն scan-ը չի կարող։

ՏեխնիկաԻնչ է բռնում / երբ է կիրառվում
Stuck-at scan testDC baseline-ը — դանդաղ, structural, հայտնաբերում է logic-level կոպիտ թերությունները. աշխատում է ցածր արագությամբ, քանի որ ժամանակային պահանջները չի ստուգում
At-speed / transition-հապաղման testՆույն scan infrastructure-ը, բայց capture տակտային ազդանշանը աշխատում է իրական աշխատանքային հաճախությամբ, ուստի հապաղման թերությունները, որ stuck-at test-ը չի կարող տեսնել, բռնվում են
Logic BIST (LBIST)Չիպն ինքն է ստեղծում իր pseudo-random pattern-ները և on-chip compact է անում իր response-ները՝ առանց արտաքին ATPG pattern set-ի կամ tester channel-ների կարիքի — տարածված in-field/power-on self-test-ի համար automotive և այլ safety-critical (ISO 26262) կիրառություններում
MBIST (Memory BIST)LBIST-ի memory-ին բնորոշ համարժեքը, որ algorithmic self-test է աշխատեցնում ուղղակիորեն on-chip SRAM/embedded memory-ների դեմ — տես ստորև հատուկ բաժինը
Boundary scan / JTAG (IEEE 1149.1)Ամեն I/O pin-ի shift-register բջիջը (Boundary Scan Register-ը) թույլ է տալիս test controller-ին sample կամ drive անել ամեն pin ստանդարտ 4/5-wire Test Access Port-ի (TDI/TDO/TCK/TMS[/TRST]) միջոցով — օգտագործվում է board-level interconnect test-ի համար և որպես չիպ մուտք գործող ստանդարտ debug/programming access point
IDDQ testingՈւղղակիորեն չափում է quiescent սնուցման հոսանքը, այլ ոչ թե logic արժեքներ կարդում, բռնելով որոշ bridging և արտահոսքի թերություններ, որ զուտ logical test-ը բաց կթողներ. ավելի քիչ տարբերակող է առաջադեմ node-երում, որտեղ background արտահոսքն արդեն բարձր է
Burn-in / stress testԱշխատեցնում է part-երը բարձրացված լարման և ջերմաստիճանի պայմաններում՝ infant-mortality-ի ձախողումներն արագացնելու համար, զտելով early-life թերությունները նախքան առաքումը — սովորաբար վերապահված է high-reliability part-երին՝ ավելացած ծախսի և ժամանակի պատճառով
⤢ Սեղմեք խոշորացնելու համար Logic BIST. չիպն ինքն իրեն test է անում PRPG (pattern generator, LFSR-based) Logic Under Test MISR (response compactor) Signature Compare Boundary Scan (JTAG) TAP. TDI • TDO • TCK • TMS • TRST

Pseudo-random pattern generator-ը (PRPG, սովորաբար LFSR) drive է անում logic under test-ը. Multiple-Input Signature Register-ը (MISR) սեղմում է բազում response bit-երը մեկ signature-ի, որը համեմատվում է հայտնի լավ արժեքի հետ — ամբողջովին on-chip, առանց ATPG pattern set-ի կարիքի։

Խորը Ուսումնասիրություն

MBIST և Memory Testing

Embedded memory-ները այժմ կազմում են տրանզիստորների քանակի — և հաճախ բյուրեղիկի area-ի — մեծ մասը ժամանակակից SoC-ի վրա, և դրանք ձախողվում են այնպես, ինչպես random logic-ը չի ձախողվում։ Memory array-ը չափազանց խիտ, կանոնավոր կառուցվածք է, որտեղ հարևան բջիջներն ու bitline-ները կարող են էլեկտրականորեն փոխազդել իրար հետ, որտեղ մեկ թույլ բջիջը կարող է ժամանակի ընթացքում կորցնել իր պահված արժեքը, և որտեղ address decoder-ն ինքը կարող է թերի լինել այնպիսի ձևերով, որ random logic-ում համարժեք չունեն։ Scan-ի վրա հիմնված logic ATPG-ն վատ է համապատասխանում array-ի ներսերն արդյունավետորեն test անելուն, ուստի memory-ները փոխարենը ստանում են իրենց սեփական հատուկ, algorithmic self-test-ը. MBIST (Memory Built-In Self-Test)։

Memory-ին բնորոշ fault model-եր

FaultԻնչ է նշանակում
Stuck-At Fault (SAF)Բջիջը կամ line-ը մշտապես ֆիքսված է 0-ի կամ 1-ի, անկախ նրանից՝ ինչ է գրվում
Transition Fault (TF)Բջիջը չի կարողանում կատարել կոնկրետ 0→1 կամ 1→0 transition
Coupling Fault (CF)Մեկ բջիջի (aggressor) transition-ը սխալ կերպով փոխում կամ force է անում այլ բջիջի (victim) state-ը — ենթատեսակներն ընդգրկում են inversion (CFin), idempotent (CFid) և state (CFst) coupling
Address Decoder Fault (AF)Տրված address-ը հասնում է սխալ բջիջի, մի քանի բջիջի կամ ընդհանրապես ոչ մի բջիջի
Neighborhood Pattern Sensitive Fault (NPSF)Բջիջի վարքագիծը խաթարվում է իր ֆիզիկական հարևանների պահած արժեքների կոնկրետ pattern-ով
Data Retention Fault (DRF)Բջիջը որոշ հապաղումից հետո կորցնում է իր պահված արժեքը — «թույլ բջիջ», որ անցնում է անմիջական read-back-ը, բայց ձախողվում ժամանակ անցնելուց հետո

March algorithm-ներ

Random pattern-ների փոխարեն MBIST-ը կիրառում է March algorithm. read/write գործողությունների ֆիքսված հաջորդականություն, որ «քայլում» է ամեն address-ի միջով աճող կամ նվազող կարգով, ընտրված հատուկ վերևի fault model-երն ակտիվացնելու և հայտնաբերելու համար՝ գործողությունների սահմանափակ, կանխատեսելի քանակով։ March նշանակումն օգտագործում է ↑ աճող address կարգի համար, ↓ նվազող կարգի համար, և ⇅, երբ կարգը նշանակություն չունի, ամեն քայլում թվարկելով այդ pass-ի ընթացքում ամեն address-ում կատարվող read (r) կամ write (w) գործողությունները։

March C− (լայնորեն կիրառվող baseline algorithm) ⇅(w0); ↑(r0,w1); ↑(r1,w0); ↓(r0,w1); ↓(r1,w0); ⇅(r0)

Վեց pass, 10n գործողություն n-բջիջ memory-ի համար։ Այն հայտնաբերում է stuck-at, address decoder, transition և բոլոր ստանդարտ coupling fault-երը — ստանդարտ ելակետը, որ ավելի մասնագիտացված algorithm-ները (March B, March SS և այլն) ընդլայնում են՝ լրացուցիչ fault տեսակներ բռնելու համար՝ բջիջի հաշվով ավելի շատ գործողությունների գնով, փոխանակելով test time-ը fault coverage-ի հետ։

⤢ Սեղմեք խոշորացնելու համար MBIST architecture, BIRA/BISR repair-ով BIST Controller հաջորդականացնում է March algorithm-ը Address Generator Data Generator Memory Under Test (SRAM array) Comparator actual vs. expected Pass / Fail + Fail Log fail address / bitmap BIRA → BISR հաշվարկել և կիրառել repair՝ օգտագործելով redundant row-եր / column-ներ

Controller-ը հաջորդականացնում է address և data generator-ները March algorithm-ի միջով memory-ի դեմ. comparator-ը նշում է անհամապատասխանությունները։ Եթե բավական spare հզորություն կա, BIRA-ն fail log-ից հաշվարկում է օպտիմալ repair, և BISR-ը մշտապես փոխարինում է redundant row/column-ներ — վերածելով այն, ինչ scrapped բյուրեղիկ կլիներ, առաքելի part-ի։

BIRA և BISR. վերանորոգել՝ scrap անելու փոխարեն

Խիտ memory array-ները սովորաբար կառուցվում են փոքր քանակությամբ spare row-երով և column-ներով, ավելին, քան architecturally անհրաժեշտ է, հատուկ որպեսզի մի բուռ թերի բջիջները ստիպված չլինեն ձախողել ամբողջ բյուրեղիկը։ Built-In Redundancy Analysis (BIRA) վերցնում է fail log-ը, որ MBIST-ը ստեղծել է, և հաշվարկում է օպտիմալ repair — թե որ redundant row-երը և/կամ column-ները պիտի փոխարինեն որ թերիներին — մինչդեռ Built-In Self-Repair (BISR) ապա մշտապես կիրառում է այդ լուծումը, սովորաբար fuse-եր, anti-fuse-եր փչելով կամ non-volatile latch-եր ծրագրավորելով, որ վերաուղղորդում են թերի address-ները դեպի spare-ները։ Մեծ, խիտ memory array-ների վրա, որտեղ նույնիսկ single-bit թերությունն այլապես կscrap աներ ամբողջ բյուրեղիկը, այս repair քայլը չափելիորեն բարելավում է պիտանի ելքը։

At-speed memory test

Ինչպես logic-ը, memory-ներն էլ կարիք ունեն test-ի իրական աշխատանքային հաճախությամբ — որոշ թերություններ, ինչպիսին է սահմանային թույլ բջիջը կամ դանդաղ sense amplifier-ը, ձախողում են ժամանակային պահանջները բավարարել միայն այն ժամանակ, երբ memory-ն տակտային ազդանշան է արվում իր իրական արագությամբ, հենց transition-fault խնդիրը, որ ընդգրկվել է ավելի վաղ, կիրառված array կառուցվածքների վրա՝ random logic-ի փոխարեն։

Signoff

Test Coverage, Compression և Production Test

Ինչ է իրականում նշանակում «coverage»-ը

MetricՍահմանում
Fault coverageModel արված fault-երի տոկոսը, որ pattern set-ը իրականում հայտնաբերում է
Test coverageFault coverage-ը՝ ճշգրտված այն fault-երը բացառելու համար, որ երբեք չեն կարող test արվել (օր. redundant կամ անհասանելի logic-ում) — pattern-ի որակի ավելի արդար չափանիշ, քան միայն raw fault coverage-ը
Defect coverageԳնահատական, թե քանի իրական-աշխարհի ֆիզիկական թերություն pattern set-ը կբռներ — անհրաժեշտաբար վիճակագրական, քանի որ fault model-ները աբստրակցիա են և 1:1 չեն համապատասխանում իրական սիլիկոնի թերություններին
DPPMDefective Parts Per Million — առաքված part-երի բաժինը, որ իրականում թերի են, նորմալացված մեկ միլիոն միավորի. սա իրական բիզնես metric-ն է, որի proxy-ն է վերջին հաշվով վերևի ամեն ինչ, և ինչի դեմ հաճախորդները (հատկապես automotive) սահմանում են խիստ նպատակներ

Test compression (EDT)

Ժամանակակից SoC-ն կարող է ունենալ միլիոնավոր scan flip-flop, բայց tester-ն (ATE) ունի սահմանափակ քանակությամբ channel — հաճախ ընդամենը տասնյակից մինչև մի քանի հարյուր։ Ամեն scan bit-ը ուղղակիորեն բեռնելն ու բեռնաթափելը test data volume-ը և test time-ը կդարձներ անիրագործելիորեն մեծ։ Embedded Deterministic Test (EDT) լուծում է սա՝ չիպի վրա փոքր decompressor և compactor դնելով. decompressor-ը մի բուռ արտաքին bit-երը ընդլայնում է դեպի բազում ներքին scan-chain bit-եր, և compactor-ը արդյունքում ստացված response bit-երը կրճատում է հետ՝ մինչև փոքր քանակությամբ output bit։ Սա աշխատում է, քանի որ ATPG-ի ստեղծած pattern-ները սովորաբար հիմնականում «don't care» bit-եր են — հաճախ bit-երի ընդամենը տոկոսի մի մասից մինչև մի քանի տոկոսն է իրականում սահմանված — ուստի compact seed-ը բավական է ամբողջ pattern-ը deterministically on-chip վերակառուցելու համար։

Compression, պատկերված 6 Gb raw test data 100× compression-ով → 60 Mb իրականում բեռնված tester-ի միջով

Մոտավորապես 30×-ից 500× compression ratio-ները տիպիկ են արդյունաբերական design-ներում՝ ուղղակիորեն կրճատելով և՛ test data volume-ը, և՛ test application time-ը — նշանակալի ծախսի լծակ, քանի որ ATE time-ը billed է վայրկյանով ամեն թիթեղի ամեն բյուրեղիկի հաշվով։

Pattern-ներից մինչև առաքված part-եր

Երբ pattern-ները ստեղծվում և verify են արվում, դրանք թարգմանվում են ATE-ի native ֆորմատի և կիրառվում ամեն ֆիզիկական բյուրեղիկի վրա. սկզբում թիթեղ sort-ում (probing դեռ չփաթեթավորված բյուրեղիկը թիթեղի վրա՝ բռնելով կոպիտ ձախողումները նախքան փաթեթավորման ծախսը դրանց վրա ծախսվելը), ապա կրկին final test-ում փաթեթավորումից հետո (բռնելով որևէ թերություն, որ ներմուծել է հենց փաթեթավորումը, և վերահաստատելով, որ ամեն ինչ դեռ աշխատում է)։ Անցնող part-երը սովորաբար binned են — տեսակավորված ըստ չափված արագության կամ էներգասպառման — մինչդեռ ձախողվող part-երը scrapped են, և coverage/պիտանի ելքի տվյալները հետադարձ կապով վերադառնում են fab՝ որպես ընթացիկ process և defect-density monitoring-ի մաս։

Աղբյուրներ

Ընդհանուր արդյունաբերական հետազոտություն — այս էջը սնված չէ vendor-ին հատուկ ներքին փաստաթղթերից։