Vérification. approches, bancs de test et méthodologie. Yann Thoma



Documents pareils
Introduction à la programmation concurrente

Le langage VHDL. Eduardo Sanchez EPFL

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

Manipulations du laboratoire

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Instructions Mozilla Thunderbird Page 1

Vanilla : Virtual Box

VTP. LAN Switching and Wireless Chapitre 4

Guide d'installation rapide TFM-560X YO.13

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Contents Windows

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

APPENDIX 6 BONUS RING FORMAT

SIN-FPGA DESCRIPTION PAR SCHEMA

Once the installation is complete, you can delete the temporary Zip files..

Cours Bases de données 2ème année IUT

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

Génie Logiciel avec Ada. 4 février 2013

Frequently Asked Questions

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

WEB page builder and server for SCADA applications usable from a WEB navigator

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

Arbres binaires de recherche

Differential Synchronization

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Notice Technique / Technical Manual

How to Login to Career Page

Ordonnancement temps réel

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Paxton. ins Net2 desktop reader USB

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Application Form/ Formulaire de demande

Contrôle d'accès Access control. Notice technique / Technical Manual

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

DOCUMENTATION - FRANCAIS... 2

CEST POUR MIEUX PLACER MES PDF

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

PARIS ROISSY CHARLES DE GAULLE

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

SERVEUR DÉDIÉ DOCUMENTATION

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Quick Start Guide Touch Tone Capture. Guide de démarrage rapide Saisie à l aide du clavier

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

MANUEL MARKETING ET SURVIE PDF

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

DOCUMENTATION - FRANCAIS... 2

First Nations Assessment Inspection Regulations. Règlement sur l inspection aux fins d évaluation foncière des premières nations CONSOLIDATION

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Configurer la supervision pour une base MS SQL Server Viadéis Services

Bases de données avancées

France SMS+ MT Premium Description

Exemple PLS avec SAS

Academic Project. B2- Web Development. Resit Project. Version 1.0 Last update: 24/05/2013 Use: Students Author: Samuel CUELLA

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Gestion des prestations Volontaire

Conception Systèmes numériques VHDL et synthèse automatique des circuits

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Paris Airports - Web API Airports Path finding

Installer un domaine DNS

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Conception Systèmes numériques VHDL et synthèse automatique des circuits

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

POLICY: FREE MILK PROGRAM CODE: CS-4

Exercices sur SQL server 2000

Chapitre VIII : Journalisation des événements

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

NORME INTERNATIONALE INTERNATIONAL STANDARD. Dispositifs à semiconducteurs Dispositifs discrets. Semiconductor devices Discrete devices

CETTE FOIS CEST DIFFERENT PDF

GAME CONTENTS CONTENU DU JEU OBJECT OF THE GAME BUT DU JEU

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Folio Case User s Guide

Recherche dans un tableau

Package Contents. System Requirements. Before You Begin

Programmer en JAVA. par Tama

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Bases de programmation. Cours 5. Structurer les données

Sendmail milter/greylisting

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Stratégie DataCenters Société Générale Enjeux, objectifs et rôle d un partenaire comme Data4

ANGULAR JS AVEC GDE GOOGLE

Préparer un état de l art

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

SunATM 4.0 Release Notes

Institut français des sciences et technologies des transports, de l aménagement

CHANGE GUIDE France- Monaco- Guyana- Martinique- Guadeloupe- Reunion- Mayotte

Notes de cours : bases de données distribuées et repliquées

Déploiement de SAS Foundation

Appointment or Deployment of Alternates Regulations. Règlement sur la nomination ou la mutation de remplaçants CONSOLIDATION CODIFICATION

Notes pour l'installation d'une version de Eprints sur une machine CentOS4.2 Stéphanie Lanthier Le jeudi 17 février 2006

Projet Active Object

Transcription:

Vérification approches, bancs de test et méthodologie Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License Février 2015 Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 1 / 62 Plan 1 Introduction 2 Structure des bancs de test 3 Systèmes combinatoires 4 Systèmes séquentiels 5 Interfaces asynchrones 6 Bancs de tests génériques 7 Fin de tests 8 Transactions Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 2 / 62

Introduction Fonctionnement d un banc de test Assignation des entrées du circuit à tester Détermination des valeurs des sorties attendues (références) Attente d un délai Permet l évaluation des sorties par le circuit (temps de propagation) Vérification des sorties Comparaison avec la référence Indication claire en cas d erreur Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 3 / 62 Structure des bancs de test Structure de banc de test Fichier testbench..._tb Générateur de stimuli et vérification des sorties Process Stimuli: _sti Description VHDL à tester (synthétisable) Signaux observés: _obs DUT Erreurs Solution applicable pour un design standard Un seul processus pour la stimulation/vérification... Attention, vite limité Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 4 / 62

Structure des bancs de test Structure de banc de test Fichier testbench..._tb Générateur de stimuli Process Stimuli: _sti Description VHDL à tester (synthétisable) DUT Vérification des sorties Signaux observés: _obs Erreurs Solution applicable pour un design standard Les processus de stimulation/vérification sont dans le même fichier Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 5 / 62 Structure des bancs de test Structure de banc de test: solution hérarchique Fichier testbench..._tb Générateur de stimuli Tester Stimuli: _sti Description VHDL à tester (synthétisable) DUT Vérification des sorties Signaux observés: _obs Erreurs Solution utilisée avec des outils EDA graphiques (type HDL Designer) ou pour des circuits complexes Le fichier de simulation peut comprendre plusieurs modules VHDL Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 6 / 62

Structure des bancs de test Structure de banc de test Process Fichier testbench..._tb synchronisation Générateur de stimuli Stimuli: _sti Génération des références Vérification des signaux observés avec les valeurs de références Références: _ref Stimuli: _sti DUT Description VHDL à tester (synthétisable) Signaux observés: _obs Erreurs Variante avec calcul des références par algorithme Structure sans hiérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 7 / 62 Structure des bancs de test Structure de banc de test Tester Fichier testbench..._tb synchronisation Générateur de stimuli Stimuli: _sti Génération des références Vérification des signaux observés avec les valeurs de références Références: _ref Stimuli: _sti DUT Description VHDL à tester (synthétisable) Signaux observés: _obs Erreurs Variante avec calcul des références par algorithme Structure avec hiérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 8 / 62

Structure des bancs de test Structure de banc de test Fichier testbench..._tb Test du bus _sti DUT _sti Test de l application Générateur de stimuli _obs Description VHDL à tester (synthétisable) _obs Générateur de stimuli Vérification Vérification des sorties Erreurs des sorties Solution pour applications utilisant un bus Le générateur de stimuli du bus est indépendant de l application réalisée Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 9 / 62 Structure des bancs de test Structure des bancs de test Structure avec description de spécification Phase de spécification du projet Permet de valider le fonctionnement du système avec le client Fichier testbench..._tb Ref Description de spécification _ref Spécification des sorties Générateur de stimuli _sti Stimuli du circuit Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 10 / 62

Structure des bancs de test Structure des bancs de test Structure avec description de spécification Phase de réalisation du projet Permet de valider le fonctionnement du système Fichier testbench..._tb Ref Description de spécification _ref Générateur de stimuli _sti DUT Description VHDL à tester (synthétisable) _obs Vérification des sorties Synchronisation Erreurs Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 11 / 62 Structure des bancs de test Structure des bancs de test Structure hiérarchique avec spécification Fichier testbench..._tb Ref Description de spécification _ref Tester Générateur de stimuli _sti DUT Description VHDL à tester (synthétisable) _obs Vérification des sorties Synchronisation Erreurs Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 12 / 62

Systèmes combinatoires Simulation d un système combinatoire Concept: On place des valeurs sur les entrées On attend que les sorties soient stabilisées On vérifie que les sorties correspondent Les tests peuvent être: Dirigés Aléatoires Un mélange des deux Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 13 / 62 Systèmes combinatoires Simulation d un système combinatoire Pas de simulation Stimuli Références Observés Erreurs Assignation des entrées et des références Vérification des sorties Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 14 / 62

Systèmes combinatoires Exemple: simulation d un multiplexeur (1) entity Mux4_1_tb is end Mux4_1_tb; -- Architecture du testbench VHDL library IEEE; use IEEE.Std_Logic_1164.all; architecture Test_Bench of Mux4_1_tb is --VHDL93 component Mux4_1 port (Sel_i : in std_logic_vector (1 downto 0); A_i,B_i,C_i,D_i : in std_logic; Y_o : out std_logic ); end component; for all : Mux4_1 use entity work.mux4_1(flot_don); Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 15 / 62 Systèmes combinatoires Exemple: simulation d un multiplexeur (2) --declaration de constantes constant Pas_Sim : time := 100 ns; constant Pulse : time := 4 ns; --signal de détection des erreurs signal Erreur : Std_Logic := 0 ; --signaux intermédiaires pour la simulation -- <NOM>_sti : Stimuli pour les entrées signal Sel_sti : Std_Logic_Vector(1 downto 0); signal A_sti, B_sti, C_sti, D_sti : Std_Logic; -- <NOM>_obs : Observation des sorties signal Y_obs : Std_Logic; -- <NOM>_ref : References pour verifier les sorties signal Y_ref : Std_Logic; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 16 / 62

Systèmes combinatoires Exemple: simulation d un multiplexeur (3) begin -- Interconnexion du module VHDL a simuler -- dut : Design Under Test dut: Mux4_1 port map (Sel_i => Sel_sti, A_i => A_sti, B_i => B_sti, C_i => C_sti, D_i => D_sti, Y_o => Y_obs); Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 17 / 62 Systèmes combinatoires -- Debut des pas de simulation process variable Nbr_Err : Natural; begin Nbr_Err := 0; -- initialise nombre d erreurs -- debut de la simulation report ">>Debut de la simulation"; --Test sélection 0, A = 0 Sel_sti <= "00"; A_sti <= 0 ; B_sti <= 1 ; C_sti <= 1 ; D_sti <= 1 ; Y_ref <= 0 ; --calcul reference wait for Pas_Sim/2; if Y_obs /= Y_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report ">>Erreur pour Sel = 00 et Y = 0" severity ERROR; end if; wait for Pas_Sim/2; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 18 / 62

Systèmes combinatoires... --Test selection 3, D = 1 Sel_Sti <= "11"; A_Sti <= 0 ; B_Sti <= 0 ; C_Sti <= 0 ; D_Sti <= 1 ; Y_ref <= 0 ; --calcul reference wait for Pas_Sim/2; if Y_obs /= Y_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report ">>Erreur pour Sel = 11 et Y = 1" severity ERROR; end if; wait for Pas_Sim/2; -- fin de la simulation report ">>Nombre total erreur=" & integer image(nbr_err); report ">>Fin de la simulation"; wait; --Attente infinie, stop la simulation end process; end Test_Bench; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 19 / 62 Systèmes combinatoires Scrutation de toutes les combinaisons d un SLC -- Simulation de tous les cas avec une boucle for for I in 0 to (2**Nbr_E)-1 loop --simule toutes combin. Entrees_Sti <= Std_logic_Vector(To_Unsigned(I,Nbr_E)); --Calcul de l etat des sorties avec un algorithme Sorties_Ref <=.... wait for Pas_Sim/2; if Sorties_obs /= Sorties_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report ">>Erreur pour I = " & integer image(i); severity ERROR; end if; wait for Pas_Sim/2; end loop; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 20 / 62

Systèmes combinatoires Simulation avec signal de synchronisation Temps propagation tp_comb 10 ns Synchro Stimuli Références Observés Erreur Assignation des entrées et des références Indication d'une erreur Vérification des sorties Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 21 / 62 Systèmes combinatoires Simulation avec signal de synchronisation Fichier testbench..._tb Synchronisation Générateur de signal de synchronisation Génération des stimuli et des références Vérification des signaux observés avec les valeurs de références Références: _ref Stimuli: _sti DUT Description VHDL à tester (synthétisable) Signaux observés: _obs Erreurs Structure sans hiérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 22 / 62

Systèmes combinatoires Simulation avec signal de synchronisation Tester Fichier testbench..._tb Synchronisation Générateur de signal de synchronisation Génération des stimuli et des références Vérification des signaux observés avec les valeurs de références Références: _ref Stimuli: _sti DUT Description VHDL à tester (synthétisable) Signaux observés: _obs Erreurs Structure avec hiérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 23 / 62 Systèmes combinatoires Génération du signal de synchronisation process begin Synchro_s <= 0 ; wait for 10 ns; while not Sim_End_s loop Synchro_s <= 1, 0 after tpcomb; wait for (tpcomb + 10 ns); end loop; wait; --stop le process end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 24 / 62

Systèmes combinatoires Processus de vérification process begin while not Sim_End_s loop wait until Falling_Edge(Synchro_s) or (Sim_End_s); if Signal_obs /= Signal_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report "Lors verification Signal" severity ERROR; end if; end loop; wait; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 25 / 62 Systèmes séquentiels Simulation d un système synchrone La génération d une horloge est nécessaire Plus grande difficulté à synchroniser la vérification des sorties Latence du système Les assertions peuvent offrir un bon moyen de vérifier les éléments d un protocole Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 26 / 62

Systèmes séquentiels Simulation d un système synchrone Fichier testbench..._tb Générateur de signal de synchronisation DUT Horloge Génération des stimuli et des références Références: _ref Stimuli: _sti Description VHDL à tester (synthétisable) Vérification des signaux observés avec les valeurs de références Signaux observés: _obs Erreurs Structure sans hérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 27 / 62 Systèmes séquentiels Simulation d un système synchrone Tester Fichier testbench..._tb Horloge Générateur de signal de synchronisation Génération des stimuli et des références Vérification des signaux observés avec les valeurs de références Références: _ref Stimuli: _sti DUT Description VHDL à tester (synthétisable) Signaux observés: _obs Erreurs Structure avec hérarchie Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 28 / 62

Systèmes séquentiels Simulation d un système séquentiel L horloge sert de signal de synchronisation Vérification fonctionnelle L horloge n est pas celle à fréquence réelle Les stimuli sont affectés au même instant Toutes les phases (assignation des stimuli, flanc, vérifications) sont réalisées dans une seule période d horloge Les stimulis sont activés hors des transitions de l horloge Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 29 / 62 Systèmes séquentiels Simulation d un système séquentiel Horloge Cycle de l'horloge 2 ns 2 ns 2 ns Stimuli Références Observés Erreur Indication d'une erreur Indication d'une erreur Assignation des stimuli(entrées) Assignation des références asynchrones Assignation des références synchrones Vérification asynchronedes sorties Vérification synchronedes sorties Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 30 / 62

Systèmes séquentiels Génération d une horloge Géré par un processus concurrent process begin while not Sim_End_s loop Clk_sti <= 1, 0 after Periode/2; wait for Periode; end loop; wait; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 31 / 62 Systèmes séquentiels Processus de vérification (1) Géré par un processus concurrent process begin while not Sim_End_s loop wait until Falling_Edge(Clk_sti); wait for (Periode/2)- 2 ns; --Verification asynchrone if Signal_obs /= Signal_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report"lors verification Signal, asynch" severity ERROR; end if; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 32 / 62

Systèmes séquentiels Processus de vérification (2) Géré par un processus concurrent wait until Rising_Edge(Clk_sti); wait for (Periode/2)- 2 ns; --Verification synchrone if Signal_obs /= Signal_ref then Erreur <= 1, 0 after Pulse; Nbr_Err := Nbr_Err + 1; report"lors verification Signal, synch" severity ERROR; end if; end loop; wait; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 33 / 62 Interfaces asynchrones Interfaces asynchrones Exemples d interfaces asynchrones : Mémoire avec accès asynchrone DRAM DDR Communication inter-chips FX2/3 FTDI Communication asynchrone UART SPI I 2 C Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 34 / 62

Interfaces asynchrones Interfaces asynchrones Les interfaces asynchrones demandent une autre approche, car elles ne possèdent pas d horloge, tout en faisant appel à la notion de temps Utilisation du wait, wait on et wait until Gestion de différents types de signaux: Signaux de contrôle Signaux de données Vérifications typiques: Les données ont été stables suffisamment longtemps Un signal de requête a été asserté le temps nécessaire Deux requêtes sont séparées par un temps suffisant Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 35 / 62 Méthodologie Interfaces asynchrones Il faut émuler le système communiquant avec le DUT Respect des timings asynchrones par la partie émulée Attention à ne pas bloquer le banc de test si le DUT ne respecte pas les timings ou la datasheet Exemple: Le DUT ne donne jamais d acknowledge à une requête et le banc de test attend indéfiniment sur celui-ci Le test ne se termine jamais (pour un banc de test automatique) Il faut vérifier que le DUT respecte les différentes contraintes de timing Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 36 / 62

Bancs de tests génériques Bancs de tests génériques Dans l optique d utiliser des scripts pour lancer les simulations, des paramètres génériques du banc de tests générique peuvent: Offrir un nom de fichier de Log Influencer la configuration du design En passant des paramètres génériques au design Influencer la génération de stimuli Influencer la vérification apportée Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 37 / 62 Bancs de tests génériques Banc de test générique: exemple Entité L entité du banc de test N a pas de ports Peut avoir des paramètres génériques entity mon_design_tb is generic( CONFIGINFO : integer := 0; NBLINES : integer := 1; VERIFDATA : boolean := true; VERIFCONTROL : boolean := true; LOGFILENAME : string ); end mon_design_tb; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 38 / 62

Bancs de tests génériques Banc de test générique: exemple Architecture architecture testbench of mon_design_tb is begin FILE log_file : TEXT open WRITE_MODE is LOGFILENAME; un_process: process variable l: line; begin write(l,string ("Starting simulation")); writeline(log_file,l); write(l,string ("CONFIGINFO = "),left,10); write(l,configinfo,left,10); writeline(log_file,l);... end process;... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 39 / 62 Bancs de tests génériques Banc de test générique: exemple Architecture... -- Instanciation du DUT, avec paramètre générique dut: Mon_Design generic map (NBLINES => NBLINES) port map ( clk_i => clk_sti,... ); end testbench; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 40 / 62

Bancs de tests génériques Banc de test générique: lancement Une modification des valeurs génériques ne nécessite pas de recompilation Les paramètres peuvent être fournis au lancement de la simulation (élaboration) Exemple vsim -t 1ns -novopt -GCONFIGINFO=1 -GVERIFCONTROL=false -GLOGFILENAME="unfichier.txt" work.mon_design_tb Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 41 / 62 Bancs de tests génériques Banc de test générique: automatisation Possibilité de lancer automatiquement plusieurs simulations Exemple (dans sim.do) vsim -t 1ns -novopt -GCONFIGINFO=1 -GLOGFILENAME="unfichier.txt" work.mon_design_tb run -all vsim -t 1ns -novopt -GCONFIGINFO=2 -GLOGFILENAME="unautrefichier.txt" work.mon_design_tb run -all... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 42 / 62

Bancs de tests génériques Banc de test générique: modularité Et le tout dans une fonction... Exemple (dans sim.do) proc sim_start {logfile configinfo} { vsim -t 1ns -novopt -GCONFIGINFO=$configinfo -GLOGFILENAME=$logfile work.mon_design_tb run -all }... sim_start "fichier1.txt" 1 sim_start "fichier2.txt" 8 sim_start "fichier3.txt" 15... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 43 / 62 Fin de tests Fin de tests Un banc de tests automatique doit se terminer lui-même Système standard: un signal pour la détection de fin Généré par le processus de génération ou vérification Permet d arrêter l horloge Déclaration du signal architecture testbench of mon_testbench is signal sim_end_s : boolean := false;... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 44 / 62

Fin de tests Fin de tests Processus de génération d horloge clk_proc: process is begin loop clk_sti <= 0 ; wait for CLK_PERIOD/2; clk_sti <= 1 ; wait for CLK_PERIOD/2; if (sim_end_s) then wait; end if; end loop; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 45 / 62 Fin de tests Fin de tests Processus de génération de stimuli sti_proc: process is begin for i in 1 to 1000 loop wait until falling_edge(clk_sti); input_sti <=...; end loop; -- Fin de simulation sim_end_s <= 1 ; wait; end process; La simulation s arrête automatiquement avec l arrêt de l horloge Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 46 / 62

Fin de tests Fin de tests Problème si deux processus doivent déclencher une fin de simulation! Deux processus ne peuvent pas agir sur un même signal booléen Solution: un signal par processus Déclaration du signal architecture testbench of mon_testbench is signal sim_end1_s : boolean := false; signal sim_end2_s : boolean := false;... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 47 / 62 Fin de tests Fin de tests Processus de génération d horloge clk_proc: process is begin loop clk_sti <= 0 ; wait for CLK_PERIOD/2; clk_sti <= 1 ; wait for CLK_PERIOD/2; if (sim_end1_s or sim_end2_s) then wait; end if; end loop; end process; Problème de scalabilité et de dépendance du code Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 48 / 62

Objections Fin de tests Les objections sont une solution! Chaque processus peut: Lever une objection à son démarrage La relâcher lorsqu il autorise la fin de simulation La génération d horloge peut vérifier s il y a encore une objection levée ou non Pour ce faire, utilisation de objection_pkg.vhd Utilisation du paquetage use work.objection_pkg.all; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 49 / 62 Fin de tests Paquetage objection_pkg package objection_pkg is -- This type corresponds to an objection manager. It offers 4 functions -- to raise, drop, and check the objections. type objection_type is protected -- Raises a number of objections (default: 1) procedure raise_objection(nb_obj: integer := 1); -- Drops a number of objections (default: 1) procedure drop_objection(nb_obj: integer := 1); -- Drops all objections procedure drop_all_objections; -- Returns true if there is no more objection raised impure function no_objection return boolean; end protected objection_type;... Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 50 / 62

Fin de tests Paquetage objection_pkg... -- The 4 following subprograms access a single objection object, and so -- can be used by the entire testbench, without the need of declaring an -- objection object. Basically they are offered for convenience. -- Raises an objection on the singleton procedure raise_objection(nb_obj: integer := 1); -- Drops an objection on the singleton procedure drop_objection(nb_obj: integer := 1); -- Drops all objections on the singleton procedure drop_all_objections; -- Indicates if all objections have been dropped on the singleton impure function no_objection return boolean; end objection_pkg; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 51 / 62 Fin de tests Fin de tests Processus de génération d horloge -- Generation of a clock, while there is at least an objection raised clk_proc: process is begin clk_sti <= 0 ; wait for CLK_PERIOD/2; clk_sti <= 1 ; wait for CLK_PERIOD/2; if no_objection then wait; end if; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 52 / 62

Fin de tests Fin de tests Processus de génération de stimuli -- Stimuli process number 1 sti1_proc: process is begin -- We do not want to be interrupted raise_objection; -- Let s stimulate the design wait for 200 ns; an_output_o <= 1 ; wait for 50 ns; -- OK, we are over with the stimulation from this process drop_objection; wait; end process; La simulation s arrête automatiquement avec le relâchement de toutes les objections Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 53 / 62 Transactions Transactions Contexte: vérification d un UART ayant un FIFO d envoi d une taille quelconque Un processus génère des mots à envoyer Un processus doit vérifier qu ils ont été traités correctement... Fichier testbench uart_tb Transmission des mots _ref Générateur de stimuli _sti DUT Description VHDL de l UART _obs Vérification des sorties Synchronisation Erreurs Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 54 / 62

Transactions Transactions Problème: Comment transmettre les mots du processus de génération à celui de vérification? Solution: En utilisant un FIFO et y placer des transactions Utilisation du paquetage tlm_fifo_pkg.vhd ou tlm_unbounded_fifo_pkg.vhd Paquetage générique Attention, nécessite l usage de VHDL 2008 Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 55 / 62 Transactions Transactions package tlm_unbounded_fifo_pkg is generic ( type element_type; -- Type of the element stored nb_max_data: integer := -1 -- Maximum number of element stored. -- -1 means a virtually infinite. ); type tlm_fifo_type is protected -- Puts a data into the FIFO. procedure put(data: element_type;ok: out boolean); -- Gets a data from the FIFO. procedure get(data: out element_type;ok: out boolean); -- Indicates if the FIFO is empty impure function is_empty return boolean; -- Indicates if the FIFO is full impure function is_full return boolean; -- Returns the number of data available in the FIFO impure function nb_data_available return integer; end protected tlm_fifo_type; end tlm_unbounded_fifo_pkg; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 56 / 62

Transactions Transactions Définition d un type à utiliser library ieee; use ieee.std_logic_1164.all; package user_pkg is type user_type is record data: std_logic_vector(31 downto 0); addr: std_logic_vector(7 downto 0); end record user_type; end user_pkg; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 57 / 62 Transactions Transactions Instanciation du paquetage library ieee; use ieee.std_logic_1164.all; use work.user_pkg.all; use work.tlm_unbounded_fifo_pkg; -- Create a specialized package that will offer unbounded FIFOs with the -- specific user type of data in it package unbounded_user_tlm_pkg is new tlm_unbounded_fifo_pkg generic map (element_type => user_type); Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 58 / 62

Transactions Transactions Variable partagée architecture testbench of tlm_example_tb is shared variable unbounded_fifo_user: work.unbounded_user_tlm_pkg.tlm_fifo_type; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 59 / 62 Transactions Transactions Processus d écriture write_proc3: process is variable ok: boolean; variable sample : user_type; begin for i in 1 to 30 loop cycle; while (unbounded_fifo_user.is_full) loop cycle; end loop; sample.data := std_logic_vector(to_unsigned(i,32)); sample.addr := std_logic_vector(to_unsigned(i,8)); GenerateStimuli(sample); unbounded_fifo_user.put(sample,ok); if (not ok) then report "FIFO Full"; end if; end loop; wait; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 60 / 62

Transactions Transactions Processus de lecture read_proc3: process is variable ok: boolean; variable sample : user_type; begin loop cycle; while (unbounded_fifo_user.is_empty) loop cycle; end loop; unbounded_fifo_user.get(sample,ok); if (ok) then report "read_proc3. Read a sample. Data: " & integer image(to_integer(unsigned(sample.data)))& ". Addr: " & integer image(to_integer(unsigned(sample.addr))); end if; end loop; end process; Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 61 / 62 Transactions Transactions - Conclusions Les transactions sont largement exploitées en SystemVerilog/UVM Permettent de rester à un niveau d abstraction plus élevé Permettent de s affranchir d un temps de traitement dans le DUT Y. Thoma (HES-SO / HEIG-VD / REDS) Vérification Février 2015 62 / 62