我已经构建了下一个(正常工作)记分牌/监视器环境:
// Scoreboard : like uvm_scoreboard
scbd_port packet_add : add packet_s;
scbd_port packet_match : match packet_s;
我的添加流程:
// 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);
};
我的比赛流程:
// 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)
?我发现将数据包添加到记分板的唯一方法是将另一个 TLM 端口连接到 packet_add,因为它是在代码中编写的。是否有一些像match_in_scbd
匹配流程中的添加方法?
感谢您对 Specman Scoreboard 添加和匹配流程的任何澄清