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