Quelques problèmes mineurs avec la plate-forme UVM

1. La fonction uvm_top.print_topology ()
Utilisez la fonction uvm_top.print_topology () pour imprimer la topologie uvm dans la phase end_of_elaboration_phase de la classe test_base.
Parmi eux, uvm_verbosity montre la redondance d'impression uvm.
2.
Le fichier de forme d'onde nom_module.fsdb généré dans le travail uvm du fichier de forme d'onde n'est pas le même que le fichier de forme d'onde $ {TESTCASE} _ $ SEED.fsdb après que le nom et le chemin d'accès ont été remplacés par le script.
Dans la couche supérieure:
initial
begin
$ fsdbAutoSwitchDumpfile (1000, “module_name.fsdb”, 20);
$ fsdbDumpvars (0, tb_top);
$ fsdbDumpflush; scripts de
fin
:
$ RUN + fsdbfile +… /… / wave / $ {TESTCASE} _ * $ SEED.fsdb + fsdb + autoflush
3. Extraire le signal interne duv et le comparer avec l'entrée et la sortie.
Dans le tableau de bord, vous pouvez directement extraire le signal interne duv pour comparaison. Ici, vous devez vérifier le niveau complet du signal, tb_top… CLK / VALIDE / PRET / DONNEES.
À l'heure actuelle, la méthode d'écriture standard dans le tableau de bord consiste à configurer plusieurs files d'attente vides pour stocker les données et à séparer la collecte et la comparaison des données. Il est interdit de collecter des données avant de comparer dans un certain temps (1) début fin pour éviter des problèmes de synchronisation.
4. Le problème de l'ouverture du code d'association verdi
Ouvrez verdi directement, après le chargement de la forme d'onde, la conception inport a souvent des problèmes associés après l'importation de la liste de fichiers. Vous pouvez utiliser un script pour associer automatiquement le code après l'ouverture de verdi.
Nommez le fichier journal compilé runverdi.csh et exécutez chmod + x pour le transformer en un fichier exécutable.
Ouvrez le fichier,
#! / Bin / env csh (définissez l'interpréteur par défaut)
bsub -Ip -q "xxx" -P "xxx" verdi \ (définissez la file d'attente)
+ incdir +… /… / testbench \ (réservé dans le fichier journal)
+ incdir +… /… / testcase (réservé dans le fichier journal)
-f… /… / duv / filelist.f (liste des fichiers réservés dans le fichier journal)
… /… / testcase / pipe_test_random_item.sv \ (cas d'utilisation réservé dans le fichier journal)
+ définir +
+ define + (Conservez la définition de macro dans le fichier journal)
-sv
enregistrez le fichier, lancez simplement le script.
5. Séparez la génération et la transmission des incitations (problème de séquence) Une fois
toutes les incitations générées, configurez une file d'attente vide dans le pilote et stockez d'abord l'élément. Contrôlez ensuite les conditions d'envoi, puis n'envoyez le stimulus qu'à duv, afin de séparer la génération et l'envoi du stimulus.
Le problème posé par ce qui précède est qu'après la génération de l'incitation, la plate-forme sera fermée et, à ce stade, le processus d'envoi réel de toutes les données à duv et à la sortie n'est pas terminé. Par conséquent, dans ce type d'opération, il est nécessaire de définir un délai après la génération du stimulus pour garantir que toutes les données sont complètement traitées avant l'arrêt de la plate-forme.
6. Fonction partielle du pilote dans l'interface
Lors de la vérification du module, en plus de saisir des stimuli valides et de données en amont, l'aval doit également entrer prêt. Il y a un élément de sortie ~ agent dans UVM, mais pour un traitement simple, il peut être réalisé dans l'interface de sortie.
Vous pouvez définir des tâches et des fonctions dans l'interface, en utilisant les instructions initial, always et assign. Le mode de changement du signal prêt et les opérations spécifiques correspondantes dans différents modes sont directement définis dans l'interface. Dans le même temps, des opérations simples telles que le codage 8b10b peuvent également être effectuées dans l'interface, ces opérations sont généralement complètement sans rapport avec l'article.
7. Verilog +: utilisation
[BASE +: WIDTH] signifie [(BASE + WIDTH-1): BASE], BASE est une variable et WIDTH est une constante.
Exemple:
[i * P +: P], i = 0, P = 3, [i * P +: P] = [2: 0].
8. Trouver la valeur
dans verdi Entrez la valeur dans la valeur de bus, sélectionnez le signal et recherchez directement.
Il convient de noter que la valeur doit être toutes les valeurs et ne prend pas en charge la recherche de certaines valeurs.

Publié 38 articles originaux · J'aime 29 · Visites 10 000+

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45270982/article/details/103975911
conseillé
Classement