Know-how: JTAG en BST

(gepubliceerd op 02-10-2019)

Boundary Scan Testing (BST) is een door de JTAG voorgestelde methode om snel alle chip's op een print softwarematig te testen. Het systeem weeft een testlus door de totale print die alle JTAG-IC's individueel kan testen.


De ontstaansgeschiedenis van BST en JTAG


Het testen van elektronica
Naarmate elektronische schakelingen en apparaten ingewikkelder worden neemt het testen van de gemonteerde printen of apparatuur steeds meer tijd in beslag.
U kunt de volledige test-cyclus in vier stappen indelen:
       - Het testen van de onderdelen.
       - Het testen van de printen.
       - Het testen van het eindproduct.
       - Het testen van niet meer goed werkende systemen.

Het testen van de onderdelen
In de meeste gevallen gaat het hierbij om het stuk na stuk, dus individueel, testen van ingewikkelde geïntegreerde schakelingen in VLSI-technologie. Hiervoor zijn speciale test-automaten ontwikkeld, zogenaamde 'ATE' (Automated Test Equipment), die de kale chip bevoelen met tientallen uiterst fijne naaldjes op een 'probecard'. Deze maken rechtstreeks contact met de geleiders op de chip. Nadien worden speciaal geschreven test-programma's gedraaid, die worden geëvalueerd op speciale computergestuurde meetapparatuur.
Door de steeds verder stijgende mate van integratie en miniaturisatie wordt het testen met deze systemen echter steeds problematischer. Spoorbreedtes in een chip van minder dan 1 μm zijn geen uitzondering meer, hetgeen tot gevolg heeft dat aan het positioneren van de testpennen zeer hoge eisen worden gesteld.
Groot nadeel is bovendien dat voor iedere andere chip een volledig nieuwe opstelling van de testpennen moet worden gemaakt, hetgeen vanwege de kleine toleranties een zeer tijdrovende bezigheid is.


JTAG-en-BST-01 (© alphaprobes.com)
Een typisch voorbeeld van een probecard. (© alphaprobes.com)
Het testen van de printen
Nadat alle onderdelen zijn samengevoegd tot een print, moet u deze ook weer testen. Ook hiervoor worden soortgelijke testsystemen gebruikt, de zogenoemde 'naaldbed'-testers (bed of nails testers). De print wordt op een bed van naalden gelegd, waarbij de naalden zo geplaatst zijn dat zij contact maken met alle belangrijke in- en uitgangen op de koperbanen van de print. Ook hierbij geldt als nadeel dat u voor iedere nieuwe print een volledig nieuwe opstelling van de naalden moet maken. De testsystemen werken uiteraard software-gestuurd en voeren volledig automatisch een hele reeks testen uit. Maar ook hier veroorzaakt de moderne technologie problemen. Bij ingewikkelde schakelingen worden meerlaags printen gebruikt, waarbij de printsporen vaak niet breder zijn dan 0,1 mm. Ook nu wordt het steeds tijdrovender om het naaldbed exact op de juiste plaats van de print te positioneren.


JTAG-en-BST-02 (© hackaday.com)
Een typisch voorbeeld van een naaldbed-tester. (© hackaday.com)
Het testen van het eindproduct
Nadat alle geteste printen tot één apparaat of systeem zijn samengebouwd, moet u de onderlinge werking uiteraard weer testen. Hiervoor worden logische analysers, scope's en universeelmeters gebruikt, die op het apparaat of op delen ervan worden aangesloten en die door een meetbus met elkaar en met een computer zijn verbonden. Door de compacte bouw van moderne apparatuur is het aansluiten van alle testprobes een tijdrovend werk, een werk dat zelfs meer tijd kost dan het automatisch doorlopen van de gehele test-cyclus.

Het testen niet meer goed werkende apparatuur
Service-technici worden in toenemende mate geconfronteerd met zeer ingewikkelde elektronica, die bij de gebruiker moet worden nagekeken. Ook hiervoor worden meetapparaten gebruikt en het is dus noodzakelijk de apparatuur open te slopen, de meetprobes op de goede punten te plaatsen, de juiste signalen toe te voeren en de juistheid van de gemeten respons te interpreteren. Vaak is de service-technicus meer tijd kwijt met het bestuderen van de voorgeschreven testprocedures en het interpreteren van de meetresultaten, dan met de eigenlijke metingen zelf.

Besluit
Het testen neemt dus een steeds belangrijker plaats in bij de gehele elektronica-industrie. Bovendien zijn de testkosten een steeds terugkerende post per geleverd product, waartegen de ontwikkelingskosten vaak in het niet vallen. Deze zijn immers eenmalig.

Share

JETAG: een Philips initiatief
Dat de kosten voor het testen steeds meer uit de hand zouden gaan lopen was reeds in de jaren '80 voor de wereldwijde elektronica industrie duidelijk. Philips nam het initiatief om tot een geheel nieuwe testbenadering te komen en organiseerde in november 1985 in Eindhoven een congres, waarop de belangrijkste elektronica producenten van Europa werden uitgenodigd. Philips had intern uiteraard al de nodige experimenten uitgevoerd en kon dan ook een vrijwel uitgewerkt revolutionair idee aan de confraters voorleggen. Dat idee werd door iedereen zo goed ontvangen dat er besloten werd een Europees comité op te richten, dat de naam 'Joint European Test Action Group' kreeg, afgekort tot JETAG.
Doelstelling van dit comité was de voorstellen van Philips op zo kort mogelijke termijn uit te werken tot in ieder geval een Europese standaard voor het testen van componenten, printen en systemen. Het systeem moest zo flexibel zijn dat, als het aan de orde was, flexibel ingespeeld kon worden op nieuwe technologische ontwikkelingen.

De JETAG-ideeën
Het principe van het door Philips voorgestelde idee was dat ieder nieuw te ontwikkelen IC enige extra aansluitingen zou krijgen, waardoor het mogelijk werd dat IC volledig softwarematig gestuurd te testen. Door bovendien een soort lus te maken, die door alle IC's op een print moest lopen, kon men met dezelfde software niet alleen de individuele IC's op de print testen, maar ook de werking van de volledige print onderzoeken. Zou men deze test-lus bovendien door alle printen van een apparaat of systeem aanbrengen, dan zou men in staat zijn via een klein teststekkertje op de achterzijde van een apparaat alle elementen van zo'n apparaat uitgebreid te testen zonder het apparaat te moeten open slopen of zonder ook maar één meet- of testpen ergens op aan te sluiten.
Uiteraard moest er dus een standaard ontwikkeld worden, waar niet alleen alle Europese IC-fabrikanten zich aan zouden moeten houden, maar ook alle ontwerpers van printen, apparaten, meetapparatuur en systemen.

JTAG-BST
Uiteraard was ook de Amerikaanse en Japanse industrie bekend met de problematiek. Maar blijkbaar vond iedereen het idee van Philips zo revolutionair dat grote Amerikaanse merken als Motorola, IBM, Texas Instruments en National Semiconductor aansluiting zochten (en uiteraard van harte vonden) bij het JETAG-comité. De naam werd veranderd in 'JTAG', het 'European' verdween dus uit de naam. Het door Philips voorgestelde idee kreeg de naam 'Boundary Scan Testing', afgekort tot 'BST'.
De ontwikkelingen gingen nu erg snel. Onder leiding van British Telecom, de Engelse PTT, werd een technisch comité opgericht en onder leiding van Philips een plenair comité. Beide commissies kwamen in februari 1990 met een aanbeveling, die zowel door de IEEE en de ANSI als internationale test-standaard werd aanvaard. De nieuwe test-technologie wordt vanaf dat moment 'BST' genoemd of 'JTAG' of 'JTAG- BST'.

JTAG-en-BST-03 (© JTAG Technologies)
Het logo van JTAG. (© JTAG Technologies)

Het principe van Boundary Scan Testing


Het principe op IC-niveau
Het principe van BST gaat terug tot het meest fundamentele niveau dat u zich kunt voorstellen, namelijk dat van de IC's. IC's die voldoen aan de BST-standaard hebben vier extra pennen en een heleboel extra elektronica op de chip. Het basisidee is voorgesteld in de onderstaande figuur. De vier extra pennen hebben gestandaardiseerde benamingen:
  • TCK
    Dit is de 'Test Clock' en deze ingang wordt gestuurd met een klokpuls die het gehele testgebeuren moet synchroniseren. Deze ingang is ook verantwoordelijk voor het synchroon serieel inlezen van de test-software via de TMS-pen.
  • TMS
    Deze ingang is de 'Test Mode Select' en via deze ingang wordt het gehele testgebeuren gestuurd. Deze ingang wordt geladen met seriële woorden die op het ritme van de TCK-klok in het IC worden ingelezen. De samenstelling van het woord selecteert een IC dat getest moet worden, stelt de in- en uitgangen op non-actief als dat moet of voert een test-procedure uit.
  • TDI
    Dit is de 'Test Data Input' en dit is de ingangspen van de BST-lus die niet alleen in het IC, maar in een geheel systeem gevormd wordt. De TDI wordt aangesloten op de TDO van een vorig in de lus opgenomen IC of op de ingang van het test-systeem.
  • TDO
    Dit is uiteraard de 'Test Data Output' en deze pen wordt gebruikt voor het sluiten van de lus naar het volgende IC of naar de uitgang van het systeem.
  • TRST
    Dit is de 'Test ReSeT' en deze pen is optioneel en niet bij alle chip's aanwezig. De TRST-pen is een actief-lage reset die alle BST-registers in de chip reset.

JTAG-en-BST-04 (© 2019 Jos Verstraten)
Het blokschema van een IC dat voldoet aan de JTAG-standaard. (© 2019 Jos Verstraten)
De TAP-controller
Ieder IC dat voldoet aan de JTAG-norm moet voorzien zijn van een zogenaamde 'TAP-controller', afkorting van 'Test Access Port'. Deze poort wordt ook wel eens 'JTAG-controller' genoemd. De TAP is een intelligente schakeling die aan de hand van de samenstelling van het seriële woord dat via de TMS-pen wordt ontvangen uitmaakt wat het test-systeem van het IC verlangt. Een eerste functie van de TAP-controller is te onderzoeken of het eigen IC wordt aangesproken.
Ieder JPEG-IC krijgt een unieke code mee van de fabrikant en het is de eerste taak van de TAP om te controleren of het ontvangen seriële woord overeen komt met de in ROM opgeslagen identificatie-code. Is dat het geval, dan zal de TAP-controller reageren op de eerstvolgende woorden die worden verzonden. Het IC weet dan dat deze woorden voor zich bestemd zijn. De volgende woorden die via de TMS worden aangeboden bepalen welke actie de TAP moet ondernemen. Zo kan het zijn dat het woord verzoekt om alle in- en uitgangen van het IC in tri-state te schakelen, zodat het net lijkt of het IC niet meer in het systeem aanwezig is. Maar het TMS-woord kan bijvoorbeeld ook aan de TAP-controller vragen bepaalde signalen op bepaalde ingangen van het IC te zetten en bepaalde uitgangssignalen samen te vatten tot een serieel woord dat via de TDO-pen in de lus wordt ingevoerd.

De Boundary Scan Cell
Een tweede belangrijke eigenschap van JTAG-compatibele IC's is dat de in- en uitgangen van de chip niet rechtstreeks verbonden worden met de pennetjes van het IC. Tussen iedere pen en iedere in- of uitgang van de chip wordt een zogenaamde 'BSC' opgenomen. Dit is de afkorting van 'Boundary Scan Cell' en deze bidirectionele cellen zorgen ervoor dat u signalen op de ingangen van de chip kunt zetten en signalen van de uitgangen van de chip kunt aflezen. De BSC's zijn onder de vorm van een schuifregister is serie geschakeld tussen de TDI- en de TDO-pennen van het IC. In de normale RESET-conditie van de TAP-controller zijn alle BSC's volkomen doorzichtig. Het lijkt dan net alsof deze cellen niet aanwezig zijn, met als gevolg dat de in- en uitgangen van de chip gewoon met de pennen van het IC worden doorverbonden.
Het IC werkt dus alsof het nog nooit gehoord heeft van BST! Dat is de normale toestand van het systeem en de gebruiker merkt op dat moment in feite niet dat er iets speciaal met de IC's in de schakeling aan de hand is. Alle IC's werken volgens de door hun eigen logica voorgeschreven manier.

Het BST-principe op print-niveau


De architectuur
Dank zij het schuifregister van de BSC-cellen en de twee pennen TDI en TDO kunt u het BST-principe eenvoudig op print-niveau toepassen. De enige voorwaarde is dat alle op de print toegepaste IC's voldoen aan de JTAG-standaard. Het principe is geschetst in de onderstaande figuur. Alle TCK- en TMS-aansluitingen van de IC's worden parallel verbonden met de gelijknamige uitgangen van een speciaal IC, de TAP. De TDI- en TDO-aansluitingen van alle IC's worden in serie geschakeld, zodat een lus ontstaat die alle IC's op de print doorloopt. Het begin en het einde van de lus gaan naar het speciale TAP-IC, hetgeen weer via vier aansluitingen in verbinding staat met vier pennen van de randconnector van de print. Op deze manier kunt u via de externe TMS-aansluiting van de print alle IC's afzonderlijk adresseren, alle IC's afzonderlijk testen, maar ook tests uitvoeren op print-niveau.

JTAG-en-BST-05 (© 2019 Jos Verstraten)
De architectuur van BST op een insteekprint. (© 2019 Jos Verstraten)
Testen op printspoor onderbrekingen
Met het BST-systeem kunt u meer testen dan u in eerste instantie zou denken. Zo is het vrij eenvoudig mogelijk om een print te testen op kortsluitingen tussen printspoortjes.
Het is mogelijk via speciale controle-woorden alle BSC-cellen in tri-state te schakelen. Het lijkt dan net of alle IC's uit hun voetjes verwijderd zijn. Door nu op te dragen dat een IC een van zijn BSC-cellen uit tri-state haalt en een logische 'H' op de bijbehorende pen te zetten kunt u een 'H' op het printspoor zetten waarop deze pen is aangesloten. Vervolgens kunt u met controle-woorden alle IC's die een verbinding hebben met dit printspoor opdragen om te controleren of de BSC-cel die op dit printspoor is aangesloten inderdaad een 'H' ontvangt.
Is dat bij alle IC's het geval, dan is het printspoor in orde en kunt u een volgende test uitvoeren. Is er een IC dat geen 'H' op de ingang van de BSC-cel aantreft, dan kunt u veronderstellen dat ergens in het printspoor een onderbreking zit. Door middel van intelligente software kan het testsysteem nu zélf gaan zoeken waar die onderbreking zit. Het volstaat immers via controle-woorden bepaalde uitgangen van IC's 'H' te maken en de loop van dit signaal door de print te volgen.

Testen van een individueel IC
U kunt, alweer via intelligente software, alle IC's op één na naar tri-state sturen en nadien dat ene overblijvende IC volledig gaan testen. Doordat alle overige IC's in tri-state staan zullen zij de resultaten van de metingen en tests op geen enkele manier kunnen beïnvloeden. De testresultaten van een dergelijke test worden door de eigen TAP-controller van het IC via de BSC-cellen op de seriële lus gezet en kunnen via de externe TDO-uitgang door het meetsysteem worden uitgelezen en geëvalueerd.


Diverse lussen op één print
Bij ingewikkelde printen is het mogelijk diverse lussen te maken. De TMS-ingang van de print wordt dan door het TAP-IC opgesplitst in twee TMS-signalen, respectievelijk TMS1 en TMS2. Het TMS1-signaal stuurt de IC's die opgenomen zijn in de ene lus, het TMS2-signaal de IC's die opgenomen zijn in de tweede lus. De lussen kunnen parallel worden geschakeld. De software zorgt er immers voor dat nooit twee tests op het zelfde moment worden uitgevoerd. Het grote voordeel van het BST-systeem is dat ook nu slechts vier signalen noodzakelijk zijn voor het testen van de gehele print.

Het BST-principe op systeem-niveau


Eén BST-connector test een volledig apparaat
Het zal nu wel zonder nadere toelichting duidelijk zijn dat u het BST-systeem zonder enig probleem kunt uitbreiden naar systeem-niveau. Het volstaat immers de TDI- en TDO-aansluitingen van alle printen weer in een lus op te nemen, alle printen van het systeem te sturen met de test-klok via TCK en via een TAP-controller op systeem-niveau de seriële woorden naar de diverse TMS-lijnen van de printen te versturen. Door de seriële systeemlus worden alle meetresultaten keurig aangeboden op de TDO-uitgang van het systeem. Gelijk welk apparaat, hoe ingewikkeld ook, kan dus volledig getest worden door op de achterzijde van de behuizing een gestandaardiseerde BST-connector te monteren, die maar vijf polen nodig heeft. Naast de vier BST-signalen moet u immers uiteraard beschikken over de massa van het systeem.

Integratie van BST is systemen met niet BST-compatibele IC's
Het zal duidelijk zijn dat niet alle IC's in een BST-versies beschikbaar zijn. Dat is ook niet noodzakelijk, want het is heel goed mogelijk traditionele IC's op te nemen in een print die getest kan worden met BST. Hoe dat in zijn werk gaat is getekend in de onderstaande figuur. Het systeem is opgebouwd uit een microprocessor blok zonder BST-logica, de microprocessor besturing  en een perifeer blok. In de verbindingen tussen deze drie blokken worden speciale bidirectionele poorten opgenomen. Deze zijn voorzien van BST-logica en worden onder andere door Texas Instruments op de markt gebracht. Een bekende BST-poort is de 74BCT8244.
Deze speciale BCT-schakelingen worden uiteraard voorzien van de BST-lus, de BST-klok en het TMS-signaal. Door het tussenschakelen van deze buffers kunt u nu toch het gehele systeem testen. Weliswaar kan dat testen nu niet gebeuren op IC-niveau, maar in ieder geval op systeem-niveau. Door de juiste instructies naar de buffers te sturen kunt u immers bijvoorbeeld de microprocessor volledig isoleren. Nadien, alweer door via instructies aan de ingangen van de processor signalen te leggen via de BSC-cellen van de buffers, kunt u de werking van de processor controleren. Hetzelfde geldt voor de overige blokken van het systeem.

JTAG-en-BST-06 (© 2019 Jos Verstraten)
Het tussenschakelen van speciale bidirectionele BST-buffers. (© 2019 Jos Verstraten)

Programmeren van BST-systemen


BSDL: Boundary-Scan Description Language
Voor het uitvoeren van de tests moet u het systeem uiteraard besturen met speciale commando's. Hiervoor is een speciale taal ontwikkeld, die 'Boundary-Scan Description Language' wordt genoemd. BSDL is gebaseerd op een vereenvoudigde versie van VHDL (Very High Speed Integrated Circuit Hardware Description Language) om alle BST testmogelijkheden van een elektronisch apparaat te beschrijven. Deze beschrijving wordt door de fabrikanten verstrekt als een .bsdl-bestand. Deze bestanden worden gebruikt door boundary scan tools om testprogramma's te genereren voor boundary scan tests op apparaat- of printniveau, of worden gebruikt voor hardware fout diagnose.
Een BSDL-bestand bevat een lijst met alle BSC-cellen in het apparaat en beschrijft hoe ze zijn aangesloten op de pennen van de componenten, wat hun functie is en hoe ze kunnen worden gebruikt in een BST-test. Het BSDL-bestand bevat ook de JTAG-commando's die door het apparaat worden ondersteund en hun OpCodes. Vaak is er ook informatie over speciale functies waarmee rekening moet worden gehouden bij het gebruik van de JTAG-poort. Dit kunnen bijvoorbeeld speciale resetvoorwaarden zijn.

HSDL: Hierarchical Scan Description Language
Dit is een door Texas Instruments ontwikkelde uitbreiding op BSDL waarmee u niet alleen afzonderlijke IC's, maar ook volledige systemen kunt programmeren. HSDL maakt gebruik van dezelfde subset van VHDL-commando's die door BSDL wordt gebruikt. Echter, de VHDL statements worden in HSDL op flexibelere wijze gebruikt dan in BSDL.

Een voorbeeld van een JTAG-programma
Om u een idee te geven van de manier waarop BST werkt hebben wij in de onderstaande figuur een heel eenvoudig voorbeeldje gegeven, uitgewerkt door een student van de 'Faculdade de Engenharia da Universidade do Porto' in Portugal. De reeds eerder genoemde 74BCT8244 wordt gebruikt voor het laten knipperen van een aantal LED's die verbonden zijn met de uitgangen van de BSC-cellen in de 74BCT8244. Voor het schrijven van de code wordt gebruik gemaakt van het Windows-programma 'JTAGer' dat aan de reeds genoemde faculteit is ontwikkeld.

JTAG-en-BST-07 (© paginas.fe.up.pt)
Een voorbeeldje van het programmeren van een eenvoudige BST-test. (© paginas.fe.up.pt)
Interesse in de Hierarchical Scan Description Language?
Het gaat in het kader van dit kennismakingsartikel uiteraard te ver om alle commando's van deze taal te bespreken. Voor lezers van dit artikel die interesse hebben om te leren programmeren in HSDL hebben wij een uitgebreid PDF-bestand van 106 pagina's ter beschikking. Deze handleiding is opgesteld door Texas Instruments en door ASSET InterTech. Een email naar de auteur van dit artikel en dit artikel wordt u toegestuurd.




(Amazon sponsor advertentie)
Koop uw functiegenerator bij Amazon