2016-08-08 2 views
0

J'essaye de mettre en œuvre UVM RAL pour mon projet, et maintenant confronté à un problème. Par exemple, j'ai 2 registres - reg A et reg B. Je crée des classes pour les deux, mais à partir de la valeur de spécification de l'appareil dans le champ A.field1 mappage de B.field2. Comment je peux mettre en œuvre ceci dans UVM RAL. Merci.Interaction entre 2 registres UVM

Répondre

1

Vous cherchez probablement à utiliser des registres aliasés. Le concept est décrit dans le mode d'emploi UVM dans la section 5.7.3. (Page 114) http://accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.1.pdf

L'exemple dans le mode d'emploi umm utilise un couple de concepts et le même concept peut être utilisé pour générer le repliement de la A.field1 et B.field2.

  • Un rappel mécanisme
    Un rappel peut être mis en place pour le poste de prédire la fonction de la reg B.field2. Chaque fois, après la modification de la valeur de B.field2, la fonction post-prédiction est déclenchée. Dans la fonction post predict, la valeur de champ du registre A (A.field1) est également mise à jour [en appelant le champ field1.predict] reflétant le changement/lien. (En supposant A.field1 dépend/alias de B.field2)
  • de classe wrapper
    Créer une classe wrapper qui reliera les champs de ces deux registres (A & B - A.field1 à B.field2) et instancier les classe wrapper. La classe wrapper enregistre également le rappel pour le registre B field2. Si le modèle de registre est généré automatiquement, la classe wrapper peut être instanciée en dehors du modèle de registre, sinon comme dans l'exemple à l'intérieur du modèle lui-même.