• Aucun résultat trouvé

CHAPITRE 3 UTILISATION DES TESTS STRUCTURELS DANS LA

3.4 Utilisation des vecteurs de test structurels dans la vérification RTL

3.4.2 Application des tests de transition LOC avec registres à balayage au

Les vecteurs de test utilisés dans la simulation visent initialement un niveau plus bas que celui de la vérification, le niveau porte logique. Il est difficile d'obtenir un mappage direct entre un modèle porte logique et un modèle RTL. Différentes transformations doivent être prévues pour permettre l’adaptation et l’application des tests structurels au niveau RT.

Test de transition LOC avec registres à balayage

Tel que décrit dans le chapitre 1 et illustré dans la Figure 3.2 Test de transition STF (STR) sur un nœud Xi., un vecteur de test de transition STF (STR) LOC (V1, V2) visant une panne

de délai sur un nœud Xi est constitué :

• d’un vecteur d’initialisation V1 qui force la valeur 1 (0) sur le nœud Xi.

• d’un vecteur V2 qui est le vecteur de test « stuck-at » 0(1) créant la transition T au niveau

Figure 3.2 Test de transition STF (STR) sur un nœud Xi.

Ainsi, l’application d’un vecteur de test LOC typique inclut les étapes suivantes : • charger la chaine registres à balayage;

• forcer les entrées primaires; • créer un front d’horloge; • forcer les entrées primaires; • mesurer les sorties primaires; • front d’horloge;

• décharger la chaine de scan.

Un exemple d'une partie d’un modèle de test structurel généré par un outil ATPG (Fastscan de Mentor (Graphics, 2006)) est décrit dans la Figure 3.3.

1(0) 1 2 3 4 5 6 7

Vecteur de test 1 Vecteur de test 2

0 (1)

Yl

Xi

0(1)

Donc un modèle de test structurel, généré avec les outils ATPG après insertion des registres à balayage, exerce non seulement les entrées primaires mais aussi les chaines de registres à balayage insérés dans le design. De plus, les valeurs de vecteurs de test contenues dans ce type de modèle se trouvent sous forme de séries de bits ‘0’ ou ‘1’, où toutes les entrées primaires sont regroupées en une seule variable, de même que pour les registres à balayage.

Transformation du test structurel LOC avec registre à balayage en un vecteur de simulation RTL

La génération d’un vecteur de simulation RTL à partir des modèles de tests structurels LOC basés sur l’insertion des registres à balayage requiert une adaptation vers un niveau

//ENSEMBLE DES PORTS D’ENTRÉES REGROUPÉS DANS LE BUS PI

declare input bus "PI" = "/CLOCK", "/INPUT_1", "/INPUT_N", "/scan_in1", "/scan_en";

Pattern = 0 clock_sequential;

//FORCER LA CHAINE DE REGISTRES AVEC LE PREMIER VECTEUR

Apply "grp1_load" 0 =

Chain "chain1" = "01000000101011110"; End;

//FORCER LES ENTRÉES PRIMAIRES

Force "PI" "00011" 1;

//SECOND VECTEUR RÉPONSE DU CIRCUIT AU PREMIER

Pulse "clock" 2; Force "PI" "00100" 3; MEASURE "PO" "00000" 4; pulse "/CLOCK" 5; apply "grp1_unload" 6 = chain "chain1" = "10010011010011011"; End;

//LA CHAINE DE REGISTRES REGROUPÉS DANS LE BUS CHAIN1

SCAN_CELLS =

scan_group "grp1" = scan_chain "chain1" =

scan_cell = 0 MASTER FFFF "/STATE_SIGNAL1_reg[2]" "_i2/mlc_dff2" "SD" "q";

scan_cell = 0 MASTER FFFF "/STATE_SIGNAL1_reg[0]" "_i2/mlc_dff2" "SD" "q";

scan_cell = 0 MASTER FFFF "/STATE_SIGNAL1_reg[1]" "_i2/mlc_dff2" "SD" "q";

...

d’abstraction plus élevé d’un tel vecteur conçu essentiellement pour être appliqué au niveau logique et ceci se fait en plusieurs étapes:

• identification des différents ports et registres à balayage ainsi que leurs vecteurs de test correspondants. Dans un modèle de test structurel les vecteurs de test sont appliqués seulement à deux variables, une correspond à l’ensemble des ports primaires regroupés et l’autre à l’ensemble des registres à balayage regroupés. Pour cette raison, une analyse du fichier contenant le résultat de la génération des vecteurs de test est requise pour identifier :

o chacun des ports primaires et des registres à balayage forcés par l’ensemble des tests; o leur position au niveau des deux variables regroupant l’ensemble des ports primaires et

des registres à balayage;

o les valeurs des vecteurs de test correspondantes à chacun des ports primaires et des registres à balayage contenus dans chacun des patrons de tests. Les registres à balayage et les ports primaires sont exercés avec des vecteurs de séries de bit au niveau structurel, mais peuvent avoir des types différents aux niveaux d’abstraction plus élevés. Considérant le niveau RT et les deux langages de description matérielle ciblés (VHDL et SystemC), et dépendamment des types des signaux et ports forcés aux différents niveaux, une transformation des vecteurs de séries de bits des tests structurels vers les valeurs correspondantes aux types en question doit être effectuée.

• émulation des registres à balayages au niveau RT. Les vecteurs de test structurels exercent les entrées primaires et les registres à balayage. La différence entre ce modèle de test et un vecteur typique de vérification est le chargement des chaines de registres à balayage. Ces nœuds peuvent être associés aux signaux d'état internes, au niveau RT. Donc le forçage des registres à balayage est transformé en un forçage des signaux d’état internes du DUV. Donc l’application des vecteurs de test de transition avec registres à balayage au niveau de la simulation induit une insertion des registres à balayage virtuels, cette fois non pas au niveau porte logique mais au niveau RT, permettant une amélioration de la contrôlabilité et l’observabilité combinatoire et séquentielle. Ainsi, pour couvrir un état donné d’une FSM, un seul vecteur de test suffit, ce vecteur peut forcer le design dans l’état voulu. Les longues séquences de test ne sont plus nécessaires.

La fonction « force_signal » est utilisée avec Modelsim de Mentor afin de forcer les signaux internes ;

• génération du vecteur de vérification RTL. La génération du vecteur de simulation RTL correspondant au vecteur de test structurel sera effectuée sur deux cycles d’horloge comme suit :

o 1er cycle : l’application du vecteur d’initialisation V1; ce vecteur permet de forcer

chacun des ports d’entrées primaires et des signaux d’état à des valeurs initiales correspondantes à leurs types respectifs;

o 2ème cycle : L’application du vecteur de propagation de transition V2; les entrées

primaires sont forcées et les signaux d’état auront les valeurs correspondantes à la réponse du circuit suite au premier cycle d’horloge.

On peut voir que ces vecteurs de vérification permettent de forcer les entrées comme pour n’importe quel autre vecteur de vérification, mais en plus une émulation des registres à balayage est faite en forçant les signaux d’état internes. Le code équivalent adapté à la vérification RTL de l’exemple de test présenté dans la figure est décrit ci-dessous.

Ainsi, l'application des vecteurs de test structurels au niveau RT reste possible en dépit de la faible corrélation entre les deux niveaux.

//1er CYCLE:

//PREMIER VECTEUR V1: FORCER LES SIGNAUX D’ÉTATS

Force_signal (''duv/module_name/state_signal1'',''3'','''', "verbose");

Force_signal

(''duv/module_name/sub_module_instance/sub_sub_module_instan ce/state_signal2'', "6",'' '', "verbose");

// PREMIER VECTEUR V1 : FORCER LES ENTRÉES PRIMAIRES input_1<=''3'';

input_n<=''0'';

//2ème CYCLE : LE SECOND VECTEUR V2 RÉPONSE DU CIRCUIT AU PREMIER Wait for (clock_period);

input_1<=''0''; input_n<=''1'';

Figure 3.4 Vecteur de simulation RTL formé à partir du modèle de test LOC de la Figure 3.3.