У меня есть некоторый блок регистра вместе с соответствующей настройкой адаптера регистра для перевода в какой-то протокол шины.
Когда я вызвал метод write
для одного из моих регистров, я мог видеть, что транзакция выполняется, и driver
завершил свою работу, но write
где-то застрял.
См. выдержку из driver
и sequence
ниже:
// ...uvm driver
forever begin
seq_item_port.get_next_item(req);
$display("DEBUG A");
// ... do transaction
seq_item_port.item_done();
$display("DEBUG B");
end
// ... sequence
$display("START WRITE");
my_reg_block.my_reg1.write(
$display("DONE WRITE");
Результат:
START WRITE
DEBUG A
DEBUG B
а потом симуляция застряла там - я никогда не вижу DONE WRITE
.
Я совершенно уверен, что все connect
, set_sequencer
были сделаны правильно, иначе мой драйвер вообще не должен видеть транзакцию. И это довольно простой тест — нужно только сделать это write
.
Есть идеи, почему он застрял в методе регистрации write
, хотя driver
, похоже, завершил транзакцию? Я, наверное, что-то пропустил.
write
внутри нее? - person AndresM   schedule 05.08.2016