La méthodologie de vérification universelle (UVM) est un moyen populaire de vérifier les conceptions SystemVerilog et comprend un système de configuration qui présente malheureusement quelques problèmes de vitesse et d'utilisation. Rich Edelman de Siemens EDA a écrit un article détaillé de 20 pages sur la manière d'éviter ces problèmes, et je l'ai parcouru pour en résumer les points saillants pour vous. Les ingénieurs de vérification utilisent une base de données de configuration UVM pour définir des valeurs, puis pour obtenir les valeurs ultérieurement dans leur test UVM. Un exemple de définition et d'obtention d'une valeur « T » est :
uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, nom_chemin_instance, nom_champ, valeur);
La connexion du banc de test UVM au périphérique testé utilise la base de données de configuration pour transmettre les interfaces virtuelles. Il existe trois problèmes liés à l'utilisation de la configuration UVM :
- Gros code, quelque 2,600 XNUMX lignes de code
- Nécessite une correspondance de type exacte, donc « int » et « bit » ne sont pas identiques
- Code lent
Prenons le cas d'un code lent, car avec des milliers d'appels à set() utilisant des noms avec des caractères génériques, cela peut prendre jusqu'à 30 minutes pour terminer les phases « set » et « get ».
Rich propose une nouvelle solution aux configurations UVM qui offre des vitesses beaucoup plus rapides, ne prenant que quelques secondes en comparaison.
Si votre code UVM évite d'utiliser des caractères génériques et comporte peu de commandes « set », alors votre code s'exécutera plus rapidement.
Les solutions possibles aux problèmes de configuration UVM sont :
- Utilisez plutôt une variable globale
- Utiliser la configuration UVM avec un set()
- Utilisez la configuration UVM avec quelques set()
- Utiliser une arborescence de configuration
- Essayez quelque chose de différent
Cette dernière approche consistant à essayer quelque chose de différent est la nouvelle solution, et elle continue d'utiliser les API set() et get(), puis simplifie en supprimant le paramétrage des configurations, supprime la priorité et supprime le changement d'algorithme de recherche. Les résultats de cette nouvelle approche sont des vitesses rapides.
Votre nouvel élément de configuration est défini dans la classe dérivée de « config_item », et l'exemple ci-dessous montre « int value » comme propriété définie. À des fins de débogage, vous ajoutez la fonction Pretty-Print.
la classe my_special_config_item étend config_item ; function new(string name = "my_special_config_item"); super.new(nom); valeur int de la fonction finale ; chaîne de fonctions virtuelle convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); classe de fin de fonction finale
Le 'config_item' a un attribut name, et ce nom est recherché, ainsi que le nom de l'instance. L'objet de configuration possède également une fonction get_name() pour renvoyer le nom. Pour trouver n'importe quel « nom_instance.nom_champ », la base de données de configuration utilise un tableau associatif pour des vitesses de recherche et de création rapides.
Pour la traçabilité, vous pouvez savoir qui a défini ou qui a appelé get, car un nom de fichier et un numéro de ligne sont des champs dans les appels de fonction set() et get().
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
La file d'attente des accesseurs peut être imprimée pendant le débogage pour voir qui a appelé set() et get().
Pour prendre en charge les caractères génériques, il fallait ajouter un mécanisme de recherche à l'aide de conteneurs. Considérez le nom d'instance « top.abcd*_0 ».
La partie générique du nom de l'instance est gérée à l'aide de l'arborescence des conteneurs, au lieu du tableau associatif.
Résumé
Le partage de données entre le module/instance et le monde basé sur les classes dans un banc de test UVM peut être effectué à l'aide de la base de données de configuration UVM, soyez simplement conscient des ralentissements de vitesse. Si votre méthodologie utilise de nombreuses configurations, envisagez d'utiliser la nouvelle approche introduite, qui propose un package utilisant environ 300 lignes de code au lieu des 2,600 XNUMX lignes de code du fichier de base de données de configuration UVM.
Lisez l'article complet de 20 pages, Éviter la folie des configurations en toute simplicité chez Siemens EDA.
Blogs connexes
Partagez cet article via:
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :possède
- :est
- :ne pas
- $UP
- 30
- 300
- 600
- a
- A Propos
- ajouter
- ajoutant
- algorithme
- aussi
- an
- ainsi que
- tous
- api
- une approche
- SONT
- tableau
- AS
- At
- éviter
- conscients
- b
- BE
- car
- va
- ci-dessous
- jusqu'à XNUMX fois
- by
- appelé
- Appels
- CAN
- maisons
- Change
- classe
- code
- Comparaison
- complet
- configuration
- Considérer
- Contenant
- Conteneurs
- continue
- création
- données
- Base de données
- défini
- Dérivé
- Avec nos Bagues Halo
- détaillé
- dispositif
- différent
- fait
- pendant
- Easy
- Les ingénieurs
- Ether (ETH)
- exemple
- S'étend
- RAPIDE
- plus rapide
- few
- Des champs
- Déposez votre dernière attestation
- Trouvez
- Pour
- De
- plein
- fonction
- obtenez
- obtention
- Global
- disparu
- vous aider
- Faits saillants
- Comment
- How To
- HTTPS
- if
- in
- inclut
- instance
- plutôt ;
- interfaces
- introduit
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- jpg
- juste
- Nom de famille
- plus tard
- Gamme
- lignes
- regardé
- rechercher
- beaucoup
- Fabrication
- assorti
- largeur maximale
- mécanisme
- Méthodologie
- m.
- minutes
- beaucoup
- prénom
- noms
- Nouveauté
- nouvelle solution
- nombre
- objet
- of
- on
- ONE
- uniquement
- or
- ande
- paquet
- Papier
- partie
- pass
- phase
- Platon
- Intelligence des données Platon
- PlatonDonnées
- plus
- Populaire
- Post
- priorité
- d'ouvrabilité
- propriété
- propose
- des fins
- supprime
- enlever
- conditions
- Résultats
- retourner
- Rich
- Courir
- portée
- secondes
- sur le lien
- set
- mise
- Spectacles
- Siemens
- simplifie
- lent
- ralentissements
- So
- sur mesure
- Solutions
- quelques
- quelque chose
- vitesse
- vitesses
- Chaîne
- résumé
- Super
- Support
- combustion propre
- T
- Prenez
- prise
- tester
- qui
- La
- leur
- puis
- Là.
- Ces
- this
- milliers
- trois
- Avec
- fiable
- à
- top
- sujet
- Traçabilité
- arbre
- essayer
- type
- sous
- malheureusement
- Universel
- Utilisation
- utilisé
- Usages
- en utilisant
- Plus-value
- Valeurs
- variable
- Vérification
- vérifier
- via
- Salle de conférence virtuelle
- Façon..
- qui
- WHO
- sera
- comprenant
- world
- écrit
- you
- Votre
- zéphyrnet