p_sequencer 理解


問題:p_sequencer的理解

張強UVM白皮書中對p_sequencer的使用做了詳盡的說明,但是一直沒有理解p_sequencer的本質,現在似乎有點理解了。

1.考慮如下情況,sequencer 有如下變量:

 

2.在sequence 發送transaction 時,必須設置此dmac 和smac,sequence 的body如何得到這兩個值呢?

1)在介紹sequence 時,內部有m_sequencer, 直接使用m_sequencer 得到這兩個變量:

 

編譯錯誤:

 

因為m_sequencer 是uvm_sequencr_base (uvm_sequencr 的基類)類型,而不是my_sequencer 類型。

 

所以要cast:把m_sequencer 轉換成my_sequencer:

 

但是好麻煩。所以內建了一個宏:uvm_declare_p_sequencer(SEQUENCER)

 

相當於聲明如下變量:

 

自動將m_sequencer cast 成p_sequencer。在pre_body()前完成。
---------------------
作者:tingtang13
來源:CSDN
原文:https://blog.csdn.net/tingtang13/article/details/46546395
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

個人理解:

1、理解p_sequencer的核心就是向下類型轉換。

2、向下類型轉換的核心就是派生類以基類類型傳遞過程中:在派生類的數據包產生后,通過基類句柄指向它,進行傳遞,在接受數據包的地方,基類句柄指向的派生類對象,要交由一個派生類句柄指向,這時候需要向下類型裝換。


免責聲明!

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



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