UVM中參數(shù)化的類

截止到目前我了解到的UVM類只有uvm_sequence/uvm_sequencer_param/uvm_driver是帶有參數(shù)化的類型的。

uvm_driver#(REQ,RSP)

  • 默認(rèn)的情況下REQ=RSP
  • 默認(rèn)的類型是uvm_sequence_item
  • TLM端口uvm_seq_item_pull_port
    my_driver extends uvm_driver(my_transaction)
    seq_item_port.get_next_item(req)
  • 其中req的類型默認(rèn)是my_transaction,如果沒有聲明,那默認(rèn)就是uvm_sequence_item的類型。
  • 規(guī)范來講的話,這里要寫成my_transaction

uvm_sequencer_param#(REQ,RSP)

  • 默認(rèn)RSP=REQ
  • 默認(rèn)的類型為uvm_sequence_item
  • uvm_tlm_fifo就是sqr和driver的item的FIFO。
  • rerandomize=1的時候的randomize,一定要用my_ransaction
  • 這個類對用戶的可見度比較低。

uvm_sequencer#(REQ,RSP)

  • uvm_sequencer extends uvm_sequencer_param_base
  • 通過tlm端口我們知道,driver里面的seq_item_port.get_next_item就是對應(yīng)的調(diào)用的uvm_sequencer的,所以這里面有一個隱形的規(guī)定,uvm_sequencer和uvm_driver的參數(shù)應(yīng)該保持一致。

小結(jié):要保證uvm_sequencer/uvm_sequence以及uvm_driver的參數(shù)一致性。

如果一個seq要發(fā)送不同的item,item之間并沒有繼承關(guān)系。可以參看張強(qiáng)的6.4.3.
多說一句有關(guān)于這里的兩個cast:

  • req實際上是從seq那一側(cè)的item例化的,指向的是my_transaction和you_transaction。
  • cast是同類型對象的轉(zhuǎn)換,driver的req一定要是seq那邊過來的,所以這里不能自己new一個item,如果那樣的話,這就不是UVM的框架了?。?!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容