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

UVM/Использование Register model

Материал из Wiki
< UVM
Версия от 18:43, 26 ноября 2014; Yura (обсуждение | вклад)

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

Шаблон:TOC UVM

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

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 mode of prediction is used for checking only.

Let’s review a code example that you would add to the existing dut_env class.

I have declared two instances of the register model: regmodel and sb_regmodel. The first one, regmodel, is for sequences only and will use implicit prediction. The second one, sb_regmodel, will use explicit prediction so that it can perform accurate checking and that data could be used in a scoreboard. In the connect_phase, I create the adapter for regmodel and associate the adapter and the sequencer to this model with the set_sequencer method of the map. I then set the auto predict for implicit prediction. I do the same for the sb_regmodel, but the predictor is also configured. Here I set the auto predict for explicit prediction and enable checking via the read function with the set_check_on_read call. It would also be perfectly valid to use passive prediction here since the sb_regmodel will not be issuing transactions. To make it passive prediction, the set_sequencer call would not be made.

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 to develop your model.

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

Давайте рассмотрим пример кода, который вы бы добавить к существующему классу 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 не будет сделано.

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