Вопросы по теме 'uvm'

Могу ли я получить имя регистра (доступное в regmodel) из строки
У меня есть простая последовательность regmodel.REGx.write (...) Давайте рассмотрим, что у меня есть 8 регистров в regmodel, а именно. REG0, REG1, REG2,....,REG7 Я хочу передать число в качестве теста плюс аргумент, скажем, +NUM=4...
2467 просмотров
schedule 04.01.2023

Переопределить элементы последовательности из теста
Вот мой простой сегмент кода class sample_sequence extends uvm_sequence#(sample_sequence_item); rand int no_txn; `uvm_object_param_utils_begin(sample_sequence_item) `uvm_field_int(no_txn,UVM_ALL_ON) `uvm_object_utils_end rand...
2015 просмотров
uvm
schedule 26.07.2023

Иерархический вызов задачи без определений
У меня есть модуль BFM, предоставленный поставщиком, созданный глубоко в моей иерархии; назовем путь top.dut.u1.u2.bfm1 . API BFM немного архаичен и неудобен для наших нужд. Я хотел бы написать «объект» (класс? интерфейс? что-то еще?), который...
1616 просмотров
schedule 28.03.2024

Каковы необходимые свойства в аксиальной транзакции чтения/записи?
Я пишу среду проверки для проекта, включающего шину AXI. Каковы необходимые свойства в транзакциях AXI чтения/записи? Моя транзакция выглядит так, как показано ниже. Должен ли я добавить что-то еще? typedef enum bit [3:0] { LENGTH_[1:256] }...
554 просмотров
schedule 15.08.2022

Как отследить смещение модели регистра по адресу
Я добавляю регистр (например, VRF050) на карту по умолчанию, и его адрес должен быть 0x1000a050, как показано в sv код . Но каким-то образом его можно перенести на 0x40028143 в симуляции SimVision . Есть ли способ, идея или ключевое слово,...
479 просмотров
schedule 06.09.2022

Где я могу написать параллельное утверждение в мониторе?
Я должен написать следующее параллельное утверждение в моем мониторе: assert property (vif.cos == 1 |-> vif_out.y == vif.xi/sqrt(2)); Я попытался поместить его в run_phase, но получил следующую ошибку: Параллельные утверждения не...
830 просмотров

Хороший способ доступа к пути интерфейса
Пожалуйста, помогите найти решение для красивого кода. Поэтому в моем коде мне приходится делать несколько форсировок, так как один и тот же провод управляется tb и другой частью дизайна. В результате у меня есть много принудительных утверждений,...
2753 просмотров
schedule 08.08.2022

systemverilog, как сделать сброс?
Systemverilog semaphore действительно наполовину готов. Я не мог найти способ освободить семафоры в случае reset , что-то вроде .flush() для uvm_tlm_fifo ? Также нет способа узнать, сколько семафоров заблокировано? Есть ли в UVM...
478 просмотров
schedule 15.10.2023

Рандомизация ассоциативного массива в System Verilog
У меня есть ассоциативный массив : rand uvm_reg_field array_assoc[string]; Массив содержит дескриптор полей регистра UVM для регистров в DUT и индексируется строкой (строка - это имя поля). Скажем, у меня есть 2 регистрационных поля с...
1179 просмотров

Когда может произойти сбой просмотра TLM?
Я работал над связью с секвенсором драйвера OVM. Я использую try_get_item() в драйвере ovm, но он все еще зависает. В моем секвенсоре я переопределил try_next_item и просто напечатал оператор отображения до и после m_req_fifo.peek(t); Оператор...
230 просмотров
schedule 17.06.2022

Получить значение сброса поля в vr_ad (specman) или просто сбросить поле
Я запускаю последовательность, в которой мне нужно временно записать в определенное поле в регистре, и через некоторое время я хочу сбросить его до значения сброса. Я не хочу сбрасывать весь регистр с помощью функции reset() , я хочу только сбросить...
61 просмотров
schedule 13.10.2022

копировать поля из одного класса в другой внутри элемента последовательности
У меня есть два дескриптора класса внутри моего элемента последовательности. Один из классов содержит дескриптор другого класса. псевдокод выглядит так: class seq_item extends uvm_sequence_item; rand class_a a; rand class_b b; endclass//...
130 просмотров
schedule 03.11.2022

Моделирование списка соединений: недопустимое lvalue в этом контексте
Я пытаюсь смоделировать синтезированный (в D-триггер) файл физического регистра (PRF). Тестбенч в поведенческой форме работает нормально. Но после синтеза некоторые внутренние элементы были переименованы инструментом, и в основном я пытаюсь...
604 просмотров
schedule 14.01.2024

Когда мы используем класс typedef xxxxx в uvm?
Я не знаком с увм, но пытаюсь понять и изучить. Я нашел приведенный ниже код, когда опирался на UVM. typedef class driver; typedef class monitor;   class env; driver d0; monitor mon0;   function init_drvr (); d0 = new (); // initialize...
1111 просмотров
schedule 31.10.2022

uvm raise_objection и drop_objection
Я изучаю UVM и задаюсь вопросом, как работает возражение. Я думал, что следующий код (в моем производном агенте) выполняет seq.start (секвенсор); и после того, как секвенсор завершает работу, drop_objection выполняется для завершения моделирования....
4462 просмотров
uvm
schedule 18.09.2023

Можем ли мы подключить один uvm_reg_map к нескольким секвенсорам?
У меня есть ситуация, когда у меня есть около 100000 регистров в uvm_reg_block. У меня есть три драйвера, которые могут вести транзакции в эти регистры. Насколько я понимаю, в соответствии со стандартной методологией UVM RAL нам нужны три отдельных...
718 просмотров
uvm
schedule 05.11.2022

Как правильно исключить значение {'1} из группы покрытия?
Я реализовал следующую кавергруппу: covergroup my_covergroup_cg (input string name); enable_reg_cp : coverpoint enabled_reg[PARAM1-1:0] { illegal_bins no_enable = {0}; } feature_active_reg_cp : coverpoint...
170 просмотров
schedule 20.03.2023

Как описать модпорты интерфейса uart?
Мне нужно создать uvm_environment интерфейса uart. Работа почти сделана, кроме самого интерфейса. Я хочу иметь два модпорта, каждый из которых содержит ввод как rx и вывод как tx. DUT/UVM if DUT/UVM ------- ------...
76 просмотров
schedule 13.01.2024