Я построил следующую (работающую правильно) среду Scoreboard/Monitor:
// Scoreboard : like uvm_scoreboard
scbd_port packet_add : add packet_s;
scbd_port packet_match : match packet_s;
Мой процесс ADD:
// Monitor:
expected_packet_o : out interface_port of tlm_analysis of packet_s is instance;
connect_ports() is also {
expected_packet_o.connect(Scoreboard.packet_add);
};
add_to_Scoreboard() is {
// ... collecting packet logic ...
// Actually adding the packet to SB:
expected_packet_o$write(expected_packet);
};
Мой поток MATCH:
// Monitor:
collect_DUT_output() is {
// ... receiving packet logic ...
Scoreboard.match_in_scbd(received_packet);
};
Мои вопросы: правильно ли следует использовать порты Specman UVM scrb? Почему я не мог добавить ожидаемый пакет напрямую через packet_add, примерно так: Scoreboard.packet_add$.write(expected_packet)
? Единственный способ добавить пакет в Scoreboard, который я нашел, это подключить другой порт TLM к packet_add, как это написано в коде. Есть ли какой-то метод добавления, например match_in_scbd
в поток совпадений?
Спасибо за любые разъяснения о потоках добавления и сопоставления Specman Scoreboard.