«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

UVM/Использование Register model — различия между версиями

Материал из Wiki
< UVM
Перейти к: навигация, поиск
(Explicit Prediction)
м
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
{{TOC UVM}}
+
{{UVM TOC}}
  
 
== Implicit Prediction (неявное предсказание) ==
 
== Implicit Prediction (неявное предсказание) ==
Строка 58: Строка 58:
 
== Passive Prediction ==
 
== Passive Prediction ==
  
Passive prediction is exactly like explicit prediction with one exception; it is not connected
+
<!-- Passive prediction is exactly like explicit prediction with one exception; it is not connected
 
to a sequencer. With no sequencer, read and write transactions cannot be issued. This
 
to a sequencer. With no sequencer, read and write transactions cannot be issued. This
 
mode of prediction is used for checking only.
 
mode of prediction is used for checking only.
Строка 78: Строка 78:
 
This chapter was meant to serve as an introduction of the usage of the register model. I
 
This chapter was meant to serve as an introduction of the usage of the register model. I
 
highly encourage you to take a look at the User’s Guide for more information as you begin
 
highly encourage you to take a look at the User’s Guide for more information as you begin
to develop your model.
+
to develop your model.-->
  
Пассивный прогноз в точности как явного прогнозирования с одним исключением; он не подключен к секвенсор. При отсутствии секвенсор, читать и писать операции не может быть выдан. Этот способ прогнозирования используется для проверки только.
+
Пассивное предсказание такое же как и явное предсказание с одним исключением; регистровая модель не подключена к секвенсору. При отсутствии секвенсора, транзакции чтения и записи не могут быть переданы. Этот способ предсказания используется только для проверки.
  
Давайте рассмотрим пример кода, который вы бы добавить к существующему классу dut_env.
+
Давайте рассмотрим пример кода, который вы бы добавили к существующему классу dut_env.
  
 
[[Файл:Uvm reg Passive Prediction .png]]
 
[[Файл:Uvm reg Passive Prediction .png]]
  
Я объявил два экземпляра модели зарегистрироваться: regmodel и sb_regmodel.Первый, regmodel, предназначена только для последовательностей и будет использовать неявное предсказание. Второй, sb_regmodel, будет использовать явное предсказание так, что он может выполнять точную проверку и что данные могут быть использованы в табло. В connect_phase, я создаю адаптер для regmodel и связать адаптер и секвенсор этой модели с помощью метода set_sequencer карты. Затем я авто предсказать неявной предсказания. Я делаю то же самое для sb_regmodel, но предиктором также настроен. Здесь я поставил авто предсказать явного прогнозирования и включить проверку с помощью функции чтения с призывом set_check_on_read. Было бы также вполне допустимо использовать пассивный прогноз здесь с sb_regmodel не будет выдавать операции. Чтобы сделать это пассивный прогноз, вызов set_sequencer не будет сделано.
+
Я объявил два экземпляра регистровой модели: regmodel и sb_regmodel.Первый, regmodel, предназначен только для последовательностей и будет использовать неявное предсказание. Второй, sb_regmodel, будет использовать явное предсказание так, что он сможет выполнять точную проверку и что данные смогут быть использованы в scoreboard. В connect_phase, я создаю адаптер для regmodel и связываю адаптер и секвенсор этой модели с помощью метода карты(map) set_sequencer(). Затем я устанавливаю авто предсказание для неявного предсказания. Я делаю то же самое для sb_regmodel, но предиктором также настроен. Здесь я установил авто предсказание для явного прогнозирования и включил проверку с помощью функции чтения с вызовом set_check_on_read(). Было бы также вполне допустимо использовать пассивное предсказание здесь, поскольку sb_regmodel не будет передавать транзакции. Чтобы сделать пассивным предсказание, не нужно вызывать метод для карты set_sequencer().
  
В этой главе был призван служить в качестве введения использования модели регистра. Я настоятельно рекомендую вам взглянуть на руководстве пользователя для получения дополнительной информации, вы начинаете развивать свою модель.
+
Этой глава была призвана служить в качестве введения использования регистровой модели. Я настоятельно рекомендую вам взглянуть на руководство пользователя для получения дополнительной информации, как только вы начнёте разрабатывать свою модель.

Текущая версия на 21:10, 26 ноября 2014

Проект Методология UVM

UVM Cookbook


Вебинары
Литература

* OVM *

Implicit Prediction (неявное предсказание)

Implicit prediction является режимом, в котором над регистровой моделью выполняются команды read и write, которые обновляют состояние модели. Однако, для включения автомотического обновления модели необходимо вызвать функцию set_auto_predict со значением 1. Например:

regmodel.default_map.set_auto_predict(1);

Это должно быть выполнено в фазе connect_phase класса env (окружения). При использовании этого режима предсказания, модель "считает, что" она знает, чему равны значения регистров в DUT, потому что этот режим предсказания не собирает транзакции к регистрам проекта, которые происходят не от регистровой модели. Такое неявное предсказание хорошо подходит для последовательностей (sequences), потому что просто выполняются операции (чтения/записи), но это не достаточно для scoreboard, которому необходимо получить точную регистровую информацию для проверки функциональности.


Explicit Prediction

При явном предсказании, регистровая модель также интегрируется с монитором шины. Благодаря этой интеграции, регистровая модель может быть обновлена, даже если она не инициирует транзакцию, поскольку она обновляется с помощью монитора. В этом случае, в set_auto_predict будет передано значение 0, и uvm_reg_predictor должен быть создан.Предиктор является компонентом, который наблюдает транзакции от монитора, а затем вызывает функцию predict() в регистровой модели, чтобы обновить её. Схема иллюстрируют отношения между этими компонентами.

Uvm reg Explicit Prediction.png
Рисунок 1: Register Predictor


В вашем окружении вы могли бы создать экземпляр uvm_reg_predictor параметрированный типом транзакции шины. В connect_phase вы могли бы сделать следующее:

  • Установить карту(map) предиктора в карту регистровой модели.
  • Установить адаптер предиктора в адаптер регистра.

Подключите предиктор к монитору.

Этот режим предсказания можно использовать для передачи транзакций шины, но также отлично подходит для проверки, так как он держит в актуальном состоянии модель в соответствии со значениями в RTL.

Passive Prediction

Пассивное предсказание такое же как и явное предсказание с одним исключением; регистровая модель не подключена к секвенсору. При отсутствии секвенсора, транзакции чтения и записи не могут быть переданы. Этот способ предсказания используется только для проверки.

Давайте рассмотрим пример кода, который вы бы добавили к существующему классу dut_env.

Uvm reg Passive Prediction .png

Я объявил два экземпляра регистровой модели: regmodel и sb_regmodel.Первый, regmodel, предназначен только для последовательностей и будет использовать неявное предсказание. Второй, sb_regmodel, будет использовать явное предсказание так, что он сможет выполнять точную проверку и что данные смогут быть использованы в scoreboard. В connect_phase, я создаю адаптер для regmodel и связываю адаптер и секвенсор этой модели с помощью метода карты(map) set_sequencer(). Затем я устанавливаю авто предсказание для неявного предсказания. Я делаю то же самое для sb_regmodel, но предиктором также настроен. Здесь я установил авто предсказание для явного прогнозирования и включил проверку с помощью функции чтения с вызовом set_check_on_read(). Было бы также вполне допустимо использовать пассивное предсказание здесь, поскольку sb_regmodel не будет передавать транзакции. Чтобы сделать пассивным предсказание, не нужно вызывать метод для карты set_sequencer().

Этой глава была призвана служить в качестве введения использования регистровой модели. Я настоятельно рекомендую вам взглянуть на руководство пользователя для получения дополнительной информации, как только вы начнёте разрабатывать свою модель.