chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

工程師鄧生 ? 來(lái)源:芯片學(xué)堂 ? 作者:JKZHAN ? 2022-09-14 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文依然是比較多的干貨,也偏保姆級(jí),介紹Sequence之間發(fā)生競(jìng)爭(zhēng)的時(shí)候,我們需要或者說(shuō)可以做些什么,包括如何配置sequence的仲裁算法和優(yōu)先級(jí)、如何讓sequence占用sequencer(這個(gè)地方UVM 1.2有個(gè)bug),以及如何中斷sequence的執(zhí)行。

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)景。

de6945ca-304c-11ed-ba43-dac502259ad0.png

這樣一來(lái),在驗(yàn)證環(huán)境運(yùn)行中就會(huì)出現(xiàn)競(jìng)爭(zhēng)的問(wèn)題,當(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)的第幾次。

dea60456-304c-11ed-ba43-dac502259ad0.png

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

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

df941862-304c-11ed-ba43-dac502259ad0.png

那么如何配置仲裁算法?在代碼中,可以通過(guò)調(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)重值開(kāi)始起作用了:

dfcb7460-304c-11ed-ba43-dac502259ad0.png

02 LockingMechanism

Locking mechanism指的是sequence對(duì)sequencer的占用,sequence可以優(yōu)先獲得sequencer的使用權(quán)限,并且在它自己釋放之前,其他sequence無(wú)法通過(guò)該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。

e0119ec2-304c-11ed-ba43-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搶占了之后,我們可以通過(guò)調(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è)。

e032c20a-304c-11ed-ba43-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,如下圖:

e0640036-304c-11ed-ba43-dac502259ad0.png

這是一個(gè)UVM的bug,問(wèn)題的根源在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,具體可以參見(jiàn)參考資料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ā),并通過(guò)中斷控制仲裁之后,由控制器發(fā)送給處理器進(jìn)行處理。

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

e09c3a0a-304c-11ed-ba43-dac502259ad0.png

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



審核編輯:劉清

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

    關(guān)注

    5

    文章

    918

    瀏覽量

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

    關(guān)注

    0

    文章

    183

    瀏覽量

    20032
  • FIFO芯片
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    9111

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    LTC4420:雙輸入微功耗電源路徑優(yōu)先級(jí)器的全方位解析

    LTC4420:雙輸入微功耗電源路徑優(yōu)先級(jí)器的全方位解析 在電子設(shè)備的電源管理領(lǐng)域,確保在各種電源狀況下為關(guān)鍵電路提供穩(wěn)定的電力供應(yīng)至關(guān)重要。LTC4420 作為一款雙輸入單片式 PowerPath
    的頭像 發(fā)表于 02-09 10:20 ?110次閱讀

    CS32L010系列能否支持串口的發(fā)送和接收中斷單獨(dú)配置?不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?

    1、串口能否配置成阻塞式發(fā)送和中斷式接收。 2、不同中斷的中斷優(yōu)先級(jí)如何設(shè)置?我在開(kāi)啟中斷函數(shù)代碼中看到說(shuō)中斷優(yōu)先級(jí)配置需要先調(diào)用NVIC_PriorityGroupConfig()函
    發(fā)表于 12-10 18:46

    搶占優(yōu)先級(jí)和子優(yōu)先級(jí)

    關(guān)于搶占優(yōu)先級(jí)和子優(yōu)先級(jí): 1)具有高搶占式優(yōu)先級(jí)的中斷可以在具有低搶占式優(yōu)先級(jí)的中斷服務(wù)程序執(zhí)行過(guò)程中被響應(yīng),即中斷嵌套,或者說(shuō)高搶占式優(yōu)先級(jí)
    發(fā)表于 12-03 07:11

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)如何在實(shí)際應(yīng)用中進(jìn)行動(dòng)態(tài)調(diào)整?

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)在實(shí)際應(yīng)用中通過(guò) 事件驅(qū)動(dòng)、主站指令、資源狀態(tài)感知和動(dòng)態(tài)策略調(diào)整 等多層機(jī)制實(shí)現(xiàn)靈活調(diào)控,確保關(guān)鍵數(shù)據(jù)的實(shí)時(shí)性與可靠性。以下是具體實(shí)現(xiàn)方式和典型場(chǎng)景的動(dòng)態(tài)調(diào)整
    的頭像 發(fā)表于 11-06 14:10 ?283次閱讀

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)是怎樣的?

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)設(shè)計(jì)遵循 事件驅(qū)動(dòng)、主站指令優(yōu)先、資源動(dòng)態(tài)分配 的原則,結(jié)合行業(yè)標(biāo)準(zhǔn)和設(shè)備機(jī)制,形成以下多層級(jí)優(yōu)先級(jí)體系: 一、最高優(yōu)先級(jí):緊急事件驅(qū)動(dòng)補(bǔ)傳 1
    的頭像 發(fā)表于 11-06 14:02 ?315次閱讀

    FreeRTOS任務(wù)調(diào)度及優(yōu)先級(jí)問(wèn)題

    都有容錯(cuò),但是心里沒(méi)底,想向大家了解一下實(shí)際工作中有沒(méi)有遇到到類似的問(wèn)題,如果有又是怎么解決的呢? 另外有前輩可以分享一下任務(wù)的優(yōu)先級(jí)在實(shí)際項(xiàng)目中該基于什么原則來(lái)劃分呢?
    發(fā)表于 11-06 02:18

    優(yōu)先級(jí)線程無(wú)法調(diào)度怎么解決?

    1,設(shè)置了3,5,6,8幾個(gè)優(yōu)先級(jí),設(shè)備在現(xiàn)場(chǎng)正常運(yùn)行了一年多后,顯示、前端、后端這3個(gè)低優(yōu)先級(jí)線程異常了,表現(xiàn)為屏幕不動(dòng),前端采集數(shù)據(jù)沒(méi)有變化等,其他高優(yōu)先級(jí)的線程如通訊,按鍵都能正常運(yùn)行,通訊有喂狗操作,停止通訊,會(huì)看門(mén)狗復(fù)
    發(fā)表于 09-25 07:33

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

    當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)正在等待一個(gè)資源,但一個(gè)低優(yōu)先級(jí)任務(wù)正在持有它,一個(gè)中等優(yōu)先級(jí)任務(wù)繼續(xù)在中間運(yùn)行時(shí),就會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)——阻止低優(yōu)先級(jí)任務(wù)
    的頭像 發(fā)表于 09-09 14:50 ?1018次閱讀

    求助,關(guān)于MS51設(shè)置中斷優(yōu)先級(jí)問(wèn)題求解

    我確實(shí)發(fā)現(xiàn)在庫(kù)代碼和 TRM 之間設(shè)置中斷優(yōu)先級(jí)有一些差異,如下圖所示。 Could you check what's wrong with me?
    發(fā)表于 08-25 07:01

    揭秘!基于RT-Thread探究“優(yōu)先級(jí)反轉(zhuǎn)”下的任務(wù)調(diào)度究竟是什么樣的?| 技術(shù)集結(jié)

    本文將基于RT-Thread,結(jié)合RT-Trace調(diào)試器細(xì)化到實(shí)際任務(wù)調(diào)度的粒度,來(lái)調(diào)試并逐步講解“優(yōu)先級(jí)反轉(zhuǎn)”的調(diào)度和運(yùn)行邏輯。如果對(duì)RT-Trace感興趣的可以看這篇文章:國(guó)產(chǎn)嵌入式調(diào)試器之光
    的頭像 發(fā)表于 08-17 10:07 ?3288次閱讀
    揭秘!基于RT-Thread探究“<b class='flag-5'>優(yōu)先級(jí)</b>反轉(zhuǎn)”下的任務(wù)調(diào)度究竟是什么樣的?| 技術(shù)集結(jié)

    請(qǐng)問(wèn)STM32的內(nèi)部Flash操作是不是優(yōu)先級(jí)最高?

    STM32的內(nèi)部Flash操作是不是優(yōu)先級(jí)最高?目前在內(nèi)部Flash的單獨(dú)一頁(yè)存儲(chǔ)了數(shù)據(jù),發(fā)現(xiàn)在進(jìn)行頁(yè)擦除的時(shí)候正常工作的定時(shí)器中斷無(wú)法進(jìn)入了
    發(fā)表于 08-13 07:03

    TLe9893怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?

    你好林工,我該怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?是否可以通過(guò)工具調(diào)整?默認(rèn)設(shè)置下,是不是Brdv的在中斷優(yōu)先級(jí)高于T20和can?
    發(fā)表于 08-01 06:20

    請(qǐng)問(wèn)C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)嗎?

    C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)?C071在配置的時(shí)候只能配置0-3
    發(fā)表于 07-23 08:00

    ADL5308可以通過(guò)軟件和硬件配置的參數(shù),配置優(yōu)先級(jí)是什么?

    你好,麻煩問(wèn)一下ADL5308可以通過(guò)軟件和硬件配置的參數(shù),配置優(yōu)先級(jí)是什么?有沒(méi)有更詳細(xì)的寄存器配置手冊(cè),截距配置的步進(jìn)是多少?
    發(fā)表于 06-10 06:39

    CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?

    [i]CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
    發(fā)表于 05-13 08:22