What is a scoreboard?
UVM scoreboard是包含checker並驗證design的functionality的驗證元件。它通常透過 TLM Analysis Ports接收從 DUT interface擷取的transaction level的object。
例如,從屬性為RW的register寫入和讀取的值應該會match。當對design執行寫入操作時,scoreboard接收到該寫入動作的packet並且是預期值(expected value)。之後從design中讀取相同的register的,並且將實際值(actual value)的資料傳送到 UVM scoreboard。然後scoreboard就可以比較(expected value)和(actual value)是否相等。
What is a reference model?
接收到data object後,scoreboard可以執行計算並預測期望值(expected value),也可以將其發送到reference model以獲得期望值(expected value)。reference model也稱為predictor,他可以模仿design的functionality。
最終任務是比較預期結果與DUT的實際輸出結果 。
建議繼承 uvm_scoreboard而不是繼承uvm_component,這樣就會有uvm_scoreboard的各種feature。
Steps to create a UVM scoreboard
建立一個繼承
uvm_scoreboard的class,然後註冊到factory上1
2
3
4
5
6
7
8
9
10class my_scoreboard extends uvm_scoreboard;
`uvm_component_utils (my_scoreboard)
function new (string name = "my_scoreboard", uvm_component parent = null);
super.new (name, parent);
endfunction
...
endclass新增必要的TLM Analysis Port以接收來自其他components的transaction,然後在
build_phase產生 TLM Analysis Port的instance1
2
3
4
5
6
7
8
9class my_scoreboard extends uvm_scoreboard;
...
uvm_analysis_imp #(apb_pkt, my_scoreboard) ap_imp;
function void build_phase (uvm_phase phase);
ap_imp = new ("ap_imp", this);
endfunction
...
endclass定義從analysis port接收到資料時要採取的動作
1
2
3
4
5
6
7class my_scoreboard extends uvm_scoreboard;
..
virtual function void write (apb_pkt data);
`uvm_info ("write", $sformatf("Data received = 0x%0h", data), UVM_MEDIUM)
endfunction
..
endclass在
check_phase執行檢查1
2
3
4
5
6
7class my_scoreboard extends uvm_scoreboard;
...
virtual function void check_phase (uvm_phase phase);
...
endfunction
...
endclass在environment中,將scoreboard與的其他components連接起來
1
2
3
4
5
6
7
8class my_env extends uvm_env;
...
virtual function void connect_phase(uvm_phase phase);
super.connect_phase(phase);
m_apb_agent.m_apb_mon.analysis_port.connect(m_scbd.ap_imp);
endfunction
...
endclass
testbench的其他component透過呼叫analysis port的 write method將資料傳送到scoreboard。
例如,monitor從bus interface收集data packet。當bus operation已接收或發送與傳輸相關的所有資料時,packet就準備完成了。monitor在有完整的packet後會呼叫analysis port的write方法。由於environment中monitor和scoreboard的analysis port是相連的,所以scoreboard會通過analysis port收到packet。