創(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()。如果沒有數(shù)據(jù)項(xiàng)可供驅(qū)動(dòng),這個(gè)任務(wù)將在同一simulation step中返回,此時(shí)可以讓driver執(zhí)行一些idle transactions,比如當(dāng)沒有有意義的數(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文章
182瀏覽量
19236 -
TLM
+關(guān)注
關(guān)注
1文章
32瀏覽量
24785 -
sequence
+關(guān)注
關(guān)注
0文章
23瀏覽量
2868
原文標(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)推薦
數(shù)字IC驗(yàn)證之“典型的UVM平臺(tái)結(jié)構(gòu)”(3)連載中...
數(shù)字IC驗(yàn)證之“構(gòu)成uvm測(cè)試平臺(tái)的主要組件”(4)連載中...
什么是uvm?uvm的特點(diǎn)有哪些呢
UVM sequence分層有哪幾種方式呢
請(qǐng)問(wèn)一下在UVM中的UVMsequences是什么意思啊
UVM sequence分層的幾種體現(xiàn)
如何配置sequence的仲裁算法和優(yōu)先級(jí)及中斷sequence的執(zhí)行
介紹兩種交互方法來(lái)完成Sequencer和Driver的握手機(jī)制
談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)
![談<b class='flag-5'>UVM</b>之sequence/item見解 <b class='flag-5'>sequencer</b>特性及應(yīng)用(下)](https://file.elecfans.com/web1/M00/45/D9/pIYBAFp5ZR-AFCsHAAAKbIqMt2Q658.jpg)
數(shù)字IC驗(yàn)證之“典型的UVM平臺(tái)結(jié)構(gòu)”(3)連載中...
![數(shù)字IC驗(yàn)證之“典型的<b class='flag-5'>UVM</b>平臺(tái)結(jié)構(gòu)”(3)連載中...](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
UVM sequence機(jī)制中response的簡(jiǎn)單使用
創(chuàng)建UVM Driver的步驟
![創(chuàng)建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>的步驟](https://file1.elecfans.com/web2/M00/88/D7/wKgaomR1UDaAcFYDAAAzXbKUSO4738.png)
創(chuàng)建UVM Driver
![創(chuàng)建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>](https://file1.elecfans.com/web2/M00/88/E0/wKgaomR1sPuALJTcAAGJv-_jZtc643.jpg)
評(píng)論