我有一个连接到 3 个记分牌的分析端口。当在分析端口上完成写入时,订阅者(记分板)按特定顺序调用。但我希望它们以不同的顺序被调用。
显式排序的实际用例如下。一个记分牌只记录日志,所以应该首先调用它。另一个记分板进行非常基本的低级别检查,所以它应该被称为第二个。第三个记分板执行非常复杂的更高级别检查,因此应该最后调用它。
SV 片段:
sb1 = scoreboard_1::type_id::create("sb1", null);
sb2 = scoreboard_2::type_id::create("sb2", null);
sb3 = scoreboard_3::type_id::create("sb3", null);
// Connect analysis port to scoreboard
m_ap = new("ap", null);
m_ap.connect(sb2.m_imp);
m_ap.connect(sb3.m_imp);
m_ap.connect(sb1.m_imp);
m_ap.resolve_bindings();
// Write
m_ap.write(10);
电流输出:
# UVM_INFO design.sv(15) @ 0: sb1 [write] scoreboard_1
# UVM_INFO design.sv(32) @ 0: sb2 [write] scoreboard_2
# UVM_INFO design.sv(49) @ 0: sb3 [write] scoreboard_3
如何控制调用订阅者的顺序?我希望它们按以下顺序排列:
- 记分牌_3
- 记分牌_2
- 记分牌_1
EDA Playground 上的示例代码:http ://www.edaplayground.com/x/2zQ