Вопросы по теме '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 просмотров
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 просмотров
schedule
01.06.2024
Хороший способ доступа к пути интерфейса
Пожалуйста, помогите найти решение для красивого кода.
Поэтому в моем коде мне приходится делать несколько форсировок, так как один и тот же провод управляется 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 просмотров
schedule
06.02.2023
Когда может произойти сбой просмотра 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 просмотров
schedule
18.09.2023
Можем ли мы подключить один uvm_reg_map к нескольким секвенсорам?
У меня есть ситуация, когда у меня есть около 100000 регистров в uvm_reg_block. У меня есть три драйвера, которые могут вести транзакции в эти регистры. Насколько я понимаю, в соответствии со стандартной методологией UVM RAL нам нужны три отдельных...
718 просмотров
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