首先,UVM的驗證平台的各個組件的使用與否完全取決於工程師本人,驗證工程師本人出於對項目的大小,RTL設計的spec以及可復用性等其他因素對項目的驗證平台的整體flow有了大體的思路之后,撰寫相應的文檔並且搭建UVM環境。
通常來說,一個相對簡單完整的驗證平台包括了sequence、sequencer、reference model、agent、driver、monitor、scoreboard等組件。下面來說說各個組件的作用。
sequence:sequence不是驗證env下面的組件,其主要作用是產生transaction的數據並且與sequencer進行交互,從而向sequencer發送相應的transaction數據。
sequencer:作為sequence和driver的數據中轉站,通過對這兩個部分的發/接受請求,從而向driver提供相應的transaction數據。
reference model:一般情況下,驗證平台要去檢測RTL的行為對錯,會做一個與RTL要實現功能一致的model,這個model的輸入與driver送至RTL的激勵一致,並且通過model的行為后,產生一些信息送至scoreboard進行相應的判定。
agent:agent是用來將屬於同一層的組件封裝在一起的組件。通常情況下,將sequencer、driver、monitor封裝在一起作為agent,封裝后的組件對上對下的交互需經過agent。
driver:激勵RTL。
monitor:與driver的行為基本一致,或者完成一致,作為向reference產生輸入的組件,或者是接收RTL返回的數據信息。
scoreboard:對RTL行為和reference model進行比較,進行結果的比對,發出相應的信息。