sequence作為UVM幾個(gè)核心機(jī)制之一,它有效地將transaction的產(chǎn)生從driver中剝離出來,并且通過和sequencer相互配合,成功地將driver的負(fù)擔(dān)降低至僅聚焦于根據(jù)協(xié)議將transaction發(fā)送到接口上,而具體發(fā)送什么數(shù)據(jù)、數(shù)據(jù)有多少,則通通交給了sequence和sequencer解決。
對(duì)于發(fā)送數(shù)據(jù),建立起了 sequence → sequencer → driver → interface → DUT 的單向數(shù)據(jù)傳輸通路。
但有時(shí),sequence并不能著急產(chǎn)生數(shù)據(jù),而需要根據(jù)driver對(duì)transaction的反應(yīng),或者說sequence需要接收到driver發(fā)出的”我準(zhǔn)備好了,你可以根據(jù)我目前的情況決定下一筆發(fā)送什么數(shù)據(jù)了“的信號(hào),再產(chǎn)生transaction發(fā)送給driver。此時(shí)就需要建立起 driver → sequencer → sequence的通路,通路中傳輸?shù)男畔⒓础?a href="http://www.3532n.com/tags/rs/" target="_blank">rsp”。這是通過在driver中調(diào)用put_response( ),在sequencer中調(diào)用get_response( )實(shí)現(xiàn)的。同時(shí),為了保證sequencer上有多個(gè)sequence時(shí),rsp不會(huì)認(rèn)錯(cuò)sequence,最好給rsp設(shè)置好id等信息。
下面是小杜今天遇到的場(chǎng)景:
通過SMBus轉(zhuǎn)APB總線向DUT中發(fā)送read請(qǐng)求和address信息發(fā)送給DUT,DUT隨后將目標(biāo)地址的寄存器中的數(shù)據(jù)反向發(fā)送出來,并且當(dāng)監(jiān)測(cè)到rsp中某個(gè)關(guān)鍵信息滿足特定條件時(shí),即可停止仿真。
停止仿真可以通過調(diào)用系統(tǒng)函數(shù)$finish( )實(shí)現(xiàn),但如何監(jiān)測(cè)rsp中具體某一位數(shù)據(jù)呢?
首先我們需要確定rsp 的數(shù)據(jù)類型,可以通過systemverilog的系統(tǒng)函數(shù)$typename( )來查看:
task body;...get_response(rsp, req.get_transaction_id());$display($typename(this.rsp));...endtask
打印結(jié)果:
class xxx.xxx_master_transaction
可以看到,返回的rsp是一個(gè)類,并且和我們發(fā)送的req是同一個(gè)類型。想一下也合理,req、rsp是建立在同一條數(shù)據(jù)通路上的,只是數(shù)據(jù)傳輸方向相反。即sequence sequencer driver interface DUT 是一條完整的雙向數(shù)據(jù)通路。(這是小杜目前的理解,如有錯(cuò)誤,還請(qǐng)批評(píng)指正)
下面是整個(gè)body( )代碼:
task body;//發(fā)送數(shù)據(jù)`uvm_create_on(req, sequencer)...//對(duì)req進(jìn)行處理`uvm_send(req)//獲取返回值并打印get_response(rsp, req.get_transaction_id());$display("rsp = ", rsp);//監(jiān)控并判斷rsp的具體位,滿足條件就停止仿真if(rsp.data[x] == 'hxx) begin$finish();endendtask: body
-
芯片
+關(guān)注
關(guān)注
463文章
54007瀏覽量
465923 -
Response
+關(guān)注
關(guān)注
0文章
5瀏覽量
8216 -
UVM
+關(guān)注
關(guān)注
0文章
183瀏覽量
20012 -
sequence
+關(guān)注
關(guān)注
0文章
23瀏覽量
3261
原文標(biāo)題:日常 - UVM sequence機(jī)制中response的簡(jiǎn)單使用
文章出處:【微信號(hào):小杜的芯片驗(yàn)證日記,微信公眾號(hào):小杜的芯片驗(yàn)證日記】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
UVM中的field automation機(jī)制有哪些用途
IC驗(yàn)證“UVM驗(yàn)證平臺(tái)加入objection機(jī)制和virtual interface機(jī)制“(七)
UVM sequence分層有哪幾種方式呢
請(qǐng)問一下在UVM中的UVMsequences是什么意思啊
UVM sequence分層的幾種體現(xiàn)
如何配置sequence的仲裁算法和優(yōu)先級(jí)及中斷sequence的執(zhí)行
介紹兩種交互方法來完成Sequencer和Driver的握手機(jī)制
sequence item實(shí)際應(yīng)用中應(yīng)該包含哪些東西
UVM中seq.start()和default_sequence執(zhí)行順序
淺談UVM之sequence/item見解(上)
UVM response_handler和get_response機(jī)制
UVM中sequence的那些事兒
UVM設(shè)計(jì)中的sequence啟動(dòng)方式有哪幾種呢?
UVM sequence機(jī)制中response的簡(jiǎn)單使用
評(píng)論