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

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

Материал из Wiki
Перейти к: навигация, поиск

Шаблон: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

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 adapter to the register adapter.

Connect the predictor to the monitor.

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.

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

  • Установите предсказателя карту в регистр модели карте.
  • Установите предсказателя адаптер к адаптеру регистра.

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

Этот режим прогнозирования можно использовать для выдачи шины операции, но также отлично подходит для проверки, так как он находится в актуальном состоянии со значениями в 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 не будет сделано.

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