色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

如何配置sequence的仲裁算法和優(yōu)先級(jí)?

sanyue7758 ? 來(lái)源:芯片學(xué)堂 ? 2023-04-27 15:20 ? 次閱讀

01 Arbitrary

在UVM中,多個(gè)sequence可以同時(shí)被綁定到相同的sequencer并啟動(dòng)。這種測(cè)試場(chǎng)景在實(shí)際中是存在的,比如在模擬同一個(gè)總線master口上的不同類型的數(shù)據(jù)流時(shí),可以將符合這些不同類型的數(shù)據(jù)流的sequence綁定到同一個(gè)sequencer,并啟動(dòng)它們,以構(gòu)造出復(fù)雜的測(cè)試場(chǎng)景。

243ed7da-e4cb-11ed-ab56-dac502259ad0.png

這樣一來(lái),在驗(yàn)證環(huán)境運(yùn)行中就會(huì)出現(xiàn)競(jìng)爭(zhēng)的問題,當(dāng)多個(gè)sequence同時(shí)企圖向下游發(fā)transaction的時(shí)候,sequencer需要能夠決定處理這些transaction的順序。而給出答案的,是sequencer內(nèi)建的仲裁機(jī)制。

下面給出一個(gè)簡(jiǎn)單的UVM例程:例程同時(shí)啟動(dòng)三個(gè)sequence(seq_0, seq_1, seq_2),它們會(huì)往同一個(gè)sequencer發(fā)transaction,并且在啟動(dòng)的時(shí)候還分配了權(quán)重值(start方法的第三個(gè)參數(shù)),每個(gè)sequence會(huì)循環(huán)發(fā)送4個(gè)transaction。

在Env中例化sequencer和driver,并完成連接。例程中在driver拿到transaction之后,會(huì)根據(jù)transaction的成員變量id和index打印出來(lái)當(dāng)前transaction產(chǎn)生自哪個(gè)sequence,以及是循環(huán)的第幾次。

244de914-e4cb-11ed-ab56-dac502259ad0.png

仿真結(jié)果如下,可以看得出來(lái)在沒有配置仲裁算法的情況下,即使我們?yōu)閟equence都分配了權(quán)重值,sequencer對(duì)三個(gè)sequence還是“雨露均沾”:

2457b390-e4cb-11ed-ab56-dac502259ad0.png

實(shí)際上,UVM給我們預(yù)設(shè)了六種仲裁算法供選擇,同時(shí)保留了用戶自定義的接口。默認(rèn)情況下,使用的仲裁算法是UVM_SEQ_ARB_FIFO,嚴(yán)格按照先進(jìn)先出的原則來(lái)做選擇,所以才會(huì)出現(xiàn)上面說的,仿真結(jié)果跟權(quán)重值沒有關(guān)系。關(guān)于仲裁算法,需要根據(jù)實(shí)際測(cè)試場(chǎng)景來(lái)做出選擇。

24703a50-e4cb-11ed-ab56-dac502259ad0.png

那么如何配置仲裁算法?在代碼中,可以通過調(diào)用sequencer的方法set_arbitration()來(lái)對(duì)仲裁算法進(jìn)行配置。比如在上面例程env_demo類的build_phase函數(shù)的最后一行,可以加上sqr.set_arbitration(UVM_SEQ_ARB_WEIGHTED)來(lái)配置仲裁算法,仿真結(jié)果我貼在下面,可以看到,我們分配的權(quán)重值開始起作用了:

247a69ee-e4cb-11ed-ab56-dac502259ad0.png

02 LockingMechanism

Locking mechanism指的是sequence對(duì)sequencer的占用,sequence可以優(yōu)先獲得sequencer的使用權(quán)限,并且在它自己釋放之前,其他sequence無(wú)法通過該sequencer和driver發(fā)送transaction。

Sequence搶占功能同樣來(lái)源于測(cè)試場(chǎng)景的需求,應(yīng)用于當(dāng)有某個(gè)sequence需要優(yōu)先并獨(dú)占sequencer的時(shí)候,比如對(duì)中斷(interrupt)的處理。如下圖所示,當(dāng)sequence_2占用了sequencer之后,其他sequence在sequence_2釋放之前將無(wú)法聯(lián)系上sequencer。

24938f5a-e4cb-11ed-ab56-dac502259ad0.png

UVM提供了兩種搶占方法:lock和grab。lock方式會(huì)等待仲裁機(jī)制正常調(diào)度到該sequence(即將請(qǐng)求放在仲裁隊(duì)里的最后),并占用該sequencer直到sequence調(diào)用unlock()來(lái)解鎖;grab方式則會(huì)使該sequence在下一輪仲裁中被執(zhí)行(即將請(qǐng)求放在仲裁隊(duì)列的最前面),并占用該sequencer直到sequence調(diào)用unlock()和ungrab()。

Sequencer被某個(gè)sequence搶占了之后,我們可以通過調(diào)用它的成員方法來(lái)獲取當(dāng)前的狀態(tài)信息。比如,可以在sequence的body()里面使用m_sequencer.is_grabbed()函數(shù)來(lái)看當(dāng)前sequencer是不是被誰(shuí)鎖住了;還可以使用m_sequencer.current_grabber()函數(shù)來(lái)獲得當(dāng)前鎖住sequencer的sequence句柄;還有其他函數(shù)可以使用,具體可以參考UVM的手冊(cè)。

24a0670c-e4cb-11ed-ab56-dac502259ad0.png

關(guān)于lock和grab的使用在其他地方有很多示例代碼,這里將基于上面的例程,展示UVM 1.2潛藏的一個(gè)bug。先在上述代碼中seq_demo_0類的body()任務(wù)的入口和出口處,分別加上lock()和unlock(),如上圖所示,然后進(jìn)行仿真,就會(huì)發(fā)現(xiàn):最終只有seq_0搶先鎖住了sequencer,雖然我們?cè)赽ody()的最后調(diào)用了unlock(),但是seq_1和seq_2在seq_0結(jié)束之后依然搶不到鎖,仿真最后結(jié)束在UVM timeout,如下圖:

24a7a166-e4cb-11ed-ab56-dac502259ad0.png

這是一個(gè)UVM的bug,問題的根源在uvm_sequencer_base的源碼中,當(dāng)有多個(gè)sequence在lock_list隊(duì)列里面時(shí),調(diào)用m_wait_for_available_sequence()方法獲取sequence句柄會(huì)使代碼掛死。該UVM issue已經(jīng)有人提交到了accellera,具體可以參見參考資料2。這個(gè)bug在UVM 2017-1.1或者UVM 2020中可能已經(jīng)修掉了,有興趣的讀者可以自己試一下。鑒于目前有很多代碼是基于UVM 1.2構(gòu)建的,用戶在使用lock/grab的時(shí)候需要特別注意這個(gè)bug。

03Sequence Interrupt

處理器等數(shù)字系統(tǒng)中,通常硬件中斷都是由某個(gè)信號(hào)脈沖或者電平來(lái)觸發(fā),并通過中斷控制仲裁之后,由控制器發(fā)送給處理器進(jìn)行處理。

在Sequence中的中斷操作也類似,分兩部分實(shí)現(xiàn):第一部分是將通過虛擬接口監(jiān)視中斷源信號(hào)的變化,以實(shí)現(xiàn)軟硬件的隔離;第二部分是在主sequence中發(fā)起一個(gè)監(jiān)視進(jìn)程(monitor process),在等到中斷到來(lái)之后啟動(dòng)用作中斷處理的sequence。

24c2660e-e4cb-11ed-ab56-dac502259ad0.png

另外,Sequence一旦被啟動(dòng),通常不會(huì)去想著將它異常結(jié)束(通過seq.kill()或者seqr.stop_sequences()調(diào)用),否則我們需要更加復(fù)雜的實(shí)現(xiàn)去查看當(dāng)前driver是否空閑,以確保sequencer跟driver的握手機(jī)制不出問題。如果有必要將sequence提前結(jié)束,建議在sequence內(nèi)部去做條件判斷和處理。




審核編輯:劉清

聲明:本文內(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)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19259

    瀏覽量

    229653
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16332

    瀏覽量

    177812
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19167
  • FIFO存儲(chǔ)
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    5968

原文標(biāo)題:SystemVerilog | UVM | Sequence的仲裁和鎖定,還有要避開UVM的bug

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于優(yōu)先級(jí)搶占系統(tǒng)的QNX調(diào)度算法

    調(diào)度算法,是基于優(yōu)先級(jí)的。QNX的線程優(yōu)先級(jí),是一個(gè)0-255的數(shù)字,數(shù)字越大優(yōu)先級(jí)越高。所以,優(yōu)先級(jí)0是內(nèi)核中的idle線程。同時(shí),
    發(fā)表于 10-31 09:17 ?727次閱讀

    RTOS應(yīng)用中的優(yōu)先級(jí)反轉(zhuǎn)問題

    在嵌入式系統(tǒng)中,如果使用基于優(yōu)先級(jí)調(diào)度算法的RTOS,系統(tǒng)中可能發(fā)生優(yōu)先級(jí)反轉(zhuǎn)現(xiàn)象。優(yōu)先級(jí)反轉(zhuǎn)用來(lái)描述系統(tǒng)中高優(yōu)先級(jí)任務(wù)由于等待低
    發(fā)表于 12-14 11:00 ?1202次閱讀

    中斷優(yōu)先級(jí)配置的函數(shù)

    一、中斷優(yōu)先級(jí)配置的函數(shù):1.NVIC_IRQChannelPreemptionPriority配置搶占優(yōu)先級(jí)2.NVIC_IRQChannelSubPriority
    發(fā)表于 08-04 08:24

    如何在VHDL中實(shí)現(xiàn)簡(jiǎn)單優(yōu)先級(jí)仲裁

    本文著眼于仲裁器的用例和優(yōu)點(diǎn),以及在VHDL中實(shí)現(xiàn)簡(jiǎn)單優(yōu)先級(jí)仲裁器。仲裁是任何現(xiàn)代計(jì)算機(jī)系統(tǒng)的重要組成部分。從I2C和CAN 等通信協(xié)議中的總線仲裁
    發(fā)表于 12-23 06:38

    什么是優(yōu)先級(jí)位圖算法

    什么是優(yōu)先級(jí)位圖算法?
    發(fā)表于 12-27 07:43

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

    出來(lái)當(dāng)前transaction產(chǎn)生自哪個(gè)sequence,以及是循環(huán)的第幾次。仿真結(jié)果如下,可以看得出來(lái)在沒有配置仲裁算法的情況下,即使我們?yōu)?b class='flag-5'>seq
    發(fā)表于 09-23 14:35

    簡(jiǎn)單優(yōu)先級(jí)仲裁器:使用VHDL和Logisim在嵌入式系統(tǒng)中分配資源

    本文著眼于仲裁器的用例和優(yōu)點(diǎn),以及在VHDL中實(shí)現(xiàn)簡(jiǎn)單優(yōu)先級(jí)仲裁器。仲裁是任何現(xiàn)代計(jì)算機(jī)系統(tǒng)的重要組成部分。從I2C和CAN 等通信協(xié)議中的總線仲裁
    發(fā)表于 02-13 09:45 ?986次閱讀
    簡(jiǎn)單<b class='flag-5'>優(yōu)先級(jí)</b><b class='flag-5'>仲裁</b>器:使用VHDL和Logisim在嵌入式系統(tǒng)中分配資源

    STM32中斷及FreeRTOS中斷優(yōu)先級(jí)配置

    STM32中斷,及FreeRTOS中斷優(yōu)先級(jí)配置
    的頭像 發(fā)表于 03-04 11:45 ?8904次閱讀
    STM32中斷及FreeRTOS中斷<b class='flag-5'>優(yōu)先級(jí)</b><b class='flag-5'>配置</b>

    Cortex-M中斷及FreeRTOS中斷優(yōu)先級(jí)配置原理

    下面就來(lái)說說關(guān)于Cortex-M的中斷,及FreeRTOS中斷優(yōu)先級(jí)配置原理。
    發(fā)表于 02-08 15:30 ?3次下載
    Cortex-M中斷及FreeRTOS中斷<b class='flag-5'>優(yōu)先級(jí)</b><b class='flag-5'>配置</b>原理

    中斷優(yōu)先級(jí)處理的原則及配置 搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的區(qū)別

    首先我們需要知道什么是中斷優(yōu)先級(jí):中斷優(yōu)先級(jí)是CPU響應(yīng)中斷的先后順序
    的頭像 發(fā)表于 05-18 15:10 ?2.7w次閱讀
    中斷<b class='flag-5'>優(yōu)先級(jí)</b>處理的原則及<b class='flag-5'>配置</b> 搶占<b class='flag-5'>優(yōu)先級(jí)</b>和響應(yīng)<b class='flag-5'>優(yōu)先級(jí)</b>的區(qū)別

    如何配置sequence仲裁算法優(yōu)先級(jí)

    這樣一來(lái),在驗(yàn)證環(huán)境運(yùn)行中就會(huì)出現(xiàn)競(jìng)爭(zhēng)的問題,當(dāng)多個(gè)sequence同時(shí)企圖向下游發(fā)transaction的時(shí)候,sequencer需要能夠決定處理這些transaction的順序。而給出答案的,是sequencer內(nèi)建的仲裁機(jī)制。
    的頭像 發(fā)表于 09-14 15:59 ?1494次閱讀

    SysTick的優(yōu)先級(jí)配置方法

    SysTick的優(yōu)先級(jí)配置,常見的有兩種說法,這兩種說法完全相反,依次說一下各自特點(diǎn)。
    的頭像 發(fā)表于 03-01 10:49 ?4805次閱讀
    SysTick的<b class='flag-5'>優(yōu)先級(jí)</b><b class='flag-5'>配置</b>方法

    什么是優(yōu)先級(jí)反轉(zhuǎn)

    假設(shè)現(xiàn)在有三個(gè)任務(wù)TaskA(優(yōu)先級(jí)高)、TaskB(優(yōu)先級(jí)中)、TaskC(優(yōu)先級(jí)低),一個(gè)信號(hào)量(Semaphore),此信號(hào)量用于任務(wù)之間爭(zhēng)奪某個(gè)資源。在某一時(shí)刻,高優(yōu)先級(jí)的Ta
    的頭像 發(fā)表于 04-24 13:01 ?2263次閱讀
    什么是<b class='flag-5'>優(yōu)先級(jí)</b>反轉(zhuǎn)

    為什么使用CubeMx配置NVIC時(shí)不見子優(yōu)先級(jí)選項(xiàng)

    時(shí),不難發(fā)現(xiàn)一個(gè)問題,那就是怎么沒有中斷子優(yōu)先級(jí)【或稱響應(yīng)優(yōu)先級(jí)、副優(yōu)先級(jí)等】的配置?!【當(dāng)然,很多時(shí)候我們或許沒有關(guān)注子優(yōu)先級(jí)】如下圖所示
    的頭像 發(fā)表于 09-09 15:32 ?1303次閱讀
    為什么使用CubeMx<b class='flag-5'>配置</b>NVIC時(shí)不見子<b class='flag-5'>優(yōu)先級(jí)</b>選項(xiàng)

    GD32如何配置中斷優(yōu)先級(jí)分組以及中斷優(yōu)先級(jí)

    使用GD32 MCU的過程中,大家可能會(huì)有以下疑問:中斷優(yōu)先級(jí)如何配置和使用?
    的頭像 發(fā)表于 01-10 10:30 ?3056次閱讀
    GD32如何<b class='flag-5'>配置</b>中斷<b class='flag-5'>優(yōu)先級(jí)</b>分組以及中斷<b class='flag-5'>優(yōu)先級(jí)</b>
    主站蜘蛛池模板: 天堂岛www| 亚洲欧美综合中文字幕| 啊灬啊灬啊灬快高潮视频| 亚洲精品久久久无码一区二区| 国产系列视频二区| 一边啪啪的一边呻吟声口述| 久久精品综合电影| 91精品视频网站| 啪啪羞羞GIF男女0OXX动态图| A级毛片无码久久精品免费| 恋夜影院安卓免费列表uc| 一个人在线观看免费视频| 精品熟女少妇AV免费观看| 亚洲视频第二页| 九色PORNY真实丨国产免费| 久久视热频国只有精品| 日韩美女爱爱| 国产精品JK白丝AV网站| 午夜亚洲WWW湿好大| 日本高清无人区影院| 亚洲视频中文字幕在线| 久久re热在线视频精99| 中文字幕亚洲视频| 欧美14videosex性欧美成人| 泰国淫乐园实录| 春药按摩人妻中文字幕| 午夜天堂AV久久久噜噜噜| 国模啪啪久久久久久久| 伊人AV一区二区三区夜色撩人| 麻豆成人AV久久无码精品| 成人性生交大片免费看中文 | 掀开奶罩边躁狠狠躁软学生| 国语自产拍大学生在线观看| 中国字字幕在线播放2019| 欧美性xxxxxx爱| 国产剧果冻传媒星空在线观看| 伊人久久电影网| 人妻夜夜爽天天爽三区麻豆AV网站| 国产精品xxxav免费视频| 亚洲综合中文| 亚洲91av|