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

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

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

3天內不再提示

如何在定義后啟動一個sequence

我快閉嘴 ? 來源:FPGA學姐 ? 作者:FPGA學姐 ? 2022-09-09 09:41 ? 次閱讀

Q:激勵最初產生在driver中,后來產生在sequence中。為什么會有這個過程呢?

Q:當一個激勵在driver中產生,當要對DUT施加不同的激勵時,那應該怎么辦呢?

Q:如何在定義后啟動一個sequence

//當完成一個sequence的定義后,可以使用start任務將其啟動my_sequence my_seq;my_seq = my_sequence::create("my_seq");my_seq.start(sequencer);//除了直接啟動之外,還可以使用default_sequence啟動uvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",case0_sequence::get());

A:使用sequence機制之后,在不同的測試用例中,將不同的sequence設置成sequencer的main_phase的default_sequence。當sequencer執行到main_phase時,發現有default_sequence,那么它就啟動sequence。

A:當一個sequence啟動后會自動執行sequence的body任務。其實,除了body外,還會自動調用sequence的pre_body與post_body

文件:src/my_case0.sv3 class case0_sequence extends uvm_sequence #(my_transaction);virtual task pre_body();`uvm_info("sequence0", "pre_body is called!!!", UVM_LOW)endtaskvirtual task post_body();`uvm_info("sequence0", "post_body is called!!!", UVM_LOW)endtaskvirtual task body();#100;`uvm_info("sequence0", "body is called!!!", UVM_LOW) endtask `uvm_object_utils(case0_sequence)endclass

Q:UVM支持同一時刻在同一sequencer上啟動多個sequence,那同時啟動多個sequence時,哪個先執行呢?

Q:sequencer根據什么選擇使用哪個sequence的transaction呢?這是UVM的sequence機制中的仲裁問題

//例如如下啟動了seq0和seq1文件:src/no_pri/my_case0.svtask my_case0::main_phase(uvm_phase phase);   sequence0 seq0;   sequence1 seq1;   seq0 = new("seq0");   seq0.starting_phase = phase;   seq1 = new("seq1");   seq1.starting_phase = phase;fork   seq0.start(env.i_agt.sqr);   seq1.start(env.i_agt.sqr);joinendtask

A:對于transaction來說,存在優先級的概念,通常來說,優先級越高越容易被選中。當使用uvm_do或者uvm_do_with宏時,產生的transaction的優先級是默認的優先級,即-1。可以通過uvm_do_pri及uvm_do_pri_with改變所產生的transaction的優先級

文件:src/item_pri/my_case0.sv3 class sequence0 extends uvm_sequence #(my_transaction);virtual task body();repeat (5) begin   `uvm_do_pri(m_trans, 100)   `uvm_info("sequence0", "send one transaction", UVM_MEDIUM)end#100;endtaskendclassclass sequence1 extends uvm_sequence #(my_transaction);virtual task body();repeat (5) begin   `uvm_do_pri_with(m_trans, 200, {m_trans.pload.size < 500;})   `uvm_info("sequence1", "send one transaction", UVM_MEDIUM)endendtaskendclass

uvm_do_pri與uvm_do_pri_with的第二個參數是優先級,這個數值必須是一個大于等于-1的整數。數字越大,優先級越高。

A:除transaction有優先級外,sequence也有優先級的概念

文件:src/sequence_pri/my_case0.svtask my_case0::main_phase(uvm_phase phase);env.i_agt.sqr.set_arbitration(SEQ_ARB_STRICT_FIFO);fork    seq0.start(env.i_agt.sqr, null, 100);    seq1.start(env.i_agt.sqr, null, 200);joinendtask

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

    關注

    0

    文章

    526

    瀏覽量

    66722
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19228
  • sequence
    +關注

    關注

    0

    文章

    23

    瀏覽量

    2862

原文標題:UVM之sequence機制

文章出處:【微信號:FPGA學姐,微信公眾號:FPGA學姐】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    何在主從設備之間創建定義的API調用?

    我只是想知道如何在主從設備之間創建定義的API調用。我想用主ID和些數據發送
    發表于 09-19 12:21

    UVM sequence分層有哪幾種方式呢

    sequencer外部進行分層,例如使用virtual sequencer。實際項目中,般兩種分層的手段都會采用。對于底層的數據項lower_env_items定義如下:底層的s
    發表于 04-11 16:37

    UVM sequence分層的幾種體現

    sequencer外部進行分層,例如使用virtual sequencer。實際項目中,般兩種分層的手段都會采用。對于底層的數據項lower_env_items定義如下:底層的s
    發表于 04-14 11:08

    何在SpinalHDL里啟動仿真

    的信號:仿真啟動,你會在控制臺看到仿真的啟動:可以看到,仿真的啟動首先會將DUT編譯生成Verilog文件,隨后交由Verilator進行編譯,隨后選擇
    發表于 07-26 16:59

    如何配置sequence的仲裁算法和優先級及中斷sequence的執行

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

    sequence item實際應用中應該包含哪些東西

    等。基于以上這些需求,在UVM類庫提供的代碼示例基礎上,整理成以下般框架,可用于指導日常開發。02 用戶自定義方法在上面定義sequence item框架中,有
    發表于 09-23 14:42

    何在啟動文件中調用定義為uint32_t getValue(void)的C函數呢?

    我如何在啟動文件中調用定義為 uint32_t getValue(void) 的 C 函數(在 Reset_Handler 例程中)?需要什么語法?我嘗試導入它并將其設置為 extern(其他標準
    發表于 12-09 07:27

    UVM中seq.start()和default_sequence執行順序

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

    對于啟動Linux時自動啟動 LXD 容器的方法解析

    容器的順序(從最高開始)。你也可以使用 boot.autostart.delay(默認值 0)選項定義啟動容器等待幾秒
    的頭像 發表于 01-09 17:12 ?2780次閱讀
    對于<b class='flag-5'>啟動</b>Linux時自動<b class='flag-5'>啟動</b> LXD 容器的方法解析

    淺談UVM之sequence/item見解(上)

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

    start()如何執行uvm_sequence

    要使用start()啟動sequence,就必須要指定相應的sequencer句柄, **另外的幾個選項般用不上** 。其中
    的頭像 發表于 03-21 11:37 ?739次閱讀
    start()如何執行uvm_<b class='flag-5'>sequence</b>

    如何配置sequence的仲裁算法和優先級?

    在UVM中,多個sequence可以同時被綁定到相同的sequencer并啟動。這種測試場景在實際中是存在的,比如在模擬同一個總線master口上的不同類型的數據流時
    的頭像 發表于 04-27 15:20 ?1436次閱讀
    如何配置<b class='flag-5'>sequence</b>的仲裁算法和優先級?

    在Sequencer上啟動Sequence

    Sequencer默認不執行任何Sequence。驗證工程師可以通過調用start()啟動Sequence,也可以通過uvm_confi
    的頭像 發表于 06-10 09:10 ?862次閱讀
    在Sequencer上<b class='flag-5'>啟動</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>Sequence</b>

    UVM設計中的sequence啟動方式有哪幾種呢?

    本篇介紹UVM中的sequence,這是UVM中最基礎的部分。對于前面介紹的uvm_callback, uvm_visitor等,很少被使用到或者也只有搭建平臺的人會使用。
    的頭像 發表于 08-17 10:07 ?4720次閱讀
    UVM設計中的<b class='flag-5'>sequence</b><b class='flag-5'>啟動</b>方式有哪幾種呢?

    如何將sequences類型添加或注冊到sequence library里呢?

    uvm_sequence_library是從uvm_sequence擴展而來的,它是容納了系列其它sequences類型的容器,在
    的頭像 發表于 09-08 15:06 ?691次閱讀
    如何將sequences類型添加或注冊到<b class='flag-5'>sequence</b> library里呢?
    百家乐官网客户端LV| 威尼斯人娱乐城平台| 视频百家乐平台出租| 百家乐用什么平台| 百家乐官网单机版的| 博彩娱乐| 新全讯网777| 网上百家乐有没有假| 订做百家乐官网桌子| 申扎县| 大发888娱乐城.com| 网上百家乐赌场| 香港百家乐官网的玩法技巧和规则 | 攀枝花市| 大发888在线娱乐加盟合作| 钱隆百家乐分析| 新濠百家乐官网娱乐城 | 塑料百家乐官网筹码| 3d大赢家| 威尼斯人娱乐城梧州店| 乐百家乐彩现金开户| 凱旋门百家乐官网的玩法技巧和规则| 百家乐官网庄闲和游戏机| 皇城娱乐| 试玩百家乐代理| 现金百家乐人气最高| 金百家乐官网的玩法技巧和规则| 网上百家乐官网有假的吗| 万豪国际娱乐| 大发888开户即送58| 金赞百家乐的玩法技巧和规则| 百家乐那个平台好| 阴宅24山坟前放水口| 本溪棋牌网| 大发888网站| 免费百家乐追号| 百家乐说明| 百家乐网络赌博网址| 百家乐视频象棋| 战神百家乐官网的玩法技巧和规则| 澳门百家乐官网职业赌客|