在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

我眼中UVM啟動sequence的幾種常見方式

冬至子 ? 來源:不二魚 ? 作者:不二魚 ? 2023-06-16 11:31 ? 次閱讀

第一種:start啟動

最簡單粗暴的一種方式,只需要在某個component,如my_sequencer、my_env甚至base_test的main_phase中啟動。

task fish_env::main_phase(uvm_phase phase);
   fish_sequence seq;  //創(chuàng)建seq實(shí)例
   phase.raise_objection(this);
   seq = fish_sequence::type_id::create("seq");
   seq.start(fish_agt.sqr);  //將seq發(fā)送給對應(yīng)的sequencer
   phase.drop_objection(this);
endtask

注:

  • 如果在sequencer中啟動,唯一的區(qū)別就是start的參數(shù)變?yōu)閠his,即seq.start(this);
  • 通常sequence不會直接發(fā)送給sequencer,而是通過virtual_sequence和virtual_sequencer;
  • raise_objection和drop_objection往往伴隨sequence的啟動;

第二種:default_sequence

采用default_sequence啟動,實(shí)際上還是調(diào)用了start任務(wù),

uvm_config_db#(uvm_object_wrapper)::set(this,
                                        "env.fish_agt.sqr.main_phase",
                                        "default_sequence",
                                         case0_sequence::type_id::get());
)

或者先例化,再采用default_sequence啟動:

function void fish_case0::build_phase(uvm_phase phase);
  case0_sequence cseq;
    super.build_phase(phase);
      cseq = new("cseq");
      uvm_config_db#(uvm_sequence_base)::set(this,
                                             "env.fish_agt.sqr.main_phase",
                                             "default_sequence",
                                              cseq);
endfunction

第三種:`uvm_do系列宏啟動

`uvm_do(SEQ_OR_ITEM)o
`uvm_do_pri(SEQ_OR_ITEM, PRIORITY)
`uvm_do_with(SEQ_OR_ITEM, CONSTRAINTS)
`uvm_do_pri_with(SEQ_OR_ITEM, PRIORITY, CONSTRAINTS)
`uvm_do_on(SEQ_OR_ITEM, SEQR)
`uvm_do_on_pri(SEQ_OR_ITEM, SEQR, PRIORITY)
`uvm_do_on_with(SEQ_OR_ITEM, SEQR, CONSTRAINTS)
`uvm_do_on_pri_with(SEQ_OR_ITEM, SEQR, PRIORITY, CONSTRAINTS)

uvm_do的宏有多種,根據(jù)實(shí)際情況選擇合適的宏。實(shí)際工作當(dāng)中,使用較多的就是uvm_do_on(SEQ_OR_ITEM, SEQR),第一個參數(shù)表示要發(fā)送的sequence或者item,第二個參數(shù)表示要將此sequence或者item發(fā)送給哪個sequencer。工作中有多個seq,為了實(shí)現(xiàn)seq的統(tǒng)一調(diào)度,就會使用virtual_sequence/sequencer,在vitrual_sequence 的body中例化多個sequence,使用uvm_do_on將sequencer掛載到指定sequencer上。

`uvm_declare_p_sequencer(fish_virtual_sequencer)
task fish_virtal_seq::body();
    fish_sequence_1   fish_seq_1;
    fish_sequence_2   fish_seq_2;
    ...
    fish_sequence_n   fish_seq_n
    `uvm_do_on(fish_seq_1, p_sequencer.sqr_1);
    `uvm_do_on(fish_seq_2, p_sequencer.sqr_2);
    ...
    `uvm_do_on(fish_seq_n,p_sequencer.sqr_n);
end_task:body

如此一來,fish_seq就掛載到了fish_virtual_sequencer中某個具體的sequencer上,這是最通用的做法。但UVM的用法太靈活了,最近在工作中,我遇到,seq不會掛載到某個具體的sqr的情況,也疑惑了很久,下次和你們分享。歡迎持續(xù)關(guān)注。

第四種:uvm_create和uvm_send

class case0_sequence extends uvm_sequence #(fish_transaction)
...
  task case0_sequence::body()
    `uvm_create(f_trans)
    ...//對transaction做處理
    `uvm_send(f_trans)
   endtask

uvm_create宏的作用就是實(shí)例化transaction,實(shí)例化之后,可以對其做更多的處理,處理完畢再使用`uvm_send宏發(fā)送出去。

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

    關(guān)注

    0

    文章

    182

    瀏覽量

    19451
  • sequence
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    2978
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    UVM sequence分層有哪幾種方式

    驗證環(huán)境需要對數(shù)據(jù)進(jìn)行分層。例如,將32比特的寄存器讀寫封裝成數(shù)據(jù)讀寫和狀態(tài)讀寫等實(shí)際業(yè)務(wù)操作等或者對底層sequence進(jìn)行一些隨機(jī)控制等。實(shí)現(xiàn)這種分層可以有兩種方式:1、Sequence
    發(fā)表于 04-11 16:37

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

    驗證環(huán)境需要對數(shù)據(jù)進(jìn)行分層。例如,將32比特的寄存器讀寫封裝成數(shù)據(jù)讀寫和狀態(tài)讀寫等實(shí)際業(yè)務(wù)操作等或者對底層sequence進(jìn)行一些隨機(jī)控制等。實(shí)現(xiàn)這種分層可以有兩種方式:1、Sequence
    發(fā)表于 04-14 11:08

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

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

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

      1. 問題  假如用以下兩種方式啟動sequence,方法1用sequence的start()方法啟動seq1,方法2用
    發(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 ?5277次閱讀
    淺談<b class='flag-5'>UVM</b>之<b class='flag-5'>sequence</b>/item見解(上)

    UVMsequence/item見解 sequencer特性及應(yīng)用(下)

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

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

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

    start()如何執(zhí)行uvm_sequence

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

    UVMsequence的那些事兒

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

    在Sequencer上啟動一個Sequence

    Sequencer默認(rèn)不執(zhí)行任何Sequence。驗證工程師可以通過調(diào)用start()啟動一個Sequence,也可以通過uvm_config_db指定一個自動
    的頭像 發(fā)表于 06-10 09:10 ?1059次閱讀
    在Sequencer上<b class='flag-5'>啟動</b>一個<b class='flag-5'>Sequence</b>

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

    本篇介紹UVM中的sequence,這是UVM中最基礎(chǔ)的部分。對于前面介紹的uvm_callback, uvm_visitor等,很少被使用
    的頭像 發(fā)表于 08-17 10:07 ?5784次閱讀
    <b class='flag-5'>UVM</b>設(shè)計中的<b class='flag-5'>sequence</b><b class='flag-5'>啟動</b><b class='flag-5'>方式</b>有哪<b class='flag-5'>幾種</b>呢?

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

    uvm_sequence_library是從uvm_sequence擴(kuò)展而來的,它是一個容納了一系列其它sequences類型的容器,在啟動時,它會根據(jù)模式從這系列sequences中選擇并執(zhí)行它們。
    的頭像 發(fā)表于 09-08 15:06 ?898次閱讀
    如何將sequences類型添加或注冊到<b class='flag-5'>sequence</b> library里呢?

    電氣工程師進(jìn)階知識匯總:電機(jī)啟動的五種常見方式

    1.電機(jī)啟動的五種常見方式 ①.星三角降壓啟動:正常運(yùn)行為三角形接法的電動機(jī),在啟動時將定子繞組接成星形,可以降低啟動電流。
    發(fā)表于 09-14 11:28 ?5183次閱讀
    電氣工程師進(jìn)階知識匯總:電機(jī)<b class='flag-5'>啟動</b>的五種<b class='flag-5'>常見方式</b>

    MCU批量生產(chǎn)下載程序的幾種常見方

    MCU批量生產(chǎn)下載程序的幾種常見方
    的頭像 發(fā)表于 10-24 17:22 ?2204次閱讀
    MCU批量生產(chǎn)下載程序的<b class='flag-5'>幾種</b><b class='flag-5'>常見方</b>法

    運(yùn)行Python程序的幾種常見方

    Python是一種高級編程語言,具有簡單易學(xué),易于閱讀和調(diào)試的特點(diǎn)。當(dāng)你完成了一個Python程序之后,你需要運(yùn)行它以檢查程序是否按照預(yù)期工作。下面是運(yùn)行Python程序的幾種常見方
    的頭像 發(fā)表于 11-28 15:32 ?3114次閱讀
    主站蜘蛛池模板: 四虎精品影院在线观看视频 | 亚洲狠狠狠一区二区三区 | 色视频综合 | 全黄毛片 | 91一区二区三区四区五区 | 午夜精品福利视频 | 成年美女黄网站色大免费视频 | 热久久综合这里只有精品电影 | 在线免费色视频 | 国产一级特黄aa大片在线 | 免费一级在线观看 | 亚洲成人一级片 | 欧美一区二区影院 | 四虎影院成人在线观看 | 国产一区二区三区四卡 | 美女扒开尿口让男人30视频 | 国产三级日本三级在线播放 | 97狠狠操 | 亚洲精品视频在线 | 国产小视频在线 | 色天使在线视频 | 天天综合色天天综合网 | 四虎影院永久免费 | 狠狠做深爱婷婷久久一区 | 婷婷五月在线视频 | 999毛片免费观看 | 男人的天堂一区二区视频在线观看 | 日本a网| 青青青久97在线观看香蕉 | 99成人| 女主播扒开内衣让粉丝看个够 | 天天拍夜夜操 | 日本黄色免费网站 | 五月婷婷丁香 | 99久久国产免费中文无字幕 | 轻点灬大ji巴太大太深了 | 男人天堂网在线视频 | 色先锋av资源中文字幕 | 天天色图片 | 国产精品色片 | www.伊人网|