衡阳派盒市场营销有限公司

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

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

3天內不再提示

管理test case結束機制介紹

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 2023-06-11 09:35 ? 次閱讀

UVM中每個phase都有一個內置的objection,為components和objects提供了同步方法,指示何時可以安全地結束這個phase,最終結束整個test case。

一般來說,由一個components或sequence在激勵開始時raise phase objection,激勵處理完畢之后drop objection。一旦所有提起的objections被dropped,該phase就終止了。

仿真中,一個master agent可能需要在runphase停止之前完成所有的讀寫操作,一個reactive slave agent不會drop objection,因為它只是一直被動地處理事務。對于sequence來說,有三種可能的方式可以處理phase objection。

a)

class test extends ovm_test;
task run_phase(uvm_phase phase);
    phase.raise_objection(this);
    seq.start(seqr);
    phase.drop_objection(this);
  endtask
endclass

b)

class test extends ovm_test;
task run_phase (uvm_phase phase);
    seq.set_starting_phase(phase);
    seq.start(seqr);
  endtask
endclass


class seq extends uvm_sequence #(data_item);
task body();
    uvm_phase p = get_starting_phase();
    if(p) p.raise_objection(this); 
//some critical logic
if(p)p.drop_objection(this);
  endtask
endclass

c)

class test extends ovm_test;
task run_phase (uvm_phase phase);
    seq.set_starting_phase(phase);
    seq.start(seqr);
  endtask
endclass


class seq extends uvm_sequence #(data_item);
function new(string name = "seq");
super.new(name);
    set_automatic_phase_objection(1);
endfunction
  task body();
// Sequence logic with no objection
// as it is already handled in the base class
endtask
endclass

上面的三種方式只需要實現其中一種即可。

當所有objections都被dropped,當前運行的phase就結束了。在仿真過程中,可能需要一些額外的cycle來向scoreboard傳輸最后一筆transaction。

為了適配這種情況,可以使用phase_ready_to_end()方法在必要時刻重新提出phase objection。

另外,也可以設置一個drain time,在組件所有objections都被dropped之后注入一個延遲。一般是在env或者test級設置drain time。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真器
    +關注

    關注

    14

    文章

    1019

    瀏覽量

    83936
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19228

原文標題:管理test case結束機制

文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于base test如何來構造測試用例

    在設計仿真用例時,有限制條件的激勵相比漫無目的的仿真更加有效的找出RTL的bug。因此,同一份測試方案,不同的sequence往往代表著不同的test_case。真正的測試用例都是基于base_test派生的一個類。
    的頭像 發表于 09-19 09:16 ?2432次閱讀

    條件(Case)結構的運用細節

    )輸入10~99,顯示0010~0099; 3)輸入100~999,顯示0100~0999; 4)輸入1000~9999,顯示1000~9999。我的作業完成狀態如上圖。問題點:不會結束Case循環。求助:怎么結束
    發表于 05-13 00:14

    Linux Shell系列教程之(十三)Shell分支語句case … esac教程

    stopped!  $./test.sh begin  I am started!  $/test.sh hello  Other command!  接下來給大家演示一個通過case…esac語句
    發表于 09-07 16:31

    如何解決vhdl代碼中的case語句問題?

    如果clk'event和clk ='1'那么情況1讀塊ram data1在case2和stop中啟用第一個條件結束案例1案例2在特殊操作中使用data1在case2中啟用第一個條件來讀取data2
    發表于 06-26 11:47

    工作流管理系統柔性機制

    隨著工作流管理系統在各個領域的應用,系統的柔性機制引起人們的極大關注。該文介紹柔性化工作流管理系統的基本概念及架構,描述從多個方面對工作流管理
    發表于 04-06 08:51 ?8次下載

    linux內存管理機制淺析

    本內容介紹了arm linux內存管理機制,詳細說明了linux內核內存管理,linux虛擬內存管理,arm linux內存管理等方面的知識
    發表于 12-19 14:09 ?73次下載
    linux內存<b class='flag-5'>管理機制</b>淺析

    最全SPARK內存管理機制

    最全SPARK內存管理機制
    發表于 09-08 14:17 ?5次下載
    最全SPARK內存<b class='flag-5'>管理機制</b>

    淺析物理內存與虛擬內存的關系及其管理機制

    本文主要介紹內存管理機制:物理內存與虛擬內存的關系,Linux內存管理機制,Python內存管理機制,Nginx內存管理機制,環形緩沖區
    的頭像 發表于 04-12 09:55 ?5555次閱讀
    淺析物理內存與虛擬內存的關系及其<b class='flag-5'>管理機制</b>

    如何優雅地結束UVM Test

    分享一下在UVM驗證環境中,結束仿真的幾種方式,不同結束仿真的方式適合不同的應用場景。
    的頭像 發表于 12-17 11:23 ?2757次閱讀
    如何優雅地<b class='flag-5'>結束</b>UVM <b class='flag-5'>Test</b>

    JavaScript定時器與執行機制介紹

    瀏覽器(或者說JS引擎)執行JS的機制是基于事件循環。 由于JS是單線程,所以同一時間只能執行一個任務,其他任務就得排隊,后續任務必須等到前一個任務結束才能開始執行。 為了避免因為某些長時間任務造成的無意義等待,JS引入了異步的概念,用另一個線程來
    的頭像 發表于 04-21 14:31 ?1027次閱讀

    聊一聊所謂的Objection機制

    Objection是UVM框架中用來同步不同組件的相同phase,以及決定當前測試用例什么時候結束(end-of-test)的機制,這也是用戶在拿到UVM之后最直白的使用場景。
    的頭像 發表于 06-09 11:16 ?2154次閱讀
    聊一聊所謂的Objection<b class='flag-5'>機制</b>

    CASE:創建多路分支

    CASE:創建多路分支 說明 使用“創建多路分支”指令,可以根據表達式的值執行多個指令序列中的一個。 表達式的值必須為整數或位字符串。執行 CASE 指令時,會將表達式(變量)的值與多個常數的值進行
    的頭像 發表于 06-27 11:46 ?946次閱讀
    <b class='flag-5'>CASE</b>:創建多路分支

    Switch case中的case順序

    Switch case中的case順序 Switch 可能轉化成多種不同算法的代碼。其中最常見的是跳轉表和比較鏈/樹。當switch用比較鏈的方式轉化時,編譯器會產生if-else-if的嵌套代碼
    的頭像 發表于 11-20 18:16 ?892次閱讀

    java switch case的語法規則

    在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據某個表達式的值來執行不同的代碼塊。下面是關于switch case語法規則的詳細解釋。 基本語法 switch語句
    的頭像 發表于 11-30 14:40 ?2503次閱讀

    oracle case when 語法介紹

    Oracle的CASE WHEN語法是一種在數據庫查詢中使用的條件語句,它提供了一種在SELECT語句中根據條件對結果進行轉換或篩選的方法。在本文中,我們將詳細介紹Oracle的CASE WHEN
    的頭像 發表于 12-06 10:21 ?1931次閱讀
    网络百家乐必胜投注方法| 大发888充钱| 英皇百家乐官网的玩法技巧和规则 | 申烨太阳城三期| 豪博百家乐娱乐城| 揭秘百家乐百分之50| 免费百家乐官网统计工具| 澳门百家乐官网大小| 百家乐路纸下| 2402 房号 风水| 百家乐官网空调维修| 钱百家乐官网取胜三步曲| 顶旺亚洲娱乐| 大发888赌场 游戏平台| 百家乐筹码14克粘土| 百家乐云顶| 百家乐扑克牌手机壳| 新锦江百家乐的玩法技巧和规则| 风水(24山定凶吉)最新整理| 澳门百家乐娱乐城信誉如何| 丽景湾百家乐官网的玩法技巧和规则| 正品百家乐官网游戏| 百家乐官网包台| 百家乐官网技巧之微笑心法| 大发888特惠代码| 拉斯维加斯娱乐| 永胜博娱乐| 百家乐赢钱公式| 新澳博天上人间娱乐| 哪个百家乐官网玩法平台信誉好| 澳门百家乐官网规例| 百家乐官网赌博玩法技巧| 菲律宾百家乐官网娱乐| 墨尔本百家乐官网的玩法技巧和规则| 梦幻城百家乐官网的玩法技巧和规则| 百家乐赌场讨论群| 新世纪百家乐的玩法技巧和规则| 太阳城娱乐网88| 丽水市| 免费百家乐官网娱乐城| 百家乐官网赢足球博彩皇冠|