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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何配置sequence的仲裁算法和優先級

工程師鄧生 ? 來源:芯片學堂 ? 作者:JKZHAN ? 2022-09-14 15:59 ? 次閱讀

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

01 Arbitrary

在UVM中,多個sequence可以同時被綁定到相同的sequencer并啟動。這種測試場景在實際中是存在的,比如在模擬同一個總線master口上的不同類型的數據流時,可以將符合這些不同類型的數據流的sequence綁定到同一個sequencer,并啟動它們,以構造出復雜的測試場景。

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

這樣一來,在驗證環境運行中就會出現競爭的問題,當多個sequence同時企圖向下游發transaction的時候,sequencer需要能夠決定處理這些transaction的順序。而給出答案的,是sequencer內建的仲裁機制。

下面給出一個簡單的UVM例程:例程同時啟動三個sequence(seq_0, seq_1, seq_2),它們會往同一個sequencer發transaction,并且在啟動的時候還分配了權重值(start方法的第三個參數),每個sequence會循環發送4個transaction。在Env中例化sequencer和driver,并完成連接。例程中在driver拿到transaction之后,會根據transaction的成員變量id和index打印出來當前transaction產生自哪個sequence,以及是循環的第幾次。

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

仿真結果如下,可以看得出來在沒有配置仲裁算法的情況下,即使我們為sequence都分配了權重值,sequencer對三個sequence還是“雨露均沾”:

df1c1cb8-304c-11ed-ba43-dac502259ad0.png 實際上,UVM給我們預設了六種仲裁算法供選擇,同時保留了用戶自定義的接口。默認情況下,使用的仲裁算法是UVM_SEQ_ARB_FIFO,嚴格按照先進先出的原則來做選擇,所以才會出現上面說的,仿真結果跟權重值沒有關系。關于仲裁算法,需要根據實際測試場景來做出選擇。

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

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

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

02 LockingMechanism

Locking mechanism指的是sequence對sequencer的占用,sequence可以優先獲得sequencer的使用權限,并且在它自己釋放之前,其他sequence無法通過該sequencer和driver發送transaction。

Sequence搶占功能同樣來源于測試場景的需求,應用于當有某個sequence需要優先并獨占sequencer的時候,比如對中斷(interrupt)的處理。如下圖所示,當sequence_2占用了sequencer之后,其他sequence在sequence_2釋放之前將無法聯系上sequencer。

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

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

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

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

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

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

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

03Sequence Interrupt

處理器等數字系統中,通常硬件中斷都是由某個信號脈沖或者電平來觸發,并通過中斷控制仲裁之后,由控制器發送給處理器進行處理。

在Sequence中的中斷操作也類似,分兩部分實現:第一部分是將通過虛擬接口監視中斷源信號的變化,以實現軟硬件的隔離;第二部分是在主sequence中發起一個監視進程(monitor process),在等到中斷到來之后啟動用作中斷處理的sequence。

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

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



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    899

    瀏覽量

    41547
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19185
  • FIFO芯片
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8832

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

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    freertos中斷優先級在哪設置

    FreeRTOS是一個流行的實時操作系統,它廣泛應用于嵌入式系統開發。在FreeRTOS中,中斷優先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷優先級 在討論如何設置
    的頭像 發表于 09-02 14:17 ?711次閱讀

    APS智能優化排產軟件的優先級應用

    資源、訂單需求和約束條件,自動計算出最優的生產計劃。在這個過程中,訂單排產的優先規則起著至關重要的作用。1.交期優先級交期優先級是訂單排產中最基本的優先規則。根據
    的頭像 發表于 06-26 17:43 ?409次閱讀
    APS智能優化排產軟件的<b class='flag-5'>優先級</b>應用

    ESP32S2如何設置中斷優先級

    ESP32S2有六中斷, 如何設置中斷優先級? 比如在GPIO例程里 ,這種中斷優先級是如何設置的呢? 中斷寄存器列表里 ,只有簡稱,哪里能獲取這個名稱所對應的功能??
    發表于 06-21 07:59

    請問有什么方法降低WIFI中斷的優先級

    因為項目對時序輸出要求比較嚴格,WIFI中斷優先級比硬件定時器中斷優先級要高,在定時器中斷里面對GPIO管腳控制被延長執行,請問有什么方法降低WIFI中斷的優先級
    發表于 06-19 07:37

    systick的中斷優先級是否應該設置為最高優先級的嵌套中斷?

    最近在學習ucosii有這樣一個疑問,關于stm32的systick作為ucosii的基準時鐘,systick的中斷優先級是否應該設置為最高優先級的嵌套中斷。理由是什么?各位大俠求指教!!!
    發表于 05-16 06:44

    stm32的中斷優先級分組了之后還能改分組嗎?

    如標題所示,stm32的中斷優先級分組了之后還能改分組嗎? 比如我要使用外部中斷EXIT2,3,我在配置的時候配置優先級分組2組,然后配置
    發表于 05-13 08:40

    創建了兩個task如果一個優先級高 一個優先級低,高優先級的那個一直在做,什么時候會調度到低優先級的呢?

    創建了兩個task如果一個優先級高一個優先級低, 我看到任務的函數都是用死循環做的,那個高優先級的那個一直在做,什么時候會調度到低優先級的呢?
    發表于 05-13 07:13

    求助,關于stm32F4中斷優先級0無法搶占的問題求解

    使用F407遇到一個搶占優先級的問題: 現設置優先級分組 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);也就是15個優先級分組。按照手冊說明0
    發表于 04-23 07:26

    關于stm32cube中freertos的優先級設置問題求解

    在用stm32cube中freertos,在配置界面里設置為12任務優先級,但是在cube中配置每個任務優先級時還是只能選擇7種
    發表于 04-22 07:25

    STM32F103的寄存器NVIC_IPRx搶占優先級和子優先級是怎么設置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,搶占優先級和子優先級是怎么設置的? 如果,中斷分組2,搶占優先級3,子優先級3 那下面這樣寫對嗎? SCB->AIR
    發表于 03-27 07:48

    Hightec對芯片中斷優先級分配時,中斷號越高中斷優先級越高嗎?

    請問大佬,Hightec對芯片中斷優先級分配時,中斷號越高中斷優先級越高嗎?看網上的帖子說中斷號越低優先級越高。
    發表于 02-27 06:13

    RTTnano的用戶main函數中的優先級是多少?

    RTTnano 的用戶main函數中的優先級是多少?為什么會出現創建新的task之后,main函數會搶占掉低優先級的task,例如RT_THREAD_PRIORITY_MAX設置為8 ,低于3
    發表于 02-26 08:01

    TLE9877的EXIT2怎么沒有優先級配置

    TLE9877的EXIT2的優先級怎么沒有配置啊,這個的優先級是多少,該怎么配置
    發表于 02-01 06:06

    華為和思科默認路由優先級

    優先級值不同,則優先級值最小的為最優路由(無論開銷值是否相同,另一種理解就是對不同路由來源或路由協議之間的比較)。
    的頭像 發表于 01-11 10:47 ?1287次閱讀

    GD32如何配置中斷優先級分組以及中斷優先級

    使用GD32 MCU的過程中,大家可能會有以下疑問:中斷優先級如何配置和使用?
    的頭像 發表于 01-10 10:30 ?3138次閱讀
    GD32如何<b class='flag-5'>配置</b>中斷<b class='flag-5'>優先級</b>分組以及中斷<b class='flag-5'>優先級</b>
    主站蜘蛛池模板: 99久久精品费精品蜜臀AV| 真实国产乱子伦精品一区二区三区| 手机在线免费| 99国产精品| 理论片午午伦夜理片久久| 亚洲欧洲日产国码久在线| 欧美高清视频www夜色资源网| 永久免费毛片| 九九电影伦理片| 亚洲精品视频在线观看视频| 国产精品亚洲AV毛片一区二区三区| 久久国产精品人妻中文| 亚洲高清无码在线 视频| 国产精品一国产AV麻豆| 乌克兰女人与动ZOZO| 国产精品久久婷婷五月色| 开心久久激情| 中文字幕亚洲欧美日韩2019 | 老太婆风流特黄一级| 樱花草在线观看影院| 久久久97人妻无码精品蜜桃| 与嫂子同居的日子在线观看| 空姐厕所啪啪啪| JAPANBABES11学生老师| 日本久久久| 国产精品亚洲第一区二区三区 | 日韩内射美女人妻一区二区三区| RAPPER性骚扰大开黄腔| 久久久久久九九| 中文字幕天堂久久精品| 奶头被客人吸得又红又肿| yellow片在线观看免费观看动漫 | 女人18毛片| 北条麻妃のレズナンパ| 台湾佬综合娱乐网| 禁漫H天堂免费A漫| 87.6在线收听| 国产精品成人啪精品视频免费观看| 天天色天天综合网| 久久艹综合| zooskoo1videos人与狗|