Взаимодействие между 2 регистрами UVM

Я пытаюсь внедрить UVM RAL для своего проекта и столкнулся с проблемой. Например, у меня есть 2 регистра - reg A и reg B. Я создаю классы для обоих, но из значения спецификации устройства в поле A.field1, сопоставленного с B.field2. Как я могу реализовать это в UVM RAL. Спасибо.


person Ax Maxou    schedule 08.08.2016    source источник


Ответы (2)


Вероятно, вы хотите использовать псевдонимы регистров. Концепция описана в руководстве пользователя uvm в разделе 5.7.3 (стр. 114) http://accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.1.pdf

Пример в руководстве пользователя umm использует несколько концепций, и одну и ту же концепцию можно использовать для создания псевдонимов для A.field1 и B.field2.

  • Механизм обратного вызова
    Обратный вызов можно настроить для функции постпрогноза регистра B.field2 . Каждый раз после изменения значения B.field2 запускается функция пост-прогноза. В функции постпрогноза значение поля регистра A ( A.field1) также обновляется [путем вызова field1.predict], отражая изменение/связь. (при условии, что A.field1 является зависимым/псевдонимом B.field2)
  • класс-оболочка
    Создайте класс-оболочку, который соединит поля из обоих этих регистров (A и B — от A.field1 до B.field2) и создаст экземпляр класса-оболочки. Класс-оболочка также регистрирует обратный вызов для регистра B field2. Если модель регистра генерируется автоматически, класс-оболочка может быть экземпляром вне модели регистра, иначе, как в примере, внутри самой модели.
person Rahul Menon    schedule 08.08.2016

Вы можете использовать механизм обратного вызова «uvm_reg_cbs» в соответствии с вашими требованиями. В этом классе есть предопределенные функции, такие как pre_write(), post_write(), post_predict() и т. д., которые обеспечивают гибкость взаимозависимости между регистрами.

Вы можете расширить свой класс регистра (Reg A) с помощью «uvm_reg_cbs» и зарегистрировать этот обратный вызов в другом регистре (Reg B).

person Mayank    schedule 20.03.2019