T&M
JTAG – og mulighetene for bedre test
Bruk av JTAG som testmetode fremfor komplekse testfiksturer kan spare både tid og frustrasjoner.
Boundary scan, eller i dag mest kjent under standardbetegnelsen JTAG, har en lang historie og var et tema allerede da undertegnede entret elektronikkbransjen for snart 40 år siden. The Joint Test Action Group ble etablert så tidlig som i 1985, men testmetodikken ser ut til å ha vunnet nytt terreng i takt med utviklingen av stadig mer komplekse og vanskelig tilgjengelige komponenter og kort.
JTAG er således en etablert teknologi (og industristandard) med et potensial som nå blir fullt ut realisert. I samarbeid med en av leverandørene på området, XJTAG Ltd., presenterer vi her en aldri så liten introduksjon til temaet. Forbindelsestesting og i-system-programmering (ISP) er de to bruksområdene som oftest forbindes med JTAG, men det har mye mer å tilby, som vi snart skal få se.
Bakgrunn
JTAG ble utviklet for å løse vanskeligheter med testing av kretser ved hjelp av den tradisjonelle nålefikstur-, eller «bed-of-nails»-tilnærmingen. Moderne pakketeknologier som BGA og Chip Scale Packaging begrenser og i noen tilfeller eliminerer fysisk tilgang til pinner (ordet «pinner» vil bli brukt til å beskrive både ledningsforbindelser og BGA-loddekuleforbindelser). JTAG løser dette problemet ved å plassere celler mellom de eksterne tilkoblingene og den interne logikken til komponenten, se figur 1. Med cellene konfigurert som et skiftregister, kan JTAG brukes til å sette og hente verdiene til pinner (og nettverkene som er koblet til dem) uten direkte fysisk tilgang.
Det finnes også en mulighet for å ta prøver av dataverdiene når de passerer mellom kjernelogikken og pinnene under normal drift av enheten.
Ekstra pinner
JTAG-grensesnittet legger til fire ekstra pinner på hver enhet: TDI for å legge inn data til enheten, TDO for å sende ut data fra enheten, TMS for å kontrollere hva som skal gjøres med dataene og et klokkesignal, TCK for å synkronisere det hele. For at en komponent skal være JTAG-kompatibel, må produsenten levere en BSDL (Boundary Scan Description Language) fil, som beskriver hvordan JTAG-aspektene ved komponenten fungerer. Dersom en krets inneholder mer enn én JTAG-kompatibel komponent, kan disse kobles sammen for å danne en JTAG-kjede. I en JTAG-kjede blir datautgangen fra den første enheten datainngangen til den andre enheten; kontroll- og klokkesignalene er felles for alle enhetene i kjeden. Figur 2 viser en representasjon av en enkel JTAG-kjede som inneholder tre enheter.
Ball Grid Array (BGA)
En BGA-pakke, som vist i figur 3, skiller seg fra tidligere pakketeknologier ved at alle dens eksterne tilkoblinger gjøres gjennom loddekuler mellom undersiden av enheten og kretskortet i stedet for gjennom pinner som stikker ut fra siden av enheten. Testing av kretser som inneholder BGA-pakkede enheter har vært en av drivkreftene bak populariseringen av JTAG-testing. Fordi forbindelsene mellom enheten og kretskortet er utilgjengelige både fysisk og for visuell inspeksjon, er røntgeninspeksjon det eneste alternativet til JTAG for å overvåke produksjonsintegritet. Denne kostbare og tidkrevende prosessen krever at hvert kort røntgenfotograferes, og at bildene inspiseres for å kontrollere at hver loddekule er riktig plassert, har kontakt med kortet, men ikke har flytt utover for mulig å forårsake kortslutning. Røntgen gir nyttig informasjon, men er fortsatt avhengig av visuell inspeksjon, manuell eller automatisert, så den kan ikke brukes fullt ut for å finne alle feil.
På denne bakgrunnen er JTAG Boundary Scan mer enn et nyttig alternativ til testing i dybden; det er et betydelig pengebesparende verktøy som kan eliminere behovet for kostbar og muligens ufullstendig røntgenteknologi.
Testing av kjedeintegritet
JTAG-testing kan være ganske grunnleggende eller svært avansert. Den mest grunnleggende formen for testing er kjedeintegritetstesting, dvs. testing av at JTAG-enhetene som er ment å være i JTAG-kjeden faktisk eksisterer.
De fleste JTAG-kompatible enheter inneholder en ID-kode som kan brukes til å teste at enhetene er på plass og at JTAG-kjeden er riktig koblet til. Enheter som ikke inneholder ID-koder vil alltid returnere en enkelt bit med verdien 0, slik at JTAG-kjeden kan testes for riktig sekvens av enheter med og uten ID-koder.
Testing av forbindelse
Forbindelses- eller sammenkoblingstesten sjekker tilkoblingene rundt JTAG-aktiverte komponenter i en krets. Disse tilkoblingene, kjent som nett, kan ha feil i fire kategorier: kortslutning, åpen krets, fastlåst motstand og trekkmotstandsfeil. Eksempler på disse feilene er vist i figur 4. En JTAG-forbindelsestest kan kun gjøre fullstendig sjekk for feil på nett mellom JTAG-kompatible enheter, der signaler kan settes ved kilden og leses på destinasjonen for å sjekke for åpen krets-feil. (Nett med bare én JTAG-aktivert forbindelse kan fortsatt testes for kortslutningsfeil.) Profesjonelle boundary scan-verktøy kan automatisere genereringen av svært omfattende testmønstre for å implementere forbindelsestesting, ofte med minimal manuell inngripen.
En forbindelsestest er et uvurderlig verktøy i prosessen med produksjonsvalidering. Hver krets som lages kan kontrolleres for produksjonsfeil forårsaket av prosesshendelser, som for eksempel kortslutning av kontakter på en enhet, forårsaket av loddetinn. Der BGA-enheter er involvert, og det er liten mulighet til å inspisere visuelt eller fysisk undersøke tilkoblingene, er verdien av en JTAG-forbindelsestest tydelig.
Testing av ikke-JTAG enheter
Deler av en krets som ikke er JTAG-kompatible kan også testes. Innganger til ikke-JTAG-enheter kan styres via JTAG der disse deler nett tilkoblet JTAG-kompatible enheter. På samme måte kan utgangene fra ikke-JTAG-enheter leses tilbake via JTAG-enheter. Designernes kunnskap om forventet drift av de ikke-JTAG-kompatible delene vil derfor tillate dem å konstruere og utføre tester via JTAG som utøver funksjonaliteten til enhetene.
Denne testformen kan brukes enten på en enkelt ikke-JTAG-enhet eller på en hvilken som helst klynge av ikke-JTAG-enheter i kretsen, som kan sees på som en funksjonell enhet. Et viktig eksempel på denne metoden er minnetesting. En sekvens av JTAG-testsignaler opprettes for å manipulere kontrollsignalene og adresse- og databussene til en minneenhet for å skrive informasjon inn i minnet; en andre sekvens av testsignaler opprettes for å lese denne informasjonen tilbake.
I-System-Programmering
Mange moderne programmerbare komponent, som FPGAer og CPLDer, implementerer JTAG ikke bare for å forenkle boundary scan testing, men også med tilleggsfunksjonalitet som tillater programmering etter at de har blitt montert på et kretskort.
Andre komponenter, som flashminner, kan programmeres indirekte gjennom tilkoblingen til komponenter i JTAG-kjeden.
Muligheten for å bruke JTAG til å programmere komponenter «i systemet» eliminerer behovet for å kjøpe dyre programmerere og sokler. Det er også fordelen med å enkelt kunne oppdatere minnebildet som lagres på komponenten.
Design for test
JTAG kan være et verdifullt verktøy gjennom hele livssyklusen til en krets. JTAG kan hjelpe designere, produksjonstestingeniører og felttestingeniører.
Effektiviteten avhenger av dekningen en serie med JTAG-tester er i stand til å oppnå. Potensialet er delvis iboende i kretsen, men kan maksimeres av hvor nøye designeren er med å designe for testen.
Retningslinjer for «design for test» med hensyn til JTAG er noe du enkelt finner på nett, blant annet på XJTAG sitt nettsted. Uansett, som et utgangspunkt bør du sørge for at alle JTAG-kompatible enheter er riktig tilkoblet, og at en passende testtilgangsport (TAP) er designet i kretsen.