2017-09-04 5 views
0

Dans UVM, le banc d'essai n'a aucune visibilité sur les registres internes du DUT. Alors, pourquoi existe-t-il une mise en miroir et une création de modèles Register dans l'architecture UVM testbench? A quoi cela sert-il?Quel est le but du modèle de registre dans UVM?

Le banc d'essai ne viendrait pas à savoir si un bit d'état, etc. est mis à jour ou non à l'intérieur du DUT car il n'a accès qu'aux ports de sortie d'entrée.

+0

vous avez des hypothèses erronées sur l'accessibilité. tout registre ou réseau d'un DUT est accessible depuis le banc d'essai. – Serge

+0

Quel effet cela aura-t-il si nous n'utilisons pas de modèles de registre dans notre banc d'essai? Est-ce juste d'avoir un modèle de référence pour les registres de DUT ou y a-t-il un autre but? –

+0

@Serge Donc, vous voulez dire que tous les registres internes écrivent et lisent la valeur accessible depuis les ports de sortie d'entrée du DUT? –

Répondre

1

Le DUT ne dispose pas de registres internes à accès direct via les ports, mais certains registres sont accessibles via un protocole d'interface. Le modèle de registre est principalement destiné à ces registres. Mais vous pouvez accéder à n'importe quel registre dans la conception via la porte dérobée (mais pas toujours souhaitable car cela nécessite plus de travail à installer et à maintenir).

Le miroir stocke la valeur de ce que le banc d'essai pense sont les valeurs de registre du DUT. Quand vous faites un .mirror(), le modèle de registre compare la valeur de registre (réelle) avec le miroir (attendu).

Les bits d'état sont souvent difficiles à prévoir. Pour simplifier les choses, vous pouvez désactiver la comparaison du champ (ou registre) avec .set_compare(UVM_NO_CHECK). Si vous désactivez la vérification au niveau du champ, les autres champs du même registre seront toujours comparés.

Si vos ambiances et veulent faire des prédictions/miroir comparer plus complexes sur les bits d'état, vous avez les options, telles que les callbacks de registre ou de l'extension des uvm_reg et uvm_reg_field classes pour remplacer les méthodes .predict et .mirror.

+0

Dans le cas, aucun des registres n'est visible depuis le banc d'essai, y a-t-il alors un quelconque usage du modèle de registre UVM? –

+0

Le modèle Register utilise-t-il toujours un accès de porte dérobée? Je peux voir à partir de ce poste https://stackoverflow.com/q/32454818/6641380 –

+0

Les deux frontdoor et backdoor sont pris en charge, par défaut est généralement frontdoor. https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.1d/html/files/reg/uvm_reg-svh.html#uvm_reg.mirror – Greg

1

RAL UVM offre plusieurs avantages

  1. Il fournit l'abstraction de haut niveau pour lire et écrire des registres dans votre conception. Ceci est particulièrement utile lorsque le RTL de vos registres a été compilé à partir d'une autre description. Toutes les adresses et les champs de bits peuvent être remplacés par des noms lisibles par l'homme.
  2. Votre test peut être écrit indépendamment de l'interface physique du bus. Appelez simplement les méthodes de lecture/écriture.
  3. Les registres en miroir facilitent la connaissance de l'état/de la configuration de votre DUT sans devoir ajouter votre propre ensemble de variables en miroir, ou effectuer des opérations de lecture supplémentaires.
+0

Lorsque vous avez mentionné ces points, faisaient-ils référence à un accès de porte d'entrée ou de porte dérobée? –

+0

En outre, j'ai eu une idée que chaque interaction entre testbench arrive sur un DUT niveau de l'interface physique qui est la raison pour laquelle je voulais savoir comment RAL dans l'image. Mais maintenant, il semble que mon hypothèse était partiellement erronée. –

+0

Ces avantages sont là avec un accès avant/arrière. Nous essayons d'élever le niveau d'abstraction en écrivant des bancs d'essai UVM aux transactions. Il n'y a pas beaucoup de variation à la synchronisation que vous pouvez faire à partir d'un banc d'essai car la plupart de vos signaux sont liés à des horloges particulières. –