UVM/Использование Register model — различия между версиями
ANA (обсуждение | вклад) (Новая страница: «{{TOC UVM}} == Implicit Prediction (неявное предсказание) == <!-- Implicit prediction is the mode I described earlier where you have a regist…») |
ANA (обсуждение | вклад) м |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | {{ | + | {{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 должен быть создан.Предиктор является компонентом, который наблюдает транзакции от монитора, а затем вызывает функцию 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 вы могли бы сделать следующее: |
− | * | + | * Установить карту(map) предиктора в карту регистровой модели. |
− | * | + | * Установить адаптер предиктора в адаптер регистра. |
− | Подключите | + | Подключите предиктор к монитору. |
− | Этот режим | + | Этот режим предсказания можно использовать для передачи транзакций шины, но также отлично подходит для проверки, так как он держит в актуальном состоянии модель в соответствии со значениями в 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. | |
− | + | [[Файл: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(). |
− | + | Этой глава была призвана служить в качестве введения использования регистровой модели. Я настоятельно рекомендую вам взглянуть на руководство пользователя для получения дополнительной информации, как только вы начнёте разрабатывать свою модель. |
Текущая версия на 21:10, 26 ноября 2014
- Sequences
- Analysis Components & Techniques
- UVM Tutorial for Candy Lovers
- Register Access Methods (link)
- Использование Register model
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() в регистровой модели, чтобы обновить её. Схема иллюстрируют отношения между этими компонентами.
![]() |
---|
Рисунок 1: Register Predictor |
В вашем окружении вы могли бы создать экземпляр uvm_reg_predictor параметрированный типом транзакции шины. В connect_phase вы могли бы сделать следующее:
- Установить карту(map) предиктора в карту регистровой модели.
- Установить адаптер предиктора в адаптер регистра.
Подключите предиктор к монитору.
Этот режим предсказания можно использовать для передачи транзакций шины, но также отлично подходит для проверки, так как он держит в актуальном состоянии модель в соответствии со значениями в RTL.
Passive Prediction
Пассивное предсказание такое же как и явное предсказание с одним исключением; регистровая модель не подключена к секвенсору. При отсутствии секвенсора, транзакции чтения и записи не могут быть переданы. Этот способ предсказания используется только для проверки.
Давайте рассмотрим пример кода, который вы бы добавили к существующему классу dut_env.
Я объявил два экземпляра регистровой модели: regmodel и sb_regmodel.Первый, regmodel, предназначен только для последовательностей и будет использовать неявное предсказание. Второй, sb_regmodel, будет использовать явное предсказание так, что он сможет выполнять точную проверку и что данные смогут быть использованы в scoreboard. В connect_phase, я создаю адаптер для regmodel и связываю адаптер и секвенсор этой модели с помощью метода карты(map) set_sequencer(). Затем я устанавливаю авто предсказание для неявного предсказания. Я делаю то же самое для sb_regmodel, но предиктором также настроен. Здесь я установил авто предсказание для явного прогнозирования и включил проверку с помощью функции чтения с вызовом set_check_on_read(). Было бы также вполне допустимо использовать пассивное предсказание здесь, поскольку sb_regmodel не будет передавать транзакции. Чтобы сделать пассивным предсказание, не нужно вызывать метод для карты set_sequencer().
Этой глава была призвана служить в качестве введения использования регистровой модели. Я настоятельно рекомендую вам взглянуть на руководство пользователя для получения дополнительной информации, как только вы начнёте разрабатывать свою модель.