3 つのスコアボードに接続された分析ポートがあります。分析ポートで書き込みが行われると、サブスクライバー (スコアボード) が特定の順序で呼び出されます。しかし、私はそれらが別の順序で呼び出されることを望みます。
明示的な順序付けの実際の使用例は次のとおりです。1 つのスコアボードはロギングのみを行うため、最初に呼び出す必要があります。もう一方のスコアボードは非常に基本的な下位レベルのチェックを行うため、2 番目に呼び出す必要があります。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