創(chuàng)建Sequencer
sequencer生成激勵(lì)數(shù)據(jù),并將其傳遞給driver執(zhí)行。UVM類庫(kù)提供了uvm_sequencer基類,其參數(shù)為request和response數(shù)據(jù)類型。
uvm_sequencer基類包含了sequencer與driver通信所需的基本功能。在sequencer類的定義中, 默認(rèn)情況下,response數(shù)據(jù)類型與request數(shù)據(jù)類型相同。如果需要不同的response數(shù)據(jù)類型,必須為uvm_sequencer指定可選的第二個(gè)參數(shù)
uvm_sequencer #(simple_item, simple_rsp) sequencer;
連接Driver和Sequencer
driver和sequencer通過(guò)TLM連接,driver的seq_item_port連接到sequencer的seq_item_export。sequencer產(chǎn)生數(shù)據(jù)項(xiàng),通過(guò)seq_item_export提供。driver通過(guò)它的seq_item_port獲取數(shù)據(jù)項(xiàng),并提供response(可選)。包含driver和sequencer的驗(yàn)證組件(通常是agent)在它們之間建立連接。
uvm_driver中的seq_item_port定義了driver獲取sequence中下一個(gè)數(shù)據(jù)項(xiàng)的一組方法,并且提供了driver與sequencer同步的能力。sequencer實(shí)現(xiàn)了一套方法,允許驅(qū)動(dòng)器和序列器之間進(jìn)行靈活和模塊化的交互。
Sequencer和Driver的基本交互方式
driver和sequencer之間的基本交互是通過(guò)get_next_item()和item_done()任務(wù)完成的。
driver使用get_next_item()來(lái)獲取下一個(gè)要發(fā)送的隨機(jī)數(shù)據(jù)項(xiàng)。發(fā)送到DUT后,driver向sequencer發(fā)出信號(hào),使用item_done()表示該數(shù)據(jù)項(xiàng)已被驅(qū)動(dòng)。通常情況下,driver的主函數(shù)類似于以下偽代碼:
get_next_item()是blocking的,直到在該sequencer上運(yùn)行的sequences提供一個(gè)需要驅(qū)動(dòng)的數(shù)據(jù)項(xiàng)。
獲取待驅(qū)動(dòng)的數(shù)據(jù)項(xiàng)
除 了 get_next_item() 任 務(wù) 外 , uvm_seq_item_pull_port 類 還 提 供 了 另 一 個(gè) 任 務(wù)try_next_item()。如果沒(méi)有數(shù)據(jù)項(xiàng)可供驅(qū)動(dòng),這個(gè)任務(wù)將在同一simulation step中返回,此時(shí)可以讓driver執(zhí)行一些idle transactions,比如當(dāng)沒(méi)有有意義的數(shù)據(jù)要傳輸時(shí),給DUT發(fā)送隨機(jī)數(shù)據(jù),如下圖所示:
將處理后的數(shù)據(jù)發(fā)回給Sequencer
在某些sequences中,正在生成的值取決于先前生成的數(shù)據(jù)驅(qū)動(dòng)后的響應(yīng),那么driver需要使用item_done(rsp)將處理后的響應(yīng)返回到sequencer中。
seq_item_port.item_done(rsp);
或使用put_response(rsp)方法
seq_item_port.put_response(rsp);
或使用uvm_driver的內(nèi)置analysis port
rsp_port.write(rsp);
在提供response之前,必須使用rsp.set_id_info(req)將response transaction與request transaction相對(duì)應(yīng)。put_response()是一個(gè)blocking方法,所以sequence必須有一個(gè)對(duì)應(yīng)的get_response(rsp)。
審核編輯:劉清
-
UVM
+關(guān)注
關(guān)注
0文章
181瀏覽量
19121 -
TLM
+關(guān)注
關(guān)注
1文章
32瀏覽量
24722 -
sequence
+關(guān)注
關(guān)注
0文章
23瀏覽量
2828
原文標(biāo)題:UVM driver和sequencer的通信
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論