Introduction à l'IEEE 1801 (UVM)

L'IEEE 1801, mieux connu sous le nom de Méthode de vérification universelle (UVM), est le cadre standard de l'industrie pour la vérification des conceptions modernes FPGA et ASIC. Avec l'expansion des systèmes numériques pour englober des milliards de portes, des protocoles complexes et des exigences de performance serrées, les méthodes de vérification traditionnelles deviennent insuffisantes. UVM offre une approche systématique, évolutive et réutilisable basée sur SystemVerilog, permettant aux ingénieurs de construire des environnements d'essai robustes qui captent des erreurs fonctionnelles et de synchronisation avant la fabrication de silicium.

Au début des années 2000, les ingénieurs ont souvent écrit des testbenches ad-hoc en Verilog ou en VHDL, ce qui a entraîné des efforts dupliqués, une mauvaise réutilisation et des lacunes de vérification. UVM a abordé ces questions en définissant une bibliothèque de classe commune et un ensemble de pratiques exemplaires pour construire des environnements de test orientés objet et transactionnel. Aujourd'hui, UVM est soutenu par tous les principaux fournisseurs EDA et est essentiel pour tout projet de conception numérique sérieux.

Concepts de base et architecture des UVM

Au cœur de cette architecture, UVM est construite sur une architecture en couches qui sépare les préoccupations et favorise la modularité. La compréhension de ces couches est la clé pour tirer parti efficacement des UVM.

Modélisation du niveau transactionnel (TLM)

Au lieu de traiter les transitions de signaux individuelles, TLM utilise transactions—objets de données qui représentent une opération complète de bus ou un échange de protocole. Cette abstraction simplifie considérablement le développement de testbench et facilite la production de stimulus complexes. UVM fournit une interface TLM standard (sortie, accès, transport, etc.) et supporte à la fois la communication de blocage et non de blocage.

Composants UVM et hiérarchie

Un banc d'essai UVM typique se compose des blocs de construction suivants, chacun dérivé de la classe de base des composants UVM ():

  • Test: Le conteneur de niveau supérieur qui configure et lance l'environnement de vérification. Le test permet d'instantaner l'environnement, de définir les paramètres et de commencer les séquences.
  • Environnement (env): Contient tous les agents, tableaux de bord et collecteurs de couverture. Il inactive et connecte les composants de vérification.
  • Agent: Unité active ou passive qui encapsule un pilote, un moniteur et un séquenceur pour une interface. Les agents actifs conduisent le stimulus; les agents passifs n'observent que.
  • Séquencier:[ Contrôle le flux des transactions. Il reçoit les éléments de séquence d'une séquence de test et les transmet au conducteur.
  • Driver: Convertit les transactions en activité de niveau de signal sur l'interface DUT. Il pilote la DUT en utilisant une boucle protocolaire.
  • Moniteur: Observe l'interface DUT, capture les données et envoie des informations de niveau transactionnel aux tableaux de bord ou aux composants de couverture.
  • Scoreboard:[ compare le comportement observé de la DUT avec les résultats attendus, souvent à l'aide d'un modèle de référence ou d'un vérificateur de données.
  • Coverage Collector:[ Surveille les points de couverture fonctionnels définis dans le plan de vérification pour mesurer l'exhaustivité de la vérification.

La base de données sur les modèles et la configuration d'usine

L'usine permet de dépasser les types et séquences de composants au moment de l'exécution sans changer le code source, de permettre la réutilisation des tests et des scénarios de test flexibles. Avec un seul changement de configuration, un test peut remplacer un pilote par une implémentation différente ou modifier le comportement d'un moniteur. La base de données de configuration ([) offre un moyen centralisé de définir et d'obtenir des paramètres à travers la hiérarchie testbench. Par exemple, un test peut définir une période d'horloge ou une variante de protocole dans la configuration db, et tous les composants en aval peuvent la récupérer.

Phases UVM

UVM définit un flux d'exécution structuré à travers une série de phases. Ces phases garantissent que les composants sont construits, connectés et exécutés dans un ordre prévisible. Les phases clés comprennent:

  • Phase de construction: Construit la hiérarchie testbench, créant tous les composants et configuration de réglage. Cette phase est descendante : le test construit l'environnement, qui construit des agents, etc.
  • Connect Phase:[ Connecte des composants ensemble, par exemple câblage d'un port d'analyse de moniteur vers un tableau de bord d'exportation.
  • Fin de la phase d'élaboration :[ Ajustements finaux après construction et raccordement, tels que la mise en place de chronométrages ou la topologie d'impression.
  • Phase de rotation: Exécute le stimulus de test. C'est une phase de tâche où les séquences génèrent des transactions et où le pilote/programmeur interagit avec le DUT.
  • Étape d'extraction:[ Recueille les données finales provenant des tableaux de couverture et des tableaux de bord avant de les déclarer.
  • Vérifier la phase: Effectue les assertions finales et les vérifications.
  • Phase du rapport : Imprime les rapports sommaires et l'état des laissez-passer/échecs.
  • Phase finale : Nettoyage, fermeture de fichiers, etc.

Ces phases sont appelées automatiquement par la racine UVM, assurant la cohérence de tous les composants. Comprendre ce cycle de vie est essentiel pour éviter des pièges communs comme des composants de construction dans la mauvaise phase ou essayer de connecter des ports trop tard.

Application des UVM aux modèles FPGA et ASIC

Dans le développement de l'ASIC, où les coûts de masques se chiffrent en millions de dollars, la vérification exhaustive n'est pas négociable. La capacité de produire des stimuli à distance et de collecter une couverture fonctionnelle s'avère inestimable pour atteindre les objectifs de fermeture de couverture. Pour les EPGP, la vérification est souvent plus souple en raison de la capacité de reprogrammer, mais les EPGP offrent toujours des avantages importants pour attraper les erreurs logiques tôt, réduire le temps de débogage en laboratoire et assurer la conformité aux normes d'interface.

Exemple : Utilisation d'UVM pour vérifier une interface AXI4-Stream

Considérez une conception numérique qui implémente un protocole AXI4-Stream, commun dans le traitement vidéo et les accélérateurs de données. Un testbench UVM pour cette interface comprendrait:

  • AXI-Stream Agent:[ Contient un pilote qui génère des poignées de main valides avec des états d'attente aléatoires, un moniteur qui capture les transactions et un séquenceur qui accepte les éléments de séquence.
  • Scoreboard: reçoit des transactions du pilote (stimulus) et du moniteur de sortie DUT. Il compare les données et les vérifications pour les violations du protocole (p. ex., chronométrage de l'affirmation tlast).
  • Coverage Collector: Surveille les éléments comme la distribution de la longueur du paquet, les lacunes inter-paquets, et l'alignement de tkeep.
  • Séquences de test:[ Une séquence peut conduire des paquets de retour à dos, des scénarios de contrepression ou une injection d'erreur (p. ex., un tlast manquant).

Avec UVM, le même agent peut être réutilisé pour plusieurs conceptions qui communiquent sur AXI4-Stream, réduisant considérablement le temps de vérification pour les projets ultérieurs.

Vérification des logiciels électriques avec UVM et UPF

Les modèles modernes comprennent souvent plusieurs domaines de puissance et des techniques de faible puissance telles que le gingage d'horloge et l'arrêt de puissance. UVM s'intègre au format de puissance unifié (UPF) et IEEE 1801 lui-même (la norme couvre également l'intention de puissance, bien que UVM se concentre sur la vérification).

Avantages de l'adoption des UVM dans votre flux de vérification

Les avantages de UVM vont bien au-delà de la normalisation. Les équipes qui investissent dans UVM signalent des améliorations mesurables de la productivité, de la qualité et de la réutilisation.

  • Reutilisabilité: Les composants UVM (agents, moniteurs, tableaux de bord) peuvent être réutilisés dans les projets, ce qui permet de gagner des mois de développement.
  • L'évolutivité de Block à SoC: Les environnements UVM s'échellent de façon transparente. Un banc de test de niveau bloc peut être innové plusieurs fois dans un environnement de niveau SoC, avec des changements minimes. La nature hiérarchique des UVM permet des tests d'intégration de haut niveau sans réécrire les pilotes de bas niveau.
  • La régression automatisée et la vérification de la couverture : Les UVM=1 sont intégrés au support des séquences à random limité et la couverture fonctionnelle permet la vérification de la couverture. Les ingénieurs écrivent des points de couverture et les exercices de régression vérifient automatiquement la quantité d'espace d'état de conception qui a été exercée.
  • Productor Ecosystem: Parce que les UVM sont de série IEEE et largement adoptés, trouver des ingénieurs de vérification expérimentés, du matériel de formation et des VIP commerciaux est simple.
  • Better Collaboration: Un environnement UVM fournit un langage et une méthodologie communs à toutes les équipes de conception, aux équipes de vérification et même aux fournisseurs externes de PI. Déboguer un test défaillant est plus facile lorsque tous les composants suivent les mêmes modèles d'interface et les mêmes mécanismes de rapport.

Défis et meilleures pratiques

Malgré ses avantages, le UVM a une courbe d'apprentissage raide et quelques défis organisationnels. Des équipes expérimentées ont développé des pratiques exemplaires pour atténuer ces problèmes.

Pièges fréquents

  • Sur-ingénierie: Les nouveaux arrivants créent parfois des testbenches trop complexes avec des hiérarchies profondes et une abstraction excessive. Commencez simplement, avec un seul agent et un tableau de bord de base, puis ajoutez progressivement des fonctionnalités.
  • Par exemple, appeler avant le début de la phase de lancement peut conduire à des impasses. Respectez toujours la séquence de phase et utilisez et correctement.
  • Ignorer la séquence Layering:[ L'écriture de séquences qui manipulent directement des signaux va à l'encontre de l'objectif de TLM.
  • Insuffisante planification de la couverture: UVM fournit des mécanismes de couverture, mais les équipes doivent définir des bacs de couverture significatifs.

Meilleures pratiques

  • Utilisez la base de données de configuration avec sagesse:[ Définissez les valeurs par défaut pour les paramètres dans le test de base, et les surchargez dans les tests dérivés.
  • Leverage Callbacks and Hooks: UVM fournit des mécanismes de rappel pour étendre le comportement des composants sans modifier la classe de base. Utilisez-les pour la logarithme, l'injection d'erreur ou la vérification de protocole.
  • Développer une bibliothèque VIP réutilisable:[ Les interfaces standard comme AXI, AHB, I2C et UART devraient être construites une fois comme un paquet d'agents UVM. Maintenez ces VIP avec des API claires et de la documentation.
  • Adopt Continu continue Integration (CI) for Regressions: Exécutez automatiquement les régressions UVM sur les commits de code. Utilisez un tableau de bord de régression pour suivre les taux de passage et les mesures de couverture au fil du temps.
  • Former votre équipe: UVM a beaucoup de pièces mobiles.Investir dans la formation formelle (p. ex., de Doulos, Verification Academy, ou les fournisseurs EDA) et encourager le mentorat entre ingénieurs expérimentés et juniors.

Comparaison des UVM et d'autres méthodes de vérification

Bien que les UVM dominent l'industrie, d'autres approches existent. Comprendre les compromis aide les équipes à choisir l'outil approprié pour leurs besoins.

  • Testbenches directes (VHDL/Vérilog): Simple, mais non réutilisable ou évolutive. Convient uniquement pour les blocs minuscules avec une logique triviale.
  • OVM (Méthode de vérification ouverte):[ Le prédécesseur de UVM. OVM est maintenant obsolète; UVM a incorporé ses meilleures caractéristiques et ajouté l'usine, config DB, et un support standard plus large.
  • SystemVérilog Assertions (SVA) et Couverture: Souvent utilisé dans les testbenches UVM pour vérifier les propriétés de faible niveau. SVA n'est pas une méthodologie complète mais complète UVM.
  • Vérification formelle:[ Exhaustive mais limitée par la taille de conception. Meilleur utilisé aux côtés des UVM pour la logique de contrôle de clé.
  • C/C++ avec UVM-SystemC: Pour la vérification au niveau du système, UVM-SystemC étend la méthodologie à des niveaux d'abstraction plus élevés.
  • Stimulus portable (PSS):[ Une norme relativement nouvelle visant à déplacer la génération de stimulus sur plusieurs niveaux d'abstraction (du système au RTL). PSS peut être intégré avec UVM pour des scénarios complexes.

Ressources externes pour l'apprentissage des UVM

Pour approfondir votre compréhension de l'IEEE 1801 (UVM), les ressources suivantes sont recommandées :

Orientations futures

Avec l'essor des accélérateurs d'apprentissage automatique, des véhicules autonomes et des communications 5G/6G, les conceptions intègrent des éléments plus hétérogènes. UVM s'adapte à ces défis en s'intégrant plus étroitement avec UVM-SystemC pour les modèles de niveau bloc et de niveau système, et par le Portable Stimulus Standard[ (PSS) pour unifier la génération de tests à travers les outils de simulation, d'émulation et formels. De plus, la norme IEEE 1800.2 régit désormais les UVM, reflétant sa maturité et la nécessité de mises à jour continues pour soutenir les flux de vérification modernes.

Conclusion

L'IEEE 1801 (UVM) a transformé la vérification numérique d'une activité ad hoc en une discipline d'ingénierie rigoureuse et répétable. Son architecture normalisée, l'abstraction basée sur TLM et les modèles puissants tels que l'usine et la configuration DB permettent aux équipes de construire des environnements d'essai robustes et réutilisables pour les conceptions FPGA et ASIC. Bien que la courbe d'apprentissage soit non-triviale, les gains à long terme en efficacité de vérification, fermeture de couverture et premier silicum de loin supérieur à l'investissement initial.