我有一個分析端口連接到3個記分板。當在分析端口上完成寫入時,用戶(記分板)以特定順序被調用。但我希望他們以不同的順序被調用。如何控制UVM分析端口訂戶的順序?
顯式排序的實際用例如下。一個記分牌只會記錄,所以應該先調用它。另一個記分牌進行非常基本的低級別檢查,所以它應該被稱爲第二。第三個記分牌執行非常複雜的更高級別的檢查,因此應該最後調用它。
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
如何控制命令的用戶被稱爲嗎?我想他們是按以下順序:
- scoreboard_3
- scoreboard_2
- scoreboard_1
示例代碼在EDA遊樂場:http://www.edaplayground.com/x/2zQ
擁有頂級記分牌委託人看起來像一團糟。在這種情況下,創建我自己的uvm_analysis_port可以使訂戶保持註冊訂單狀態,這可能會更清潔。 –