Qu'est-ce que SystemVerilog ?

Langage qui étend Verilog. Il offre des fonctions de conception comme le type logic, always_ff et always_comb, et des fonctions de vérification comme les classes, la randomisation sous contraintes et les assertions.

Nom japonais: SystemVerilog

« SystemVerilog » apparaît dans 10 questions d'entraînement réparties sur 2 thèmes, dont HDL et vérification, Flot de conception de circuits intégrés et EDA.

Domaine: HDL et vérification

Ce que SystemVerilog apporte à la conception

SystemVerilog, normalisé sous la référence IEEE 1800, est un sur-ensemble de Verilog qui ajoute des fonctionnalités aussi bien pour décrire le matériel que pour le vérifier. Côté conception, le type logic remplace la séparation déroutante entre wire et reg de Verilog pour les signaux à pilote unique ; always_ff, always_comb et always_latch expriment le matériel voulu ; et les enums, structs, packages et interfaces rendent le RTL plus lisible et moins sujet aux erreurs. En Verilog, reg signifie simplement un signal affecté dans un bloc always, pas nécessairement une bascule. Les signaux à pilotes multiples, comme les bus trois états, utilisent toujours wire, et logic est un type à quatre états qui peut contenir X et Z.

Détecter tôt les erreurs RTL

Un bogue fréquent en Verilog est le latch involontaire : un bloc always combinatoire qui laisse une sortie non affectée sur un chemin oblige l'outil à mémoriser l'ancienne valeur. Le remède standard consiste à affecter des valeurs par défaut à toutes les sorties en tête du bloc. Avec always_comb, les outils savent en outre qu'une logique combinatoire était voulue et émettent un avertissement ou une erreur lorsqu'un latch est inféré ; la liste de sensibilité est déduite automatiquement des signaux lus, ce qui évite les oublis des listes écrites à la main. always_ff signale de même le code qui ne correspond pas à des bascules déclenchées sur front.

Fonctions de vérification

La plupart des ajouts de SystemVerilog concernent les bancs de test. Les classes apportent la programmation orientée objet ; la génération aléatoire sous contraintes produit des stimuli légaux, comme des adresses alignées sur un mot ou des longueurs de 1 à 256 ; les covergroups mesurent la couverture fonctionnelle pour montrer quels cas ont été exercés ; et les SystemVerilog Assertions (SVA) expriment des propriétés temporelles, comme une réponse dans les trois cycles suivant une requête, vérifiées en simulation ou prouvées par des outils formels. Les clocking blocks définissent quand les signaux du banc de test sont pilotés et échantillonnés, évitant les courses avec la conception. L'Universal Verification Methodology (UVM, IEEE 1800.2) construit des bancs de test réutilisables sur ces fonctionnalités.

Code synthétisable et code réservé aux bancs de test

Seule une partie de SystemVerilog décrit du matériel. Le sous-ensemble synthétisable, qui comprend logic, always_ff, always_comb, les enums, structs, packages et interfaces, est accepté par les outils de synthèse et devient des portes. Les classes, la randomisation, la couverture et la plupart des types de données dynamiques n'existent qu'en simulation, où ils décrivent l'environnement autour de la conception. Les assertions peuvent être rattachées au RTL et utilisées en simulation, en vérification formelle et parfois en émulation, mais elles ne sont pas transformées en logique fonctionnelle. VHDL reste le principal langage alternatif, notamment dans certaines équipes FPGA et aérospatiales.

S'entraîner : questions sur SystemVerilog

Dans la vérification en SystemVerilog, quelle méthodologie standard sert à construire des environnements de test (bancs de test) facilement réutilisables ?

  1. AOPC
  2. BCMP
  3. CUVM (Universal Verification Methodology)
Afficher la réponse et l'explication

Réponse : C. UVM (Universal Verification Methodology)

UVM est une méthodologie standard et une bibliothèque de classes pour construire en SystemVerilog des bancs de test par assemblage de composants (driver qui applique les entrées, moniteur qui observe les sorties, scoreboard qui compare aux valeurs attendues, etc.). Les composants sont réutilisables pour vérifier d'autres conceptions, et la génération d'entrées aléatoires contraintes ainsi que la collecte de couverture s'intègrent facilement. Elle est normalisée sous IEEE 1800.2. OPC et CMP sont des techniques de fabrication.

Quelle est la définition de la vérification aléatoire contrainte de SystemVerilog ?

  1. AGénérer aléatoirement les valeurs d'entrée dans les plages et combinaisons (contraintes) admises par la spécification, pour couvrir largement les cas, y compris ceux auxquels personne ne pense
  2. BGénérer des valeurs d'entrée totalement arbitraires, en appliquant de nombreuses valeurs hors spécification
  3. CÉcrire toutes les valeurs d'entrée à la main
Afficher la réponse et l'explication

Réponse : A. Générer aléatoirement les valeurs d'entrée dans les plages et combinaisons (contraintes) admises par la spécification, pour couvrir largement les cas, y compris ceux auxquels personne ne pense

Les seuls tests imaginés par des humains (tests dirigés) tendent à laisser passer les défauts liés à des combinaisons non anticipées par le concepteur. En vérification aléatoire contrainte, on écrit des contraintes comme « l'adresse est un multiple de 4 » ou « la longueur va de 1 à 256 », et les entrées sont générées aléatoirement dans ce cadre ; on teste ainsi de nombreux cas avec des entrées pertinentes uniquement. Les cas couverts sont mesurés par la couverture, et les lacunes comblées en modifiant les contraintes ou par des tests dirigés.

Questions fréquentes

Quelle est la différence entre Verilog et SystemVerilog ?

SystemVerilog est un sur-ensemble de Verilog qui ajoute des constructions de conception plus sûres comme logic, always_ff et always_comb, ainsi que des fonctions de vérification comme les classes, les stimuli aléatoires sous contraintes, la couverture fonctionnelle et les assertions. Le code Verilog existant est en général du SystemVerilog valide.

SystemVerilog est-il synthétisable ?

Son sous-ensemble de conception l'est, notamment logic, always_ff, always_comb, les structs, les enums et les interfaces. Les constructions de vérification comme les classes, la randomisation et les covergroups sont réservées à la simulation.

Faut-il utiliser logic à la place de wire et reg ?

Pour les signaux à pilote unique, logic fonctionne qu'il soit piloté par une instruction assign ou par un bloc always ; il remplace donc les deux dans la plupart du code. Utilisez wire pour les nets à pilotes multiples, comme les bus trois états.

« SystemVerilog » dans les explications

Questions mentionnant « SystemVerilog » (10)

  1. Dans la vérification en SystemVerilog, quelle méthodologie standard sert à construire des environnements de test (bancs de test) facilement réutilisables ?
  2. Quelle est la définition de la vérification aléatoire contrainte de SystemVerilog ?
  3. Quel est l'avantage du type logic de SystemVerilog ?
  4. Quel est l'avantage d'utiliser always_ff ou always_comb de SystemVerilog à la place du always de Verilog ?
  5. Quel langage de description matérielle est principalement utilisé en conception RTL ?
  6. Quelle méthode décrit les propriétés que la conception doit satisfaire (par exemple « répondre en 3 cycles au plus après une requête ») et les fait vérifier automatiquement en simulation ou en vérification formelle ?
  7. Quelle est la différence entre les types wire et reg en Verilog ?
  8. Que signifie l'écriture « always @(*) » en Verilog ?
  9. Quelle écriture est couramment utilisée pour éviter les verrous non voulus dans un bloc always combinatoire ?
  10. Dans un banc de test, modifier les entrées du circuit par affectation bloquante au même instant que le front montant d'horloge peut poser problème. Quelle combinaison de raison principale et de remède est correcte ?

Comparatifs incluant ce terme

Termes associés

Verilog Circuit combinatoire Bascule (flip-flop) OPC (correction optique de proximité) CMP Vérification aléatoire contrainte Langage de description matérielle RTL (niveau transfert de registres) Découpe (dicing) Liste de sensibilité

Retour au glossaire