Principe de fonctionnement de larchitecture JTAG :
Chaque signal primaire dentrée et de sortie est complété avec un élément de mémoire appelé cellule Boundary-Scan. Les cellules qui agissent sur les composants JTAG dentrée sont notées cellules dentrée, de même que les cellules qui agissent sur les composants JTAG de sortie sont notées cellules de sortie. Entrées et sorties sont des notations relatives au noyau logique du composant (nous verrons par la suite les problèmes que peut entraîner le fait de noter entrées et sorties les interconnections entre deux ou plusieurs composants JTAG).
Le regroupement de cellules Boundary-Scan est configuré dans un registre à décalage dentrée/sortie.
Une opération de chargement parallèle appelée capture permet de charger les données en entrée du composant JTAG vers lentrée des cellules JTAG. En même temps, elle prends la valeur du noyau logique et la transfère vers la sortie du composant JTAG pour être ensuite chargée vers lentrée de la cellule JTAG. Elle permet donc de charger la totalité des données à lentrée des cellules JTAG.
Une opération de déchargement appelée update va décharger la valeur à lentrée de la cellule JTAG vers le noyau logique. Une opération update va donc suivre un opération capture. Ces valeurs de remplacement à lentrée du composant JTAG et du signal déjà présent à la sortie de la cellule JTAG sont donc transférés vers la sortie du composant JTAG, remplaçant ainsi la valeur de sortie générée par le noyau logique.
Les données sont donc modifiées autour du registre à décalage, dans un mode série, à partir du Test Data In (TDI) et terminé par le Test Data Out' (TDO). Le 'Test Clock' (TCK) est alimenté par un autre circuit dédié à cette tâche. Le mode de fonctionnement est contrôlé par le signal de contrôle série : le Test Mode Select (TMS).
Pour utiliser le chemin de scan :
Le test JTAG ninflue en rien sur la fonctionnalité du noyau logique. En fait, le chemin du Boundary-Scan est indépendant de la fonction du composant. Nous allons par un exemple simple expliquer comment le chemin de scan fonctionne.
Soit la carte ci-dessous :
Cette figure montre une carte contenant quatre composants JTAG. Notons quil existe sur la carte un connecteur en entrée nommé TDI connecté sur lentrée TDI du premier composant. Le TDO du premier composant est relié au TDI du second composant. Et ainsi de suite jusquà la sortie du dernier composant appelée TDO. Les TCK et TMS sont reliées à chacun des composants en parallèle.
Dans ce chemin, certains tests particuliers peuvent être appliqués à chacun des composants par lintermédiaire du chemin de scan global. Ainsi il va être possible de charger une valeur spécifique dans les cellules JTAG d'entrées via la broche TDI de la carte (opération de décalage dentrée), dappliquer cette valeur au composant (opération update), de mémoriser la réponse du composant (opération capture), et de sortir cette valeur sur la broche TDO de la carte (opération décalage de sortie). En fait les cellules JTAG peuvent donc être considérées comme des clous virtuels.
La figure ci-dessous montre une cellule JTAG universelle :
Notons quil sagit ici dun exemple de réalisation dune cellule universelle JTAG puisque le standard IEEE 1149.1 nimpose pas le schéma de cette cellule mais uniquement son fonctionnement.
Elle contient les quatre modes opératoires cités précédemment :
- normal
- update
- capture
- décalage série
Lélément de mémoire est caractérisé par une bascule D précédée et suivie
dun multiplexeur.
En mode normal, les données introduites en entrée se retrouvent directement
en sortie.
En mode update, le contenu du registre de sortie est transféré en sortie.
En mode capture, le signal de données dentrée est routé vers le
registre à décalage et la valeur est mémorisée par lhorloge DR (ClockDR)
suivante.
En mode décalage , le Scan_Out dun registre à bascule est directement transféré
au suivant.
Il est important de noter que ni le mode capture ni le mode décalage ninterfèrent avec le mode normal.
Ceci permet de mémoriser la valeur dune opération et de lappliquer où lutilisateur le désire pour une éventuelle inspection sans engendrer aucune interférence. Cette application de larchitecture JTAG a dénormes potentiels pour des monitorings en temps réels.
La méthode de test JTAG, comme nous lavons indiqué précédemment, est définie par le standard IEEE 1149.1. Voyons précisément ce que cette norme impose.
Architecture dun composant à la norme IEEE 1149.1
Après cinq ans de discussions, lorganisation JTAG a finalement proposé une architecture telle que le montre la figure ci-dessous :
Cette figure montre les éléments suivants :
Les quatre broches de test : Test Data In (TDI), Test Mode Select (TMS), Test Clock (TCK), Test Data Out (TDO), une broche optionnelle : le Test Reset (TRST*). Les regroupements de toutes ces broches forment le Test Access Port (TAP).
Une cellule JTAG de chacune des broches dentrées et de sortie du composant est reliée de manière interne à un registre Boundary-Scan série.
Une machine détat qui contrôle le TAP par lintermédiaire du TCK et du TMS.
Un registre dinstructions (IR) sur n bits (n=2) qui garde les instructions courantes.
Un registre Bypass sur 1 bit (Bypass).
Un registre didentification optionnel sur 32 bits capable dêtre chargé avec un code didentification du composant.
Un seul registre peut être connecté du TDI vers le TDO (par exemple le registre IR, Bypass, Ident ). La sélection du registre se fait par le décodage du registre dinstruction (IR).
Nous allons voir dans le détail chacune des parties qui composent cette architecture.
Le représentation du Test Access Port (TAP) est donnée dans la figure ci-dessous :
Comme nous lavons vu dans le chapitre précèdent, le TAP est donc constitué de quatre signaux et dun signal optionnel :
Test Data In (TDI) : Signal de test série dentrée dont la valeur par défaut vaut 1.
Test Data Out (TDO) : Signal de test série de sortie dont la valeur par défaut vaut Z. Il nest actif que pendant lopération de décalage.
Test Mode Select (TMS) : Signal de contrôle série dentrée dont la valeur par défaut vaut 1.
Test Clock (TCK) : signal fournissant l'horloge au test.
Test Reset (TRST*) : signal qui contrôle la remise à 0 du TAP dont la valeur par défaut vaut 1. Il est actif sur un niveau bas. Cest ce signal qui est optionnel.
TMS, TCK et TRST* (sil existe) entrent dans une machine détat qui produit les changements détat du signal de contrôle. Ces signaux permettent également de contrôler le registre dinstruction ainsi que les différents registres de données.
La figure ci-dessous montre le diagramme de transition du TAP et suffit à la compréhension de son fonctionnement, sachant que la valeur qui va permettre au TAP de changer détat est celle du TMS et que ce changement détat est synchrone sur un front montant de lhorloge.
Si nous regardons les cellules JTAG plus attentivement, nous nous rendons compte quelles sont chaînées de manière à former le registre Boundary-Scan. Lordre de la chaîne est déterminé par lagencement physique des composants sur la carte et/ou par le nombre de couches de la carte. Le registre Boundary-Scan est sélectionné par une instruction commandée au registre dinstructions : instructions Extest, Sample/Preload ou Intest que nous verrons dans le chapitre suivant.
Soit la cellule JTAG dentrée classique ci-dessous :
Cette cellule ne permet de réaliser que lopération de capture et lopération de décalage. Elle peut être utilisée par exemple pour lhorloge.
La cellule JTAG classique dentrée/sortie ci-dessous montre une conception dune cellule JTAG le plus souvent utilisé et qui permet trois modes opératoires : capture, décalage et update.
Ce type de conception permet davoir des bascules D distinctes pour les fonctions de décalage et de maintien. Les données peuvent être transférées à travers le registre Boundary-Scan sans interférer sur la valeur de la section de maintien (qui peut être routée vers le port de données de sortie par lintermédiaire du multiplexeur de sortie).
La figure ci-dessous montre pourquoi une section de maintien est nécessaire :
Cette figure représente un composant JTAG dont les trois sorties vont permettre de contrôler trois RAM par lintermédiaire de leur Chip-Select (CS).
Dans un mode de fonctionnement normal, seulement une RAM est sélectionnée pour venir dialoguer avec le bus de données. Cela signifie que la plupart des combinaisons de ces trois CS sont interdites.
Il serait impossible de garder une séquence interdite si les données étaient transférées sur le chemin JTAG sans lélément de maintien et sans le multiplexeur de sortie.
Si le multiplexeur autorisait le passage de la valeur générée par le noyau logique, nous pourrions avoir un problème.
Une solution simple est dinclure la section de maintien et dutiliser linstruction Sample/Preload (que nous verrons dans le chapitre suivant) pour charger une valeur de sécurité dans la section de maintien.
Un registre dinstructions est composé dun registre à décalage, qui peut être connecté au TDI et au TDO, et une section de maintien qui garde les instructions courantes comme le montre la figure ci-dessous :
Il peut y avoir plusieurs décodeurs logiques entre ces deux sections (cela va dépendre de la taille du registre ainsi que du nombre dinstructions). Le signal de contrôle du registre dinstructions est issu du contrôleur du TAP et permet soit de décaler les valeurs dentrée/sortie vers le registre à décalage du registre dinstruction soit de charger directement vers la section de maintien (opération update le contenu du registre à décalage. Il est donc possible de charger (opération capture) certaines valeurs vers le registre à décalage du registre dinstruction.
La taille du registre dinstructions doit être dau moins 2 bits (pour permettre les différentes instructions : Bypass, Sample/Preload, Extest) mais sa taille maximale nest pas définie.
Les différentes instructions :
Larchitecture IEEE 1149.1 impose trois instructions qui sont :
Bypass : Linstruction Bypass permet de passer au travers des composants avec un bit de décalage. Tous les bits doivent être à 1 pour quelle soit exécutée.
Extest : Linstruction Extest sélectionne le registre Boundary-Scan en déconnectant le composant JTAG. Elle prépare au test des interconnections (voir les différents types de test ). Tous les bits doivent être à 0 pour quelle soit exécutée. Sa taille de code nest pas définie.
Sample/Preload : Linstruction Sample/Preload sélectionne le registre Boundary-Scan mais sans déconnecter le composant JTAG.
Le standard IEEE 1149.1 autorise un certain nombre dinstructions optionnelles qui sont les suivantes :
Intest : Elle sélectionne le registre Boundary-Scan pour le préparer au test du noyau logique interne.
Idcode : Elle sélectionne le registre didentification placé entre TDI et TDO pour le préparer au chargement du code Idcode et à sa lecture au travers le TDO. Si linstruction Idcode est chargée, il ny a pas de registre didentification présent sur la carte et linstruction Idcode peut être vu comme si lutilisateur chargeait linstruction Bypass.
Runbist : Cest linstruction qui initialise une routine de test interne et charge le résultat dans le registre placé entre le TDI et le TDO.
En 1993 une révision du standard IEEE 1149.1 apporte deux nouvelles instructions :
Clamp : Cest une instruction qui pilote la valeur de présélection vers la sortie de certains composants et qui sélectionne le registre Bypass entre TDI et TDO.
High : Cest une instruction similaire à Clamp mis à part le fait quelle permet de laisser la valeur des broches des composants de sortie sur un niveau logique haute impédance. Elle va également sélectionner le registre Bypass entre TDI et TDO.
Remarque générale :
A lexception de Bypass, le code de toutes les autres instructions nest pas défini. La taille minimale du registre dinstructions est de 2 bits et sa taille maximale est indéfinie.
La figure ci-dessous montre un schéma classique dun registre Bypass
Le registre Bypass est un registre sur 1 bit, sélectionné par linstruction Bypass et qui provient de la fonction de décalage. Il ny a pas de sortie parallèle (ce qui signifie que le signal de contrôle Update_DR nagit pas sur le registre). Au contraire, le signal de contrôle Capture_DR agit sur le registre et lautorise à garder une valeur de 0.
Le registre didentification :
Le registre optionnel didentification est un registre 32 bits qui contient les opérations de capture et de décalage. Une fois que lopération de capture a été réalisée, le code didentification sur 32 bits peut être chargé vers TDO pour une inspection. La figure ci-dessous montre une manière possible dincrémenter une cellule du registre 32 bits.