uvm的sequence


1,每個sequence都有一個body任務。當一個sequence啟動后,會自動執行sequence的body任務,所以在sequence的class中,一定要有一個名為body的task。

此外,如果一個sequence中,還有pre_body與post_body,則這兩個task,會分別在body的task前面與后面執行。

2,sequence的源碼中,沒有build_phase,所以,不要在sequence中使用build_phase。但是記得,sequencer中可以有build_phase。

3,當完成一個sequence的定義后,可以使用start任務將其啟動。

4,sequence有幾個重要的宏,如uvm_do,uvm_create,uvm_send,start_item,finish_item等。

5,注意,sequence派生自uvm_object,sequencer派生自uvm_component,sequencer的作用,是調度其中的sequence在driver之間進行傳輸。

6,一個sequence應該使用uvm_object_utils宏注冊到factory中去。

7,virtual sequence的引入,主要是為了解決sequence之間的控制和調度,他一般不發送transaction,他只控制其他的sequence,起到統一調度的作用。

8,注意,sequence item 與sequence是有區別的,要關注這一點。

sequence 主要是要實現其body任務,用來產生sequence item並將其發送給driver,擴展自如下基類:xxx_seuqence extends uvm_sequence 或者uvm_sequence_base;

sequence item主要用來產生兩個components之間的讀寫操作,流通在uvm_component組件直接,進行通信。它擴展的基類如下: xxx_seq_item extends uvm_sequence_item;

9,用戶定義的所有的transaction,都必須從uvm_sequence_item類來派生。transaction就是封裝了各種協議接口的事務模型,而uvm_sequence_item,相對於transaction,增加了很多使用的成員變量和函數/任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM