Основные вопросы Specman UVM Scoreboard

Я построил следующую (работающую правильно) среду 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.


person Halona    schedule 30.01.2017    source источник


Ответы (1)


Подумайте об этом так: порт TLM — это просто причудливая оболочка «указателя функции» (как в C++), которая указывает на реализованный метод. Ничто не мешает вам напрямую вызвать реализованный метод экземпляра экземпляра табло. Единственная проблема заключается в том, что вы должны знать, какой экземпляр табло вызывать в вызывающей программе.

person hevangel    schedule 13.05.2017