0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UVM driver和sequencer的通信

芯片驗(yàn)證工程師 ? 來(lái)源:芯片驗(yàn)證工程師 ? 2023-06-07 11:58 ? 次閱讀

創(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)在它們之間建立連接。

wKgaomSAAHeARPG7AACCxEaIzjw229.jpg

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ù)類似于以下偽代碼:

wKgaomSAAIeAbmASAABSKOTIjHw617.jpg

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ù),如下圖所示:

wKgaomSAAJSAfdKjAADMRpDAmJM903.jpg

將處理后的數(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)。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    19121
  • TLM
    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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)字IC驗(yàn)證之“典型的UVM平臺(tái)結(jié)構(gòu)”(3)連載中...

    driver,monitor和sequencer,其中driver ,monitor中也包含了與dut進(jìn)行通信的interface?! ⊥弦粚由蟻?lái)看,這層是env,其中包含了多個(gè)a
    發(fā)表于 01-22 15:32

    數(shù)字IC驗(yàn)證之“構(gòu)成uvm測(cè)試平臺(tái)的主要組件”(4)連載中...

    reference model這樣的基類。但是,uvm reference model需要從以uvm component這個(gè)基類進(jìn)行擴(kuò)展。因?yàn)楦鱾€(gè)組件之間存在著信息通訊?! ”热?b class='flag-5'>driver需要從
    發(fā)表于 01-22 15:33

    UVM代碼如何把testcase與driver分開(kāi)

    UVM代碼如何把testcase與driver分開(kāi)
    發(fā)表于 03-11 07:58

    什么是uvm?uvm的特點(diǎn)有哪些呢

    直觀的印象,就是uvm驗(yàn)證平臺(tái),它是分層的結(jié)構(gòu)。圖中的每一個(gè)巨型框都代表著平臺(tái)的一個(gè)構(gòu)成元素。這些元素呢,我們稱為平臺(tái)組建,下面來(lái)簡(jiǎn)單的分析一下。從最底層上來(lái)看,agent 中包含了driver,monitor和sequencer
    發(fā)表于 02-14 06:46

    UVM sequence分層有哪幾種方式呢

    sequencer,因?yàn)?b class='flag-5'>sequencer屬于靜態(tài)的UVM組件,屬于平臺(tái)型的內(nèi)容,不可能每一個(gè)用例都需要?jiǎng)?chuàng)建一個(gè)sequencer。這里的例外就是virtual
    發(fā)表于 04-11 16:37

    請(qǐng)問(wèn)一下在UVM中的UVMsequences是什么意思啊

    uvm_sequencer_base類派生出來(lái)的,其 被參數(shù)化為用于與driver 通信的sequence item類型。因此要訪問(wèn)正在運(yùn)行sequence 的真實(shí)sequencer
    發(fā)表于 04-11 16:43

    UVM sequence分層的幾種體現(xiàn)

    sequencer,因?yàn)?b class='flag-5'>sequencer屬于靜態(tài)的UVM組件,屬于平臺(tái)型的內(nèi)容,不可能每一個(gè)用例都需要?jiǎng)?chuàng)建一個(gè)sequencer。這里的例外就是virtual
    發(fā)表于 04-14 11:08

    如何配置sequence的仲裁算法和優(yōu)先級(jí)及中斷sequence的執(zhí)行

    01 Arbitrary在UVM中,多個(gè)sequence可以同時(shí)被綁定到相同的sequencer并啟動(dòng)。這種測(cè)試場(chǎng)景在實(shí)際中是存在的,比如在模擬同一個(gè)總線master口上的不同類型的數(shù)據(jù)流時(shí),可以將
    發(fā)表于 09-23 14:35

    介紹兩種交互方法來(lái)完成SequencerDriver的握手機(jī)制

    UVM框架下,測(cè)試激勵(lì)從產(chǎn)生到最終作用于DUT接口的這一過(guò)程,遵守Sequence-Sequencer-Driver這一基本結(jié)構(gòu)。在這一基本結(jié)構(gòu)之上,可能會(huì)根據(jù)實(shí)際應(yīng)用擴(kuò)展出來(lái)multi
    發(fā)表于 09-23 14:39

    UVM之sequence/item見(jiàn)解 sequencer特性及應(yīng)用(下)

    本文將接著分享sequencer的相關(guān)知識(shí),對(duì)于sequencer的仲裁特性有幾種可選,UVM_SEQ_ARB_FIFO ;UVM
    的頭像 發(fā)表于 02-19 10:14 ?4762次閱讀
    談<b class='flag-5'>UVM</b>之sequence/item見(jiàn)解 <b class='flag-5'>sequencer</b>特性及應(yīng)用(下)

    數(shù)字IC驗(yàn)證之“典型的UVM平臺(tái)結(jié)構(gòu)”(3)連載中...

    直觀的印象,就是uvm驗(yàn)證平臺(tái),它是分層的結(jié)構(gòu)。圖中的每一個(gè)巨型框都代表著平臺(tái)的一個(gè)構(gòu)成元素。這些元素呢,我們稱為平臺(tái)組建,下面來(lái)簡(jiǎn)單的分析一下。從最底層上來(lái)看,agent 中包含了driver,monitor和sequencer
    發(fā)表于 12-09 13:36 ?7次下載
    數(shù)字IC驗(yàn)證之“典型的<b class='flag-5'>UVM</b>平臺(tái)結(jié)構(gòu)”(3)連載中...

    UVM sequence機(jī)制中response的簡(jiǎn)單使用

    sequence作為UVM幾個(gè)核心機(jī)制之一,它有效地將transaction的產(chǎn)生從driver中剝離出來(lái),并且通過(guò)和sequencer相互配合,成功地將driver的負(fù)擔(dān)降低至僅聚焦
    的頭像 發(fā)表于 09-22 09:26 ?2321次閱讀

    UVM學(xué)習(xí)筆記(一)

    driver應(yīng)該派生自uvm_driver,而uvm_driver派生自uvm_component。
    的頭像 發(fā)表于 05-26 14:38 ?1317次閱讀
    <b class='flag-5'>UVM</b>學(xué)習(xí)筆記(一)

    創(chuàng)建UVM Driver的步驟

    Driver的作用是從sequencer中獲得數(shù)據(jù)項(xiàng),按照接口協(xié)議將數(shù)據(jù)項(xiàng)驅(qū)動(dòng)到總線上。
    的頭像 發(fā)表于 05-30 09:22 ?970次閱讀
    創(chuàng)建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>的步驟

    創(chuàng)建UVM Driver

    Driver的作用是從sequencer中獲得數(shù)據(jù)項(xiàng),按照接口協(xié)議將數(shù)據(jù)項(xiàng)驅(qū)動(dòng)到總線上。UVM類庫(kù)提供了uvm_driver基類,所有的Driver
    的頭像 發(fā)表于 05-30 16:17 ?763次閱讀
    創(chuàng)建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>