Ինչու 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 կառուցվածքները պլանավորվում և ներդրվում են 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 / հապաղման fault | Node-ը դեռ հասնում է ճիշտ վերջնական արժեքին, բայց չափազանց դանդաղ՝ տակտային ազդանշանի 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 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, որի թիրախավորումը խնդրվել է։
DFT Testing-ի Տեսակներ
Scan-ի վրա հիմնված structural test-ը ողնաշարն է, բայց այն մի քանի լրացնող տեխնիկաներից մեկն է, որ կիրառվում են միասին, յուրաքանչյուրը բռնում է թերություններ, որոնց մյուսները կույր են, կամ հասնում է համակարգի այն մասերին, որոնց միայն scan-ը չի կարող։
| Տեխնիկա | Ինչ է բռնում / երբ է կիրառվում |
|---|---|
| Stuck-at scan test | DC 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-երին՝ ավելացած ծախսի և ժամանակի պատճառով |
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) գործողությունները։
Վեց pass, 10n գործողություն n-բջիջ memory-ի համար։ Այն հայտնաբերում է stuck-at, address decoder, transition և բոլոր ստանդարտ coupling fault-երը — ստանդարտ ելակետը, որ ավելի մասնագիտացված algorithm-ները (March B, March SS և այլն) ընդլայնում են՝ լրացուցիչ fault տեսակներ բռնելու համար՝ բջիջի հաշվով ավելի շատ գործողությունների գնով, փոխանակելով test time-ը fault coverage-ի հետ։
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-ի փոխարեն։
Test Coverage, Compression և Production Test
Ինչ է իրականում նշանակում «coverage»-ը
| Metric | Սահմանում |
|---|---|
| Fault coverage | Model արված fault-երի տոկոսը, որ pattern set-ը իրականում հայտնաբերում է |
| Test coverage | Fault coverage-ը՝ ճշգրտված այն fault-երը բացառելու համար, որ երբեք չեն կարող test արվել (օր. redundant կամ անհասանելի logic-ում) — pattern-ի որակի ավելի արդար չափանիշ, քան միայն raw fault coverage-ը |
| Defect coverage | Գնահատական, թե քանի իրական-աշխարհի ֆիզիկական թերություն pattern set-ը կբռներ — անհրաժեշտաբար վիճակագրական, քանի որ fault model-ները աբստրակցիա են և 1:1 չեն համապատասխանում իրական սիլիկոնի թերություններին |
| DPPM | Defective 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 վերակառուցելու համար։
Մոտավորապես 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-ին հատուկ ներքին փաստաթղթերից։
- Scan and Automated Test Pattern Generation in VLSI — IEEE Xplore
- Automatic Test Pattern Generation in VLSI — A Survey — IEEE Xplore
- Scan Methodology and ATPG DFT Techniques at Lower Technology Node — IEEE Xplore
- A March 5n FSM-Based Memory Built-In Self-Test (MBIST) Architecture with Diagnosis Capabilities — IEEE Xplore
- MBIST++: An Adaptive March Algorithm Generator for Memory Test Coverage Enhancement — IEEE Xplore
- SRAM Memory Built-In Self-Test Using MARCH Algorithm — IEEE Xplore
- Flash Memory Testing and Built-In Self-Diagnosis With March-Like Test Algorithms — IEEE Xplore
- Boundary scan / JTAG (IEEE 1149.1), logic BIST, IDDQ testing — ընդհանուր վեբ հետազոտություն
- Test data compression (EDT), scan compression ratio-ներ և ATE channel սահմանափակումներ — ընդհանուր վեբ հետազոտություն
- Fault coverage, test coverage, defect coverage և DPPM մեթոդաբանություն — ընդհանուր վեբ հետազոտություն