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
.
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
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? –
@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? –