那曲檬骨新材料有限公司

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

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

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

UVM sequence機制中response的簡單使用

我快閉嘴 ? 來源:小杜的芯片驗證日記 ? 作者:小杜的芯片驗證日 ? 2022-09-22 09:26 ? 次閱讀

sequence作為UVM幾個核心機制之一,它有效地將transaction的產(chǎn)生從driver中剝離出來,并且通過和sequencer相互配合,成功地將driver的負擔降低至僅聚焦于根據(jù)協(xié)議將transaction發(fā)送到接口上,而具體發(fā)送什么數(shù)據(jù)、數(shù)據(jù)有多少,則通通交給了sequence和sequencer解決。

對于發(fā)送數(shù)據(jù),建立起了 sequence → sequencer → driver → interface → DUT 的單向數(shù)據(jù)傳輸通路。

但有時,sequence并不能著急產(chǎn)生數(shù)據(jù),而需要根據(jù)driver對transaction的反應(yīng),或者說sequence需要接收到driver發(fā)出的”我準備好了,你可以根據(jù)我目前的情況決定下一筆發(fā)送什么數(shù)據(jù)了“的信號,再產(chǎn)生transaction發(fā)送給driver。此時就需要建立起 driver → sequencer → sequence的通路,通路中傳輸?shù)?a target="_blank">信息即”rsp”。這是通過在driver中調(diào)用put_response( ),在sequencer中調(diào)用get_response( )實現(xiàn)的。同時,為了保證sequencer上有多個sequence時,rsp不會認錯sequence,最好給rsp設(shè)置好id等信息。


下面是小杜今天遇到的場景:

通過SMBus轉(zhuǎn)APB總線向DUT中發(fā)送read請求和address信息發(fā)送給DUT,DUT隨后將目標地址的寄存器中的數(shù)據(jù)反向發(fā)送出來,并且當監(jiān)測到rsp中某個關(guān)鍵信息滿足特定條件時,即可停止仿真

停止仿真可以通過調(diào)用系統(tǒng)函數(shù)$finish( )實現(xiàn),但如何監(jiān)測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是一個類,并且和我們發(fā)送的req是同一個類型。想一下也合理,req、rsp是建立在同一條數(shù)據(jù)通路上的,只是數(shù)據(jù)傳輸方向相反。即sequence sequencer driver interface DUT 是一條完整的雙向數(shù)據(jù)通路。(這是小杜目前的理解,如有錯誤,還請批評指正)


下面是整個body( )代碼:

task body;  //發(fā)送數(shù)據(jù)  `uvm_create_on(req, sequencer)    ...//對req進行處理  `uvm_send(req)    //獲取返回值并打印  get_response(rsp, req.get_transaction_id());  $display("rsp = ", rsp);
  //監(jiān)控并判斷rsp的具體位,滿足條件就停止仿真  if(rsp.data[x] == 'hxx) begin    $finish();  end
endtask: body

審核編輯:湯梓紅

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

    關(guān)注

    456

    文章

    51170

    瀏覽量

    427245
  • Response
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7980
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19227
  • sequence
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    2862

原文標題:日常 - UVM sequence機制中response的簡單使用

文章出處:【微信號:小杜的芯片驗證日記,微信公眾號:小杜的芯片驗證日記】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    UVM的field automation機制有哪些用途

    不知道UVM的field automation機制怎么翻譯,不管了,反正就是**機制,理解它能干啥就行了。
    的頭像 發(fā)表于 07-19 09:45 ?2148次閱讀

    IC驗證“UVM驗證平臺加入objection機制和virtual interface機制“(七)

    機制來控制驗證平臺的關(guān)閉。細心的讀者可能發(fā)現(xiàn),在上節(jié)的例子,并沒有如**《IC驗證"一個簡單UVM驗證平臺"是如何搭建的(五)》**所示顯式地調(diào)用 finish語句來結(jié)束仿真
    發(fā)表于 12-09 18:28

    什么是UVM Report機制

    UVM Report機制概述
    發(fā)表于 12-21 06:55

    數(shù)字IC驗證之“搭建一個可以運行的uvm測試平臺”(5)連載...

    需要為它的類成員指定random屬性。  代碼是如何實現(xiàn)的?  首先,我們說事物類需要從uvm sequence item進行擴展,然后定義事物所具備的屬性,那么這里使用一個簡單的例子來說明。  假定
    發(fā)表于 01-26 10:05

    UVM sequence分層有哪幾種方式呢

    種請求下可以使用第一種分層方式,在high-layer sequence依然使用low-layer sequencer進行驅(qū)動,同時對low-layer sequence進行更加精細化的控制
    發(fā)表于 04-11 16:37

    請問一下在UVM的UVMsequences是什么意思啊

    UVM方法學,UVMsequences 是壽命有限的對象。UVM sequences從uvm_sequence_item基類擴展得到,uvm_s
    發(fā)表于 04-11 16:43

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

    種請求下可以使用第一種分層方式,在high-layer sequence依然使用low-layer sequencer進行驅(qū)動,同時對low-layer sequence進行更加精細化的控制。在上面
    發(fā)表于 04-14 11:08

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

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

    介紹兩種交互方法來完成Sequencer和Driver的握手機制

    get_response()去等待響應(yīng)item,driver也不需要set_id_info()和put()返回響應(yīng)item。壞處是,如果裁掉響應(yīng)部分的握手,sequence也就不知道driver什么時候完成
    發(fā)表于 09-23 14:39

    sequence item實際應(yīng)用應(yīng)該包含哪些東西

    UVM sequence機制提供了生成和控制事務(wù)級(transaction level)測試激勵的方式,這種方式來源于工程實踐,讓測試用例的開發(fā)更加高效,同時也提高了測試激勵的可重用性。在UV
    發(fā)表于 09-23 14:42

    UVMseq.start()和default_sequence執(zhí)行順序

      1. 問題  假如用以下兩種方式啟動sequence,方法1用sequence的start()方法啟動seq1,方法2用UVM的default_sequence
    發(fā)表于 04-04 17:15

    淺談UVMsequence/item見解(上)

    item指的是uvm_sequence_item, Sequence Item具備UVM核心基類所必要的數(shù)據(jù)操作方法,對于激勵的生成和場景控制,是由sequence來編織的,item應(yīng)
    的頭像 發(fā)表于 02-19 15:52 ?5096次閱讀
    淺談<b class='flag-5'>UVM</b>之<b class='flag-5'>sequence</b>/item見解(上)

    UVM response_handler和get_response機制

    很多UVM用戶平時更多的使用get_response()方式去獲得uvm_driver的response,但get_response有些缺點
    的頭像 發(fā)表于 05-23 16:56 ?1900次閱讀
    <b class='flag-5'>UVM</b> <b class='flag-5'>response</b>_handler和get_<b class='flag-5'>response</b><b class='flag-5'>機制</b>

    UVMsequence的那些事兒

    將 生成測試case的語句 從 main_phase 獨立出來,使得使用不同測試用例時,只需要修改sequence部分即可,而不用關(guān)注 UVM剩余部分。
    的頭像 發(fā)表于 05-26 15:17 ?1155次閱讀
    <b class='flag-5'>UVM</b><b class='flag-5'>中</b><b class='flag-5'>sequence</b>的那些事兒

    UVM設(shè)計sequence啟動方式有哪幾種呢?

    本篇介紹UVMsequence,這是UVM中最基礎(chǔ)的部分。對于前面介紹的uvm_callback,
    的頭像 發(fā)表于 08-17 10:07 ?4701次閱讀
    <b class='flag-5'>UVM</b>設(shè)計<b class='flag-5'>中</b>的<b class='flag-5'>sequence</b>啟動方式有哪幾種呢?
    太仆寺旗| 寒江博彩堂| 百家乐发牌的介绍| 网上百家乐官网官方网站| 大发888官方sscptdf88yb| 保时捷百家乐娱乐城| HG百家乐官网大转轮| 本溪| 威尼斯人娱乐网可信吗| 百家乐星级游戏| 至尊百家乐官网qvod| 新葡京娱乐场| 真人百家乐最高赌注| 百家乐注码技巧| 百家乐官网精神| 闽清县| 顶级赌场官网下载| 百家乐官网7scs| 百家乐玩法秘决| 百家乐官网网上赌有作假吗| 冀州市| 元游棋牌下载| 职业百家乐的玩法技巧和规则 | 百家乐实时赌博| 属马的和属猴的在一起做生意好吗| 玩百家乐官网秘诀| 宁乡县| 大发888在线开户| 华泰百家乐的玩法技巧和规则| 百家乐园会员注册| 缅甸百家乐官网赌| 百家乐官网定位膽技巧| 绿春县| 德州扑克冠军| 威尼斯人娱乐棋牌下载| 百家乐游戏机分析仪| 百家乐官网平六亿财富网| 澳门百家乐官网如何算牌| 江油市| 佳豪国际娱乐| 大发娱乐城888|