DFT – Design for Testability
Inledning
Det är viktigt att tidigt i designflödet ta hänsyn till hur en test av konstruktionen ska genomföras, detta brukar kallas för Design for Testability och förkortas DFT. Med goda DFT-kunskaper kan man redan i konstruktionsfasen förhindra att fel och extra kostnader uppstår. En konstruktion som är anpassad för DFT ger många fördelar:
- Kortare TFM – Time-For-Manufacturing och därmed kortare TTM – Time-To-Market
- Mindre komplicerade testfixturer genom korrekt placering och minimering av testpunkter
- Säkrare test då man kan testa upp till 100 % av kortet
- Minskad tid för test och felsökningar
- Reducerat antal revisioner för ett kretskort
Ovanstående punkter ger alla en betydande minskning av kostnader, både innan och efter en produkt har nått marknaden.
I artikeln tar vi upp två testmetoder och hur man som konstruktör kan tänka för att designen av kretskortet ska underlätta test:
- In Circuit Test (ICT)
- Boundary Scan Test (BST)
Kretskort kan också testad med optisk avsyning, Automatic Optical Inspection (AOI). Här används avancerade kameror placerade i olika vinklar och med en specifik ljussättning. Med bildbehandling ger AOI en visuell inspektion med god noggrannhet och hög genomströmning. AOI:n spelar en viktig roll i en produkts teststrategi, då man vill säkerställa en hög kvalitet genom alla fasers i dess livscykel.
ICT – In Circuit Test
Med hjälp av In-Circuit Test (ICT) kan alla komponenter på ett kretskort testas var och en för sig. För att nå en 100 % testbarhet behövs tillgång till alla noder, samt att kortet är designat på så sätt att det går att isolera komponenterna från varandra. ICT-utrustningen och programmen är specifikt framtagna för varje typ av kretskort. ICT-programmen är anpassade så att de kan hantera programmerbara kretsar och genomföra enklare funktionstester.
ICT använder sig av ett stort antal testnålar för att få elektrisk kontakt med noder på kretskortet och mäta prestandan hos enskilda komponenter. ICT är oberoende av vilka andra komponenter som är sammankopplade med det aktuella mätobjektet. Enklare komponentparametrar såsom resistans och kapacitans utvärderas tillsammans med analogakomponenter som operationsförstärkare. ICT har till och med möjligheten att göra funktionalitetstest på digitala kretsar, även om deras komplexitet oftast leder till att ett fullt test blir oekonomiskt.
ICT utrustningen består av två delar. Den första är själva testaren, som består av en matris av drivare och sensorer vilka används vid utförandet av mätningen. Drivare och sensor uppträder normalt i par-formationer. Drivare används för att generera en signal, antingen som en spänning eller som en ström. De används för att tvinga en nod att anta ett visst fördefinierat värde, detta betyder att drivarens utimpedans måste vara mycket låg. Sensorerna används för att utföra alla mätningar, vilket gör att de måste ha en mycket hög inimpedans för att inte störa komponenten som skall mätas. Alla drivare och sensorer, antalet kan vara 1000 eller mer, ansluts normalt till en kontakt. Kontakten agerar i sin tur som ett interface till den andra delen av ICT systemet, fixturen. Varje fixtur är specifik för varje typ av kretskort och är ett interface mellan kretskortet och ICT:n. Den sammankopplar alltså alla drivare och sensorer till korrekt nod på kretskortet.
Även om det rent teoretiskt går att uppnå en 100 % testbarhet med ICT så anser de flesta större tillverkare att man kan nå en 98 % feltäckning. För att komma upp i en så hög testbarhet så måste man anpassa sin konstruktion väl till ICT:n.
Testnålar
För att de testnålar som en ICT-fixtur består av skall komma till så effektiv användning som möjligt, bör man ta hänsyn till vilka avstånd de är beroende av.
Avstånd mellan testnålarna
Beroende på hur testpunkterna är konstruerade kan man använda sig av olika testnålar för att få kontakt med dessa. Testnålarna finns i storlekarna 0,050”, 0,075” och 0,100”, där 0,100” = 100 mil = 2,54 mm. Dessa mått anger inte vilken diameter nålarna har, utan indikerar hur tätt man kan placera två nålar. Men på grund av att ICT är en förhållandevis gammal mätmetod så har måttangivelserna inte längre den korrekta betydelsen. De aktuella minimiavstånden mellan nålarna är angivna nedan.
Par av testnålar | Nålavstånd (L) |
0,100” / 0,100” | 0,085” |
0,100” / 0,075” | 0,075” |
0,100” / 0,050” | 0,070” |
0,075” / 0,075” | 0,070” |
0,075” / 0,050” | 0,060” |
0,050” / 0,050” | 0,050” |
Vid användande av 0,050” eller 0,075” blir nålarna smalare och mer ostadiga. Detta gör i sin tur att nålarna lätt vickar på sig vilket ökar risken för att testpunkterna inte träffas av nålarna.
Därför är det viktigt att man använder sig av så många testnålar med storleken 0,100” som möjligt då dessa är slitstarka och stadiga.
Avstånd från testnålarna
Beroende på vilken testnålsstorlek man använder sig av måste det vara ett visst avstånd till närmsta komponent eller annan testnål. Tar man inte hänsyn till detta finns det en risk för att testnålarna inte får någon kontakt med testpunkterna, eller i värsta fall att de träffar och skadar någon komponent.
Nedan beskrivs vilka avstånd mellan testpunkter som man bör ha beroende på vilka probar man väljer. En grafisk representation av avstånden visas också i figuren nedan.
Komponentenhöjd > 0,150” | Komponentenhöjd < 0,150” | ||
Testnål | Avstånd (D) | Testnål | Avstånd (D) |
0,100” | 0,058” | 0,100” | 0,043” |
0,075” | 0,051” | 0,075” | 0,038” |
0,050” | 0,044” | 0,050” | 0,035” |
”D” står för det minsta avståndet mellan testpunktens centrum och den närmsta komponentens ytterkant. Detta framgår även i figur nedan.

Testpunkter
Det är viktigt att testpunkterna är rätt utformade och har en korrekt placering så att de blir så effektiva som möjligt. Fel utformning av testpunkter leder generellt till en dålig testbarhet av konstruktionen.
Testpunktens utförande
Det är viktigt att sprida ut testpunkterna för att fördela trycket jämt över kretskortet. Om de flesta testpunkter sitter i samma område kan kretskortet lätt böja på sig så andra testpunkter inte får kontakt med testnålarna.
Fyrkantiga testpunkter är att föredra eftersom arean ökar med 27 % jämfört med cirkulära testpunkter. Testpunktens bredd skall vara minst 0,040”. En rekommenderad testpunkt visas i figur nedan.

Är testpunkten cirkulär skall den ha en diameter på minst 0,035”.
Notera också att avståndet mellan testpunktens centrum och mönsterkortets kanter måste vara minst 0,125”.
Notera också att alla testpunkter måste vara fria från lödmask för att ICT:n ska kunna få kontakt med dem.
Multipla testpunkter
För att erhålla så korrekta resultat som möjligt bör man ha åtkomlighet på flera positioner för en och samma nod eller ledare. Anledningen är att man endast önskar mäta komponentens egenskaper och inte variationer som uppstår på grund av exempelvis långa ledare. Problematiken är illustrerad i figuren nedan, där resistiviteten i ledaren ger upphov till en potentialskillnad.

Ledarens resistivitet beror på ledarens storlek, form och material. Man kan tydligt se att U1≠U2 om RLedning skiljer sig från noll. En hög ledarresistans ger upphov till en stor skillnad mellan U1 och U2.
Problemet blir extra stort för noder som matningsspänning och jord, så där är det bra om man har multipla testpunkter eftersom många komponenter är kopplade till referensplanen. Om man använder multipla testpunkter så ska man verifiera att referensplanen är bra innan man startar ett ICT.
Separata testpunkter
För att få ett effektivt test så måste varje komponent kunna mätas separat. Om flera komponenter är kopplade till samma nod, går det inte att skilja dem åt och de interfererar med varandra. Detta kan undvikas genom att tillägna varje komponent separata testpunkter. Det är då möjligt för ICT:n att jorda de komponenter som inte är intressanta att styra. Med de andra komponeterna frånkopplade förhindrar man dem från att störa mätningarna. Metoden är känd som ”guarding” och används flitigt.
Reset-, enable- och kontroll-signaler bör dras separat med separata pullup- eller pulldown-motstånd och egna testpunkter, som illustreras i figur nedan. När man utför mätningar på kretsen är det viktigt att förse ledaren med testpunkter efter motståndet så nära kretsen som möjligt, så att man får en alternativ mätkanal där motståndet inte kan interferera med mätvärdena.

Styrning av kretsar
Processorer och programmerbar logik kan lätt förhindra ICT:n från att styra mätobjekten. Genom att sätta dem i frånkopplat läge kan ICT:n utföra mätningarna utan att påverkas av störningar. Det är viktigt att se till att ICT:n kan komma åt alla pinnar på kretsen, även de oanvända. Speciellt nödvändiga signaler är reset och enable.
Klockor och oscillatorer bör kunna stängas av så att de inte stör mätningarna, och det ska även vara möjligt för ICT:n att lägga in en egen klocka vid testutförandet. Då ICT:n har full tillgång till alla pinnar kan den styra kretsen helt efter eget behov och testbarheten för kretsen ökas kraftigt.
Styrsignaler hos kretsarna får inte dras direkt till matningsspänning eller jord utan pull-up eller pull-down motstånd. Storleken hos dessa bör vara 100 Ω eller större.
Testprogram
Testprogrammen för ICT:n skapas bland annat utifrån CAD-data. Problemet med CAD-data är att de existerar i en mängd olika format. Tyvärr kan testingenjören inte alltid använda sig av alla typer av format. Om filerna till exempel är i binärt format kan det vara svårt, eller i vissa fall omöjligt, att översätta dem. Kontrollera därför alltid med testingenjören vilka format utvecklingsverktyget kan använda sig av. Generellt sätt är det bra att ha CAD-databasen antingen sparad i ASCII-format eller alternativt exporterad till Gencad-format. Det går oftast inte att skriva ICT testprogram ifrån CAD-filer angivna i Gerber-format.
Om funktionstester eller dylikt skall läggas in i programmet, bör även beskrivningar av dessa samt en komplett stycklista lämnas till testingenjören så tidigt som möjligt i designflödet.
Testkort
För att kunna verifiera testprogrammet måste man ha tillgång till ett fungerande kretskort att bygga fixturen och debugga testprogrammet efter.
Det är således önskvärt att förse testingenjören med 5-10 fungerande kretskort så tidigt som möjligt. Med fungerande kretskort tillhands så blir programmeringen av ICT:n både lättare och mer kostnadseffektiv.
Styrhål
Kort som saknar styrhål är svåra att orientera och gör det svårare för testnålarna att träffa testpunkterna. Styrhål bör placeras diagonalt och så långt ifrån varandra som möjligt. De måste dock vara 0,250” – 0,500” från kretskortets kanter. Då räcker det med två styrhål.
Styrhålen bör ha en diameter på minst 0,125” för bra stabilitet.
Styrhålen bör vara opläterade eftersom pläterade hål kan leda till problem då de är svåra att få i enhetliga storlekar, eftersom mängden plätering kan variera från hål till hål. Variationerna på de pläterade hålens storlekar gör att vissa blir så små att styrpinnarna inte går att trä igenom och risken är då att styrpinnarna går sönder. Ringar av plätering som placeras runt hålen är dock godkänt.
Styrhål som inte uppfyller ovan ställda krav leder generellt till sämre testbarhet. Om kortet däremot har monteringshål som uppfyller alla nedanstående krav, är styrhål inte längre nödvändiga eftersom man då kan använda sig av monteringshålen.
BST – Boundary Scan Test
Marknadens krav på elektronikbranschen förändrades i mitten på 80-talet mot en allt större efterfrågan på produkter av mindre storlek, kortare time-to-market och en allt kortare livscykel. Dessa trender har gett en allt högre komplexitet hos produkterna, med fler fine-pitch komponenter, ökat antal ben och allt smalare PCB-mönster. Detta har lett till viss problematik inom kretskortsutveckling:
- Flera kretskort innehåller komponenter på båda sidorna om kortet och en del av noderna befinner sig på interna lager inuti kretskortet och kan inte nås utifrån.
- När den fysiska kontakten försvinner till fine-pitch komponenternas in- och utgångar försvåras analysen av produktions- och design problem.
- Om produktens storlek skall hållas liten finns det inte samma utrymme för ICT noder.
Den begränsade åtkomligheten på korten har tvingat fram en ny testteknik kallad Boundary Scan Test (BST). Syftet med BST är att man inte skall behöva testa alla noder och kretsar med testnålar utan istället testa sin konstruktion genom att endast ansluta en kontakt. För att genomföra testet så använder man sig av så kallade BScan-kompatibla kretsar, vilka fungerar som små självtestande enheter på kretskortet.
De senast åren har antalet Boundary Scan Devices (BSD) vuxit exponentiellt. Tyvärr går det oftast inte att bara använda sig av BST eftersom det generellt sett inte går att komma åt alla kretsar i konstruktionen. Detta kan bero på att:
- Man får inte plats med tillräckligt många BSD:er.
- Man vill inte använda sig av tillräckligt många BSD:er av kostnadsskäl.
- Kretskortskonstruktionen är för komplex.
Man utför därför oftast ett kombinationstest, då man testar systemet med BST, ICT eller andra relevanta metoder.
Boundary Scan-komponenter
Syftet med BST är att man inte skall behöva testa vissa noder och kretsar med hjälp av testnålar. Allt skall vara möjligt att testa genom att endast ansluta en kontakt. För att detta skall gå att genomföra använder man sig av BScan-kompatibla kretsar (BSD), vilka fungerar som självtestande enheter på kortet.
BSD skiljer sig genom att de har fyra till fem extra pinnar speciellt framtagna för BST, se BST in- och utgångar. BScan-pinnarna ansluts till en kontakt som i sin tur ansluts till en dator. Testvektorer och testsekvenser genereras med en Automatic Test Pattern Generator (ATPG) och skickas ut till BScan-komponenterna vilket möjliggör följande:
- programmering av logiska kretsar
- olika funktionalitetstest
- testa noder och ledningar för kortslutningar, olödda komponenter med mera
Genom att använda fler BSD:er ökar man signalåtkomligheten på kortet. Det är också möjligt att minska ledarnas längd, vilket leder till ett mer tillförlitligt test.
Nackdelen med många BSD:er är att de ger en högre kostnad än med vanliga komponenter. Dock bör man beakta att ett litet antal BSD:er istället innebär att alternativa testmetoder behöver användas, såsom ICT. Ett sådant alternativ kan i slutändan visa sig vara dyrare än att använda BScan-komponenter.
Det är viktigt att komponenterna som köps in verkligen är helt kompatibla med IEEE 1149.1-standarden, eftersom testflödet annars försvåras. Läs därför igenom komponentdata-bladen noga och säkerställ att komponenterna är kompatibla med IEEE 1149.1 standarden.
Vid användande av flera olika typer av BSD:er finns det risk för att de blir osynkroniserade och att testen inte går att genomföra. Använd därför i största möjliga mån komponenter ifrån samma leverantör.
BSDL-filer
För att kunna generera testvektorer till BST så måste programvaran ha en modell över komponentens karakteristik och egenskaper. Dessa modeller beskrivs med hjälp av Boundary-Scan Description Language (BSDL).
Tyvärr så saknar vissa tillverkares komponenter BSDL-filer, och dess komponenter bör om möjligt undvikas, även om det är möjligt att skriva egna specifika BSDL-filer. Detta kräver dock specialkunskap och tar extra tid.
BST in- och utgångar
BST-specifika in- och utgångar består av:
- TDI – Test Data In
- TDO – Test Data Out
- TCK – Test Clock
- TMS – Test Mode Select
- TRST – Test Reset
TRST är valfri och finns inte på alla BScan-kretsar. De BST-specifika signaler ansluts till en Test Access Point (TAP), och brukar därför även kallas för TAP-signaler. Vissa komponenter har ingångar, förutom TAP, som kan påverka BScan-funktionerna under en testsekvens, vilket kan leda till problem om två funktioner försöker styra komponenten samtidigt.
Därför bör eventuella ingångar som kan påverka BScan-funktionerna göras tillgängliga så att de är möjliga att inaktivera under testsekvensen.
TAP-signaler
För att kretsarna inte skall bli osynkroniserade, och testen ogenomförbar är det viktigt att man ansluter kretsarnas klocksignaler korrekt.
Bästa sättet att dra ledningar är att använda sig av singlepoint-distribution. Det innebär att man drar signalen direkt från källan till respektive mål, se figur nedan. Tyvärr tar ledare med sådan fördelning upp en stor area av kretskortet.
En alternativ metod som är mer areaeffektiv är att man drar ledarna med multipoint-distribution. Signalen går då från källan till närmsta krets och därefter till kretsen närmast den första och så vidare, enligt principen som visas i figur nedan. Multipoint-fördelade signaler är känsligare för störningar, och därför rekommenderas att dra känsliga signaler enligt singlepoint principen och de resterande med multipoint.

Minska ledarlängden från TAP-kontakten till den första BSD:n. Går inte det kan man buffra signalerna. Kan man inte buffra samtliga TAP-signaler, så skall klocksignalerna prioriteras.
Alla TAP-signaler bör hållas inom en och samman kontakt med minst en jordsignal nära TAP-signalerna för att få bra returströmmar och förhindra elektromagnetisk interferens (EMI).
Det bör vara max två TAP-kontakter per kretskort. Om fler TAP-kontakter än vad Boundary Scan testaren klarar av används, måste testutföraren manuellt sammankoppla TAP-kontakterna externt.
Ledningsdragning
Det är viktigt att beakta hur ledarna för kontrollsignalerna ifrån en BSD dras. Man bör i största möjliga mån se till att inte koppla kontrollsignalerna från en icke-BSD till ytterligare en icke-BSD krets, enligt figur nedan, eftersom det leder till dålig kontrollbarhet och svårigheter att generera testvektorer. Om flera enheter delar på en nod blir det svårt att behandla dessa separat. Noder bör därför delas upp till separata ledare.

Grupp
För större system tenderar antalet kontrollsignaler bli så stort att de inte längre kan kontrolleras effektivt. För att öka kontrollen över signalerna i ett sådant system bör de delas upp i mindre grupper, vilket visas i figuren nedan. Detta kan göras genom att antingen använda sig av ytterligare en BSD, eller genom att använda oanvända pinnar från andra BSD i systemet. En positiv bieffekt är att längden hos signalledarna minskas, vilket ökar tillförlitligheten.

Signalåtkomlighet
Avaktivering
Det är fördelaktigt om man har möjlighet skilja de digitala och analoga konstruktionsdelarna ifrån varandra under test, eftersom de annars riskerar att störa varandra under pågående test. Det mest effektiva sättet att säkerställa att en störning inte uppstår är att avaktivera kretsarna helt. Ett sätt att göra detta på är att addera ytterligare signaler samt en buffert mellan den sändande bussen till D/A-omvandlaren och den mottagande bussen från A/D-omvandlaren. Man kan då separera de olika areorna från varandra genom att stänga av någon av buffrarna, se figur nedan.

Möjligheten att avaktivera enheter är också viktig när man letar efter överlödningar, eftersom enheten annars kommer att störa testsignalerna. Det föreligger dessutom risk för att skada enheten om en överlödning existerar.
TMS och TCK
Ibland kan det dyka upp fel i BScan-kedjan, där det diagnostiska verktyget inte kan avgöra vad eller var felet är. Detta kan bland annat bero på att det existerar en öppning mellan den sista enheten i den bristande kedjan och testaren, eller att en TMS- eller TCK-pinne för någon enhet inte är ansluten.
För att man skall kunna mäta sig fram till felet måste det vara fysiskt möjligt att komma åt TCK- och TMS-signalerna. För att ha maximal tillförlitlighet bör de vara åtkomliga så nära som möjligt till de pinnar där de är anslutna.
Write Enable (WE)
Vid programmering av till exempel FLASH-minnen, är det förhållandevis vanligt att man drar WE-ledningar från TAP-kontakten till minnet via en eller flera BSD:er. Nackdelen med denna metod är att programmeringen kommer att ta onödigt lång tid.
För att påskynda programmeringen och spara tid, är det mer effektivt om WE dras direkt ifrån TAP-kontakten till minnet, se figur nedan.

Det är viktigt att WE inte kopplas direkt till andra icke-BSD kretsar, eftersom det inte går att stänga av dessa om så skulle önskas. Notera också att om det ska vara möjligt att avaktivera andra kretsar måste man seriekoppla ledaren med ett motstånd.
Signaler som möjliggör att kretsar kan sättas i testläge är inte alltid fysiskt tillgängliga, vilket försvårar och ineffektiviserar BST:ns utförande. Se därför alltid till att signalerna dras direkt till TAP-kontakten så att de blir tillgängliga.