Другое

Пути потоков транзакций в UVM RAL Model: Руководство

Полное руководство по путям потоков транзакций в UVM RAL: запросы/ответы записи/чтения, роли адаптера, предиктора и монитора в верификации регистров.

Понимание модели UVM RAL: пути потоков транзакций

Я пытаюсь понять, как работает модель UVM RAL с простой DUT, содержащей один регистр, который можно записать или прочитать. При доступе к этому регистру возвращается ответ.

Путь запроса на запись

Это правильный путь для “запроса на запись”?

  1. Виртуальный секвенсер → Модель RAL (обновление желаемого значения) → Адаптер → Секвенсер → Драйвер → Интерфейс → Регистр DUT
    (Параллельные пути):
  2. Интерфейс → Монитор → Предиктор → Модель RAL (обновление зеркального значения)
  3. Интерфейс → Драйвер → Секвенсер → Адаптер → Виртуальный секвенсер → “uvm_is_ok”

Путь ответа на запись

Это правильный путь для “ответа на запись”?

  1. Регистр DUT → Интерфейс
    (Параллельные пути):
  2. Интерфейс → Монитор → Предиктор → Модель RAL (возможно, здесь обновляется зеркальное значение?)
  3. Интерфейс → Драйвер → Секвенсер → Адаптер → Виртуальный секвенсер → “получен ответ на запись”

Путь запроса на чтение

Это правильный путь для “запроса на чтение”?

  1. Виртуальный секвенсер → Модель RAL → Адаптер → Секвенсер → Драйвер → Интерфейс → Регистр DUT
    (Параллельные пути):
  2. Интерфейс → Монитор → Предиктор → Модель RAL (без обновления зеркального значения)
  3. Интерфейс → Драйвер → Секвенсер → Адаптер → Виртуальный секвенсер → “uvm_is_ok”

Путь ответа на чтение

Это правильный путь для “ответа на чтение”?

  1. Регистр DUT → Интерфейс
    (Параллельные пути):
  2. Интерфейс → Монитор → Предиктор → Модель RAL (обновление зеркального значения? или вызов ошибки, если оно не равно данным ответа?)
  3. Интерфейс → Драйвер → Секвенсер → Адаптер → Виртуальный секвенсер → “получен ответ на чтение с данными = xyz”

Пути потоков транзакций модели UVM RAL

Представленные вами пути потоков транзакций модели UVM RAL в основном верны, но требуют уточнения в некоторых аспектах. Давайте предоставим comprehensive объяснение правильных путей потоков транзакций для операций записи и чтения в среде UVM RAL.

Содержание

Обзор архитектуры модели UVM RAL

Слой абстракции регистров UVM (UVM RAL) предоставляет структурированный подход к определению и проверке отображаемых в память регистров в тестбенче UVM. Он абстрагирует интерфейс регистров, что упрощает выполнение операций чтения/записи, предсказаний и проверок источник.

Архитектура состоит из нескольких ключевых компонентов:

  • Модель RAL: Содержит определения регистров и предоставляет методы чтения/записи
  • Адаптер: Преобразует транзакции регистров в шинные транзакции
  • Предиктор: Обновляет модель регистров на основе ответов DUT
  • Монитор: Наблюдает за шинными транзакциями и передает их предиктору
  • Виртуальный секвенсер: Координирует последовательности между разными агентами

Пути потоков транзакций записи

Путь запроса на запись

Предложенный вами путь запроса на запись в основном верен, но давайте уточним его:

Правильный путь:

  1. Виртуальный секвенсерМодель RAL (обновляет желаемое значение) → АдаптерСеквенсерДрайверИнтерфейсРегистр DUT

Параллельная обработка:

  1. ИнтерфейсМониторПредикторМодель RAL (обновляет зеркальное значение)
  2. ИнтерфейсДрайверСеквенсерОтчет о статусе (UVM_IS_OK, UVM_NOT_OK)

Согласно исследованиям, модель RAL поддерживает как прямой доступ к регистрам с использованием физического интерфейса оборудования источник. Адаптер обеспечивает правильное преобразование операций чтения/записи, выполняемых с регистром источник.

Путь ответа на запись

Ваш путь ответа на запись требует уточнения:

Правильный путь:

  1. Регистр DUTИнтерфейсМониторПредикторМодель RAL (обновление зеркального значения)

Ответ на запись обычно не возвращается через драйвер и секвенсер в стандартных реализациях UVM RAL. Как указано в исследованиях: “При записи в регистр предиктор обновляет модель регистров для отражения нового значения” источник.

Отчет о статусе происходит во время фазы запроса на запись, а не как отдельный путь ответа.

Пути потоков транзакций чтения

Путь запроса на чтение

Предложенный вами путь запроса на чтение верен:

Правильный путь:

  1. Виртуальный секвенсерМодель RALАдаптерСеквенсерДрайверИнтерфейсРегистр DUT

Параллельная обработка:

  1. ИнтерфейсМониторПредикторМодель RAL (настройка предсказания)
  2. ИнтерфейсДрайверСеквенсерОтчет о статусе (UVM_IS_OK)

Метод read() обычно используется для доступа к регистрам в UVM в формате: reg_handle.read(status, value, path) источник.

Путь ответа на чтение

Ваш путь ответа на чтение в основном верен, но требует уточнения:

Правильный путь:

  1. Регистр DUTИнтерфейсМониторПредикторМодель RAL (обновление зеркального значения и проверка)

Параллельная обработка:

  1. ИнтерфейсДрайверСеквенсерВозврат данных (фактическое прочитанное значение)

Для операций чтения предиктор обновляет зеркальное значение и выполняет проверку с ожидаемым ответом. В исследованиях упоминается, что предиктор “явным образом обновляет модель регистров на основе ответа шины” источник.

Ключевые компоненты и их роли

Модель RAL

Модель RAL предоставляет объектно-ориентированный подход на основе классов для определения структур регистров. Для каждого элемента в модели регистров — поля, регистра, файла регистров, памяти или блока — существует экземпляр класса, который абстрагирует операции чтения и записи для этого элемента источник.

Адаптер RAL

Адаптер UVM RAL — это класс, который преобразует транзакции регистров из модели регистров UVM в соответствующие шинные транзакции, понятные DUT. Адаптер обеспечивает правильное форматирование операций чтения/записи с регистра для интерфейса шины источник.

Предиктор RAL

Предиктор отвечает за обновление модели регистров UVM ожидаемыми значениями на основе шинных транзакций. Он прослушивает шинные транзакции и явно обновляет модель регистров на основе ответа шины, гарантируя, что только фактические ответы DUT обновляют модель регистров источник.

Монитор

Монитор обнаруживает шинные транзакции и передает их предиктору. Это критически важный компонент для захвата фактического поведения DUT и обратной связи с моделью RAL для синхронизации.

Рукопожатие запрос-ответ AMIQ RAL

Рукопожатие запрос-ответ AMIQ RAL обеспечивает синхронизацию драйвера с предоставленным ответом, который видит монитор. Этот компонент выступает посредником, гарантируя, что диаграмма последовательности поддерживает правильную синхронизацию между путями запроса и ответа источник.

Распространенные ошибки и лучшие практики

Предотвращение взаимоблокировок

Одной из распространенных проблем является взаимоблокировка при чтении в моделях регистров UVM. Рукопожатие запрос-ответ AMIQ RAL решает эту проблему, обеспечивая правильную синхронизацию между драйвером и ответами монитора источник.

Прямой доступ против косвенного доступа

UVM RAL поддерживает как прямой доступ к регистрам (с использованием физического интерфейса оборудования), так и косвенный доступ (напрямую к регистру RTL). Понимание, когда использовать каждый метод доступа, критически важно для эффективной верификации источник.

Обработка статуса

Правильная обработка статуса является обязательной. Параметр статуса в операциях чтения/записи захватывает статус транзакции (UVM_IS_OK, UVM_NOT_OK и т.д.) и должен проверяться во всех последовательностях источник.

Практический пример реализации

Вот упрощенный пример того, как может выглядеть поток транзакций на практике:

systemverilog
// Пример операции записи
task write_register(uvm_reg rg, uvm_reg_data_t value);
  uvm_reg_data_t status;
  rg.write(status, value, UVM_FRONTDOOR);
  if (status != UVM_IS_OK) begin
    `uvm_error("WRITE_ERROR", $sformatf("Ошибка записи со статусом: %0h", status))
  end
endtask

// Пример операции чтения
task read_register(uvm_reg rg, output uvm_reg_data_t value);
  uvm_reg_data_t status;
  rg.read(status, value, UVM_FRONTDOOR);
  if (status != UVM_IS_OK) begin
    `uvm_error("READ_ERROR", $sformatf("Ошибка чтения со статусом: %0h", status))
  end
endtask

Типичный поток включает:

  1. Генерация модели регистров: Вручную или автоматически из спецификации регистров
  2. Интеграция в тестбенч: Модель регистров интегрируется в среду тестбенча, обычно в классе среды UVM
  3. Настройка адаптера: Соответствующий адаптер подключается для преобразования операций регистров в шинные транзакции источник

Источники

  1. Пример модели RAL - VLSI Verify
  2. Автоматизация слоя абстракции регистров UVM (RAL) - Agnisys, Inc.
  3. Понимание слоя абстракции регистров UVM (RAL) – VLSI Worlds
  4. Методы доступа к регистрам в UVM RAL - VLSI Worlds
  5. Предиктор UVM RAL – VLSI Worlds
  6. Адаптер UVM RAL – VLSI Worlds
  7. Как избежать взаимоблокировки при чтении модели регистров UVM - AMIQ Consulting
  8. Модель слоя абстракции регистров (RAL) в UVM - ChipCoverage

Заключение

На основе результатов исследований, ваше понимание путей потоков транзакций UVM RAL в основном верно, но есть некоторые важные уточнения:

  1. Путь ответа на запись: Ответ на запись обычно не возвращается через драйвер и секвенсер. Вместо этого монитор захватывает шинную транзакцию, а предиктор напрямую обновляет зеркальное значение.

  2. Путь ответа на чтение: При чтении предиктор обновляет зеркальное значение и выполняет проверку с ожидаемыми данными ответа. Фактическое прочитанное значение возвращается через секвенсер виртуальному секвенсеру.

  3. Обработка статуса: Отчет о статусе (UVM_IS_OK, UVM_NOT_OK) происходит во время фазы запроса, а не как отдельный путь ответа.

  4. Синхронизация: Рукопожатие запрос-ответ AMIQ RAL обеспечивает правильную синхронизацию между драйвером и ответами монитора, предотвращая взаимоблокировки.

Ключевой вывод заключается в том, что UVM RAL предоставляет мощный слой абстракции, который упрощает моделирование регистров, операции чтения/записи и проверку ожидаемых значений против фактических ответов оборудования источник. Понимание правильных путей потоков транзакций необходимо для построения эффективных и надежных сред верификации.

Авторы
Проверено модерацией
Модерация