Перейти к содержанию
    

`uvm_analysis_imp_decl(_ingress)

`uvm_analysis_imp_port(_egress)

 

class myscoreboard extends uvm_component;

 

uvm_analysis_imp_ingress#(mydata, myscoreboard) ingress;

uvm_analysis_imp_egress#(mydata, myscoreboard) egress;

 

...

function new(string name, uvm_component parent);

super.new(name,parent);

ingress = new("ingress", this);

egress = new("egress", this);

endfunction

 

function void write_ingress(mydata t);

function void write_egress(mydata t);

 

endfunction

 

Осталось соеденить мониторы с портами ingress/egress.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кто-нибудь реализовывал virtual sequencer? в чем преимущества его использования по сравнению с обычными? (делаю, как пишут в cookbook, ничего особенно не выходит)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело скорее не приемуществах, а в назначении - предоставление доступа к другим sequencers окружения и использование в virtual sequences.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело скорее не приемуществах, а в назначении - предоставление доступа к другим sequencers окружения и использование в virtual sequences.

спасибо, что отписываетесь-)

ну то есть разницы в целом нет, запущу я несколько sequence через разные sequencer'ы в тесте, или запущу одну virtual sequence через virtual sequencer, а в ней запущу несколько разных sequence через свои sequencer'ы? (если я правильно понимаю, как это используется. воплотить получилось, но в чем же тогда разница?)

 

upd: за register model поясните тоже, пожалуйста. это отдельная структура объектов для сравнения значений в dut и в тестбенче? (я, конечно, читаю, но общая картина и назначение представляется не очень хорошо. может, не то читаю)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Register model - это некое умное зеркало регитрового простарнства DUT.

Исходя из спецификации на блок мы наполняем reg_model. Функциями set/get задаем/получаем значение виртуального регистра или отдельных полей.

Главная фича - оперируя с reg_model регистрами через функции write/read, мы производим транзакции на системной системной шине с помощью специального адаптера и пишем/читаем регистры DUT. К такому же эффекту приводит использование методов update/mirror (для mirror нужно включить режим auto_predict, иначе виртуальный регистр не обновится), в этом случае удобно писать/читать отдельные поля reg_model регистра.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Register model - это некое умное зеркало регитрового простарнства DUT.

Исходя из спецификации на блок мы наполняем reg_model. Функциями set/get задаем/получаем значение виртуального регистра или отдельных полей.

Главная фича - оперируя с reg_model регистрами через функции write/read, мы производим транзакции на системной системной шине с помощью специального адаптера и пишем/читаем регистры DUT. К такому же эффекту приводит использование методов update/mirror (для mirror нужно включить режим auto_predict, иначе виртуальный регистр не обновится), в этом случае удобно писать/читать отдельные поля reg_model регистра.

спасибо, а что с классами, объектами, их иерархией и другими связями между ними? map - исключительно для адресов (типа адресного пространства?) чем отличаются register, register file и memories? зачем используются два доступа к register model - front door и back door? необходимо ли создавать sequence специально для register model? (вопросы большей частью риторические, но если укажете направление, буду очень благодарен. сейчас читаю cookbook и uvm user guide, не знаю, может есть что полегче/доступнее)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Map - карта адресного пространства, в нее добавляются ссылки на инстанцированные в reg_block регистры и памяти с адресами и правами доступа.

Front door - штатный режим доступа к регистру/памяти путем операции на системной шине, Back door - доступ к регистру в обход системной шины, операции осуществляются через заданный путь к регистру в RTL-модели.

Sequnce специально создавать не обязательно для основных тестов. Но они могут понадобиться в тесте регистров - при проверке дефолтных значения и записи/чтения.

Помимо чтива можно посмотреть примеры в поставке UVM, каталог integrated.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Map - карта адресного пространства, в нее добавляются ссылки на инстанцированные в reg_block регистры и памяти с адресами и правами доступа.

Front door - штатный режим доступа к регистру/памяти путем операции на системной шине, Back door - доступ к регистру в обход системной шины, операции осуществляются через заданный путь к регистру в RTL-модели.

Sequnce специально создавать не обязательно для основных тестов. Но они могут понадобиться в тесте регистров - при проверке дефолтных значения и записи/чтения.

Помимо чтива можно посмотреть примеры в поставке UVM, каталог integrated.

спасибо! а может подскажете тулы для автоматической генерации register model? они генерируют только саму структуру (блок, регистр, поля, карта) или и создание, конфигурацию и соединение в нужных местах? благодарю заранее-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот свободный тул для генерации reg_model (блок, регистр, поля, карта) из ip-xact(xml) описания:

https://bitbucket.org/vlotorev/reggi

Есть и в Cadence Incisive (v12) такой тул:

iregGen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...