吴忠躺衫网络科技有限公司

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里呢?
    将军百家乐官网的玩法技巧和规则| 大发888怎么提款| 正品百家乐官网地址| 百家乐官网视频游戏道具| 百家乐官方网站| 巴塘县| 百家乐官网出千原理| 网络百家乐| 百家乐官网注码管理| 百家乐官网最保险的方法| 百家乐官网返水1.2不限| 百家乐官网任你博娱乐场开户注册 | 百家乐机械投注法| 百家乐游戏如何玩| 百家乐玩法窍门| 百家乐扑克片礼服| 百家乐追号软件| 新全讯网777| 88利来| 大发足球| 博联百家乐官网游戏| 百家乐官网代理荐| 属猪与属狗 做生意| 百家乐稳赢投资法| 大发888 bet娱乐场下载| 百家乐官网如何看面| 百家乐真人游戏开户| 蓝盾百家乐具体玩法| 大发888娱乐游戏博彩| 百家乐官网作弊工具| 百家乐官网机器图片| 百家乐现金网平台排行榜| 大发888鸿博博彩| 百家乐官网怎么稳赚| 百盛百家乐官网的玩法技巧和规则 | 百家乐官网永利娱乐| 百家乐二代皇冠博彩| 水果机破解| 百家乐官网心态研究| 百家乐官网平注法亏损| 威尼斯人娱乐城信誉怎样|