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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    905

    瀏覽量

    42774
  • UVM
    UVM
    +關注

    關注

    0

    文章

    182

    瀏覽量

    19532
  • FIFO芯片
    +關注

    關注

    0

    文章

    10

    瀏覽量

    9004

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Analog Devices Inc. DC1717B演示板數據手冊

    Analog Devices Inc. DC1717B演示板使用LTC4417控制器在三個輸入電源軌之間仲裁,選擇具有最高優先級的有效電源為負載供電。 電源軌的優先級由輸入連接 (V1-V3) 定義
    的頭像 發表于 06-11 09:26 ?249次閱讀
    Analog Devices Inc. DC1717B演示板數據手冊

    ADL5308可以通過軟件和硬件配置的參數,配置優先級是什么?

    你好,麻煩問一下ADL5308可以通過軟件和硬件配置的參數,配置優先級是什么?有沒有更詳細的寄存器配置手冊,截距配置的步進是多少?
    發表于 06-10 06:39

    第十章 W55MH32中斷應用概覽

    本章講述了W55MH32中斷應用,涵蓋異常類型、NVIC介紹、優先級定義與分組,闡述中斷編程三要點(使能中斷、配置 NVIC、編寫服務函數),并強調優先級分組設置注意事項。
    的頭像 發表于 05-22 17:07 ?1013次閱讀
    第十章 W55MH32中斷應用概覽

    CyU3PDebugPrint的最高優先級和最低優先級是什么?

    [i]CyU3PDebugPrint的最高優先級和最低優先級是什么?
    發表于 05-13 08:22

    一種新型直流二總線供電+通訊=仲裁通訊方式

    PB332在PB331基礎上增加了搶占避讓和按優先級隊列上傳功能,并可以完全并網PB331系統進行透傳通訊。
    發表于 03-25 16:15

    配電柜—斷電危機?配電柜故障排查優先級指南

    在排查配電柜故障過程中,合理安排排查優先級至關重要。下面聊一下如何科學合理安排配電柜故障排查優先級順序。
    的頭像 發表于 03-06 18:55 ?410次閱讀
    配電柜—斷電危機?配電柜故障排查<b class='flag-5'>優先級</b>指南

    Jtti:節點ID變化過于頻繁如何解決

    與現有節點的ID重復。 采用動態ID分配策略 :設置一個ID管理節點,負責為新加入的節點分配唯一的ID,并在節點離開網絡時回收并重新分配所占用的ID。 增強仲裁機制 :引入額外的仲裁規則或算法,基于報文的
    的頭像 發表于 12-12 15:44 ?476次閱讀

    技術干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運算符與優先級

    在C語言的學習過程中,運算符的使用是不可忽視的重要環節。本文將繼續深入探討C語言中的運算符,重點介紹位運算符、賦值運算符及其優先級。掌握這些運算符的用法,將幫助你在編程過程中實現更加高效的代碼操作
    的頭像 發表于 10-13 08:09 ?631次閱讀
    技術干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運算符與<b class='flag-5'>優先級</b>

    瑞芯微RK3399開發板Android7.1修改網絡優先級方法,觸覺智能SBC3968開發板演示

    本文介紹Android7.1修改網絡優先級方法,基于觸覺智能SBC3968主板,搭載瑞芯微RK3399芯片,底板具備千兆網口、USB、HDMI、TYPE-C、音頻等接口??蛇m用于工業主機、物聯網設備、醫療健康設備、廣告機、互動自助終端、教學實驗平臺、顯示控制、車載安防和人臉識別等多個領域。
    的頭像 發表于 10-09 11:37 ?615次閱讀
    瑞芯微RK3399開發板Android7.1修改網絡<b class='flag-5'>優先級</b>方法,觸覺智能SBC3968開發板演示

    PCM9211的默認模式下,ADC和RXIN2( 光纖輸入)是自動識別的嗎,并且光纖具有輸入優先級?

    咨詢一下,PCM9211的默認模式下,ADC和RXIN2( 光纖輸入)是自動識別的嗎,并且光纖具有輸入優先級?
    發表于 09-29 06:44

    使用CH32V103C8TC設置中斷優先級分組時,編譯報錯的原因?

    使用CH32V103C8TC設置中斷優先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);編譯報錯 而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 卻不會報錯 這是什么原因呢??
    發表于 09-27 06:03

    CH32V103 使用中斷優先級分組0時報錯

    使用CH32V103C8TC設置中斷優先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);卻不會報錯
    發表于 09-23 13:52

    車載以太網交換機入門基本功(4)—優先級設計與VLAN測試

    VLAN通過報文Tag、交換機端口屬性、交換機端口過濾功能得以實現,并通過優先級和隊列實現轉發的有效調度。為了驗證交換機芯片的功能實現,需要參考OPEN聯盟的TC11交換機芯片測試規范,包括通用測試、地址解析、VLAN等9個方面,此外,實時更進規范修改方案并與讀者分享。
    的頭像 發表于 09-06 14:45 ?916次閱讀
    車載以太網交換機入門基本功(4)—<b class='flag-5'>優先級</b>設計與VLAN測試

    在汽車區域模塊中使用理想二極管的優先級電源多路復用器

    電子發燒友網站提供《在汽車區域模塊中使用理想二極管的優先級電源多路復用器.pdf》資料免費下載
    發表于 09-05 11:08 ?0次下載
    在汽車區域模塊中使用理想二極管的<b class='flag-5'>優先級</b>電源多路復用器

    freertos中斷優先級在哪設置

    FreeRTOS是一個流行的實時操作系統,它廣泛應用于嵌入式系統開發。在FreeRTOS中,中斷優先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷優先級 在討論如何設置
    的頭像 發表于 09-02 14:17 ?1562次閱讀
    主站蜘蛛池模板: 草b是什么感觉 | 在线视频 国产 日韩 欧美 | 91热久久免费精品99 | 亚洲午夜久久久无码精品网红A片 | 国产精品第3页 | 热热久久超碰精品中文字幕 | 本庄优花aⅴ全部在线影片 被滋润的艳妇疯狂呻吟白洁老七 | 狂野欧美性猛XXXX乱大交 | QVOD在线播放| 国精品产露脸偷拍视频 | 国产亚洲精品久久久999无毒 | 暖暖日本 在线 高清 | 一本道久在线综合色姐 | 性饥渴姓交HDSEX | 日韩一级精品久久久久 | 99视频在线观看免费 | 国产免费福利在线视频 | 国产精品一区二区欧美视频 | 性xxx免费视频 | 日本久久精品免视看国产成人 | 亚洲中文在线精品国产 | 羞羞漫画视频 | 肉蒲团从国内封禁到日本成经典 | 东京热百度影音 | 亚洲AV一宅男色影视 | 无码毛片内射白浆视频 | 日本高清免费看 | 成人欧美一区二区三区白人 | 久久精品视频在线直播6 | 久久青草费线频观看国产 | 国产欧美日韩中文视频在线 | 99er热精品视频国产免费 | 色综合99久久久国产AV | 秋霞伦理电影在2017韩国在线伦 | 免费国产午夜理论不卡 | 欧美牲交视频免费观看K8经典 | 欧美精品做人一级爱免费 | 亚洲欧美精品无码一区二在线 | 久久久99精品成人片中文 | 无码人妻少妇色欲AV一区二区 | 5G在线观看免费年龄确认 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品