«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

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

Материал из Wiki
< UVM
Перейти к: навигация, поиск
(Новая страница: «{{TOC UVM}} == Implicit Prediction (неявное предсказание) == <!-- Implicit prediction is the mode I described earlier where you have a regist…»)
 
м
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{TOC UVM}}
+
{{UVM TOC}}
  
 
== Implicit Prediction (неявное предсказание) ==
 
== Implicit Prediction (неявное предсказание) ==
Строка 23: Строка 23:
 
== Explicit Prediction ==
 
== Explicit Prediction ==
  
With explicit prediction, the register model is also integrated with the bus monitor. With
+
<!-- With explicit prediction, the register model is also integrated with the bus monitor. With
 
this integration, the register model can be updated even when it does not initiate the
 
this integration, the register model can be updated even when it does not initiate the
 
transaction because it updated via the monitor. In this case, set_auto_predict would be
 
transaction because it updated via the monitor. In this case, set_auto_predict would be
Строка 30: Строка 30:
 
function in the register model to do the update. A diagram will illustrate the relationship
 
function in the register model to do the update. A diagram will illustrate the relationship
 
between these components.
 
between these components.
 
+
-->
При явном прогнозирования, модель регистр также интегрирован с монитором автобуса. С этой интеграции, модель регистр может быть обновлен, даже если он не инициирует транзакцию, поскольку она обновляется с помощью монитора. В этом случае, set_auto_predict будут переданы значение 0, и uvm_reg_predictor должен быть создан.Предсказатель является компонентом, который наблюдает за сделку от монитора, а затем вызывает функцию прогнозирования в регистре модели, чтобы сделать обновление.Схема иллюстрируют отношения между этими компонентами.
+
При явном предсказании, регистровая модель также интегрируется с монитором шины. Благодаря этой интеграции, регистровая модель может быть обновлена, даже если она не инициирует транзакцию, поскольку она обновляется с помощью монитора. В этом случае, в set_auto_predict будет передано значение 0, и uvm_reg_predictor должен быть создан.Предиктор является компонентом, который наблюдает транзакции от монитора, а затем вызывает функцию predict() в регистровой модели, чтобы обновить её. Схема иллюстрируют отношения между этими компонентами.
  
 
{| align=center
 
{| align=center
Строка 39: Строка 39:
 
|}
 
|}
  
In your env you would instantiate the uvm_reg_predictor parameterized with your bus sequence item type. In the connect_phase you would do the following:
+
<!-- In your env you would instantiate the uvm_reg_predictor parameterized with your bus sequence item type. In the connect_phase you would do the following:
 
* Set the predictor map to the register model map.
 
* Set the predictor map to the register model map.
 
* Set the predictor adapter to the register adapter.
 
* Set the predictor adapter to the register adapter.
Строка 45: Строка 45:
  
 
This mode of prediction can be used to issue bus transactions, but is also excellent for
 
This mode of prediction can be used to issue bus transactions, but is also excellent for
checking since it is up to date with the values in the RTL.
+
checking since it is up to date with the values in the RTL.-->
  
В вашем окр вы экземпляр uvm_reg_predictor параметрироваться с автобусной типа элемента последовательности. В connect_phase вы могли бы сделать следующее:
+
В вашем окружении вы могли бы создать экземпляр uvm_reg_predictor параметрированный типом транзакции шины. В connect_phase вы могли бы сделать следующее:
  
*    Установите предсказателя карту в регистр модели карте.
+
*    Установить карту(map) предиктора в карту регистровой модели.
*    Установите предсказателя адаптер к адаптеру регистра.
+
*    Установить адаптер предиктора в адаптер регистра.
  
Подключите предсказатель к монитору.
+
Подключите предиктор к монитору.
  
Этот режим прогнозирования можно использовать для выдачи шины операции, но также отлично подходит для проверки, так как он находится в актуальном состоянии со значениями в RTL.
+
Этот режим предсказания можно использовать для передачи транзакций шины, но также отлично подходит для проверки, так как он держит в актуальном состоянии модель в соответствии со значениями в RTL.
  
 
== 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]]
  
Я объявил два экземпляра модели зарегистрироваться: 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().

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