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

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

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

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

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

西西 ? 2018-02-19 10:14 ? 次閱讀

本文將接著分享sequencer的相關(guān)知識(shí),對(duì)于sequencer的仲裁特性有幾種可選,UVM_SEQ_ARB_FIFO ;UVM_SEQ_ARB_WEIGHTED;UVM_SEQ_ARB_RANDOM ;UVM_SEQ_ARB_STRICT_FIFO等。出其中三種需要特別區(qū)分外其它的模式可以滿足絕大多數(shù)的仲裁需求。

sequencer的仲裁特性及應(yīng)用

在之前我們就談到了,uvm_sequencer類自建了仲裁機(jī)制用來保證多個(gè)sequence同時(shí)掛載到sequencer時(shí),可以按照規(guī)則允許特定的sequence中的item優(yōu)先通過。在實(shí)際使用中,我們可以通過uvm_sequencer::set_arbitration(UVM_SEQ_ARB_TYPE val)來設(shè)置仲裁模式。這里的仲裁模式UVM_SEQ_ARB_TYPE有下面幾種值可以選擇:

UVM_SEQ_ARB_FIFO :默認(rèn)模式。來自于sequences的發(fā)送請(qǐng)求,按照FIFO先進(jìn)先出的方式被依次授權(quán),和優(yōu)先級(jí)沒有關(guān)系。

UVM_SEQ_ARB_WEIGHTED:不同sequence的發(fā)送請(qǐng)求,將按照它們的優(yōu)先級(jí)被隨機(jī)授權(quán)。

UVM_SEQ_ARB_RANDOM :不同的請(qǐng)求會(huì)被隨機(jī)授權(quán),而無視它們的抵達(dá)順序和優(yōu)先級(jí)。

UVM_SEQ_ARB_STRICT_FIFO:不同的請(qǐng)求,會(huì)按照它們的優(yōu)先級(jí)以及抵達(dá)順序來依次授權(quán),因此與優(yōu)先級(jí)和抵達(dá)時(shí)間都有關(guān)。

UVM_SEQ_ARB_STRICT_RANDOM:不同的請(qǐng)求,會(huì)按照它們最高的優(yōu)先級(jí)被隨機(jī)授權(quán),與抵達(dá)時(shí)間無關(guān)。

UVM_SEQ_ARB_USER:用戶可以自仲裁機(jī)制方法user_priority_arbitration()來裁定哪個(gè)sequence的請(qǐng)求優(yōu)先被授權(quán)。

在上面的仲裁模式中,與priority有關(guān)的模式有UVM_SEQ_ARB_WEIGHTED、UVM_SEQ_ARB_STRICT_FIFO和UVM_SEQ_ARB_STRICT_RANDOM。這三種模式的區(qū)別在于,UVM_SEQ_ARB_WEIGHTED的授權(quán)會(huì)落到各個(gè)優(yōu)先級(jí)的請(qǐng)求上面,而UVM_SEQ_ARB_STRICT_RANDOM則只會(huì)將授權(quán)隨機(jī)安排到最高優(yōu)先級(jí)的請(qǐng)求上面,UVM_SEQ_ARB_STRICT_FIFO則不會(huì)隨機(jī)授權(quán),而是嚴(yán)格按照優(yōu)先級(jí)以及抵達(dá)順序來依次授權(quán)。沒有特別要的要求,則用戶不需要再額外自定義授權(quán)算法,因此使用UVM_SEQ_ARB_USER這一模式的情況不多見,其它的模式可以滿足絕大多數(shù)的仲裁需求。

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

鑒于sequence在傳送的優(yōu)先級(jí)可以影響sequencer的仲裁授權(quán),我們有必要結(jié)合sequencer的仲裁模式選擇和sequence發(fā)送的優(yōu)先級(jí)參數(shù)設(shè)置給出一段例碼。通過這段例碼,希望讀者可以掌握如何設(shè)置仲裁模式和優(yōu)先級(jí)的傳遞。

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

輸出結(jié)果:

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

上面的例碼中,seq1、seq2、seq3在同一時(shí)刻發(fā)起傳送請(qǐng)求,通過`uvm_do_prio_with的宏,在發(fā)送sequence時(shí)可以傳遞優(yōu)先級(jí)參數(shù)。由于將seq1與seq2設(shè)置為同樣的高優(yōu)先級(jí),而seq3設(shè)置為較低的優(yōu)先級(jí),這樣在隨后的UVM_SEQ_ARB_STRICT_FIFO仲裁模式下,可以從輸出結(jié)果看到,按照優(yōu)先級(jí)高低和傳送請(qǐng)求時(shí)間順序,先將seq1和seq2中的item發(fā)送完畢,隨后將seq3發(fā)送完。

除了在上面的sequence遵循仲裁機(jī)制,將自身的item發(fā)送完才結(jié)束自身的正常模式以外,在一些特殊情形下,有一些sequence需要有更高的權(quán)限取得sequencer的授權(quán)來訪問driver。 例如需要響應(yīng)中斷的情形下,用于處理中斷的sequence應(yīng)該有更高的權(quán)限來獲得sequencer的授權(quán)。為此,uvm_sequencer提供了兩種鎖定機(jī)制,分別可以通過lock()和grab()方法實(shí)現(xiàn)。這兩種方法的區(qū)別在于:

lock()與unlock()這一對(duì)方法可以為sequence提供排外的訪問權(quán)限,但前提條件是,該sequence首先需要按照sequencer的仲裁機(jī)制獲得授權(quán)。而一旦sequence獲得授權(quán),則無需擔(dān)心權(quán)限被收回,只有該sequence主動(dòng)unlock它的sequencer主動(dòng)解鎖,才可以釋放這一鎖定的權(quán)限。lock()是一種阻塞的任務(wù),只有獲得了權(quán)限,它才會(huì)返回。

grab()與ungrab()也可以為sequence提供排外的訪問權(quán)限,而且它只需要在sequencer下一次授權(quán)周期時(shí)就可以無條件地獲得授權(quán)。與lock方法相比,grab方法無視同一時(shí)刻內(nèi)發(fā)起傳送請(qǐng)求的其它sequence,而唯一可以阻止它的只有已經(jīng)預(yù)先獲得授權(quán)的其它lock或者grab的sequence。

這里需要注意的是,由于“解鈴還須系鈴人”,如果sequence使用了lock()或者grab()方法,必須在sequence結(jié)束前調(diào)用unlock()或者ungrab()方法來釋放權(quán)限,否則sequencer會(huì)進(jìn)入死鎖狀態(tài)而無法繼續(xù)為其余sequence授權(quán)。下面的給出一段例碼,用來展示如何使用上述的方法實(shí)現(xiàn)鎖定的sequence傳送方式。

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

輸出結(jié)果:

談UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

結(jié)合例碼和輸出結(jié)果,我們從中可以發(fā)現(xiàn)如下幾點(diǎn):

對(duì)于locks,在10ns時(shí),它跟其它幾個(gè)sequence一同向sequencer發(fā)起請(qǐng)求,按照仲裁模式,sequencer先后授權(quán)給seq1、seq2、seq3,最后才授權(quán)的locks。而locks在獲得授權(quán)之后,就可以一直享有權(quán)限,而無需擔(dān)心權(quán)限被sequencer收回。直到在locks結(jié)束前,用戶需要通過unlock()方法返還權(quán)限。

對(duì)于grabs,盡管他在20ns時(shí)就發(fā)起了請(qǐng)求權(quán)限(實(shí)際上seq1、seq2、seq3也在同一時(shí)刻發(fā)起了權(quán)限請(qǐng)求),而由于權(quán)限已經(jīng)被locks占用,所以它也無權(quán)收回權(quán)限。因此只有當(dāng)locks在40ns結(jié)束時(shí),grabs才可以在sequencer沒有被鎖定權(quán)限的狀態(tài)下獲得權(quán)限,而grabs獲得權(quán)限是無視同一時(shí)刻發(fā)起請(qǐng)求的其它sequence的。同樣地,在grabs結(jié)束前,也應(yīng)當(dāng)通過ungrab()方法釋放權(quán)限,防止sequencer的死鎖行為。

至此,我們就將sequence/item發(fā)送的方法和宏,以及sequence與sequencer之間的仲裁和授權(quán)請(qǐng)求方式為讀者介紹完畢。

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

    關(guān)注

    0

    文章

    8

    瀏覽量

    8197
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)字IC驗(yàn)證“構(gòu)成uvm測(cè)試平臺(tái)的主要組件”(4)連載中...

    設(shè)備之間的產(chǎn)品了,事物是組件的操作對(duì)象,uvm也對(duì)事物建模提供了基類進(jìn)行擴(kuò)展,對(duì)事物級(jí)的建模需要從uvm sequence item擴(kuò)展。而產(chǎn)生事物對(duì)象的事物發(fā)生器
    發(fā)表于 01-22 15:33

    UVM sequence分層有哪幾種方式呢

    種請(qǐng)求可以使用第一種分層方式,在high-layer sequence中依然使用low-layer sequencer進(jìn)行驅(qū)動(dòng),同時(shí)對(duì)low-layer sequence進(jìn)行更加精細(xì)
    發(fā)表于 04-11 16:37

    請(qǐng)問一UVM中的UVMsequences是什么意思啊

    uvm_sequencer_base類派生出來的,其 被參數(shù)化為用于與driver 通信的sequence item類型。因此要訪問正在運(yùn)行sequence 的真實(shí)
    發(fā)表于 04-11 16:43

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

    種請(qǐng)求可以使用第一種分層方式,在high-layer sequence中依然使用low-layer sequencer進(jìn)行驅(qū)動(dòng),同時(shí)對(duì)low-layer sequence進(jìn)行更加精細(xì)
    發(fā)表于 04-14 11:08

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

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

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

    指定請(qǐng)求和響應(yīng)sequence_item的具體類型,在默認(rèn)情況,請(qǐng)求和響應(yīng)sequence_item的類型為uvm_sequence_itemu
    發(fā)表于 09-23 14:39

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

    展開。Sequence item是游走在Sequence-Sequencer-Driver這一基本結(jié)構(gòu)中的數(shù)據(jù)結(jié)構(gòu)類型,在有些地方也直接叫transaction,可以說是UVM的必用品
    發(fā)表于 09-23 14:42

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

    seqr.start_phase_sequence(phase)解析  start_phase_sequence(xxx)是定義在uvm_sequencer_base類里的,具體看src/seq
    發(fā)表于 04-04 17:15

    淺談UVMsequence/item見解(上)

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

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

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

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

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

    UVMsequence的那些事兒

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

    UVM driver和sequencer的通信

    sequencer生成激勵(lì)數(shù)據(jù),并將其傳遞給driver執(zhí)行。UVM類庫(kù)提供了uvm_sequencer基類,其參數(shù)為request和response數(shù)據(jù)類型。
    的頭像 發(fā)表于 06-07 11:58 ?1798次閱讀
    <b class='flag-5'>UVM</b> driver和<b class='flag-5'>sequencer</b>的通信

    Sequencer上啟動(dòng)一個(gè)Sequence

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

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

    本篇介紹UVM中的sequence,這是UVM中最基礎(chǔ)的部分。對(duì)于前面介紹的uvm_callback, uvm_visitor等,很少被使用
    的頭像 發(fā)表于 08-17 10:07 ?4706次閱讀
    <b class='flag-5'>UVM</b>設(shè)計(jì)中的<b class='flag-5'>sequence</b>啟動(dòng)方式有哪幾種呢?
    百家乐官网网投注| 百家乐官网路单打法| 百家乐牌九| 现场百家乐官网能赢吗| 娱乐城棋牌| 百家乐的路子怎么| 百家乐官网平台有什么优惠| 恩施市| 大发888怎么注册不了| 百家乐怎么刷反水| 金博士百家乐官网娱乐城| 娱乐博彩| 大发888投注明升网址| 线上百家乐技巧| 真人百家乐官网| 澳门百家乐官网什么规则| 百家乐趋势图怎么看| 必博网| 球探网即时比分| 做生意的门市风水| 威远县| 世嘉百家乐的玩法技巧和规则| 百家乐官网赌马| 齐博线上娱乐| 百家乐网上赌博网| 真人百家乐官网代理分成| 大发888娱乐客户端真钱| 百家乐最长的缆| 保单百家乐官网技巧| 威尼斯人娱乐城信誉最好| 万达百家乐官网娱乐城| 双鸭山市| 全讯网高手| 百家乐开户送8彩金| 百家乐官网庄闲桌子| 棋牌游戏易发| 帝王百家乐官网的玩法技巧和规则 | 百家乐分析绿色版| 百家乐官网真人秀| 香港六合彩资料| 樱桃木百家乐桌|