利用先進形式驗證工具來高效完成RISC-V處理器驗證
發布時間:2023-06-16 責任編輯:lina
【導讀】RISC-V的開放性允許定製和擴展基於RISC-V內(nei)核(he)的(de)架(jia)構(gou)和(he)微(wei)架(jia)構(gou),以(yi)滿(man)足(zu)特(te)定(ding)需(xu)求(qiu)。這(zhe)種(zhong)對(dui)設(she)計(ji)自(zi)由(you)的(de)渴(ke)望(wang)也(ye)正(zheng)在(zai)將(jiang)驗(yan)證(zheng)部(bu)分(fen)的(de)職(zhi)責(ze)轉(zhuan)移(yi)到(dao)不(bu)斷(duan)壯(zhuang)大(da)的(de)開(kai)發(fa)人(ren)員(yuan)社(she)群(qun)。然(ran)而(er),隨(sui)著(zhe)越(yue)來(lai)越(yue)多(duo)的(de)企(qi)業(ye)和(he)開(kai)發(fa)人(ren)員(yuan)轉(zhuan)型(xing)RISC-V,dajiacaifaxianchuliqiyanzhengjuefeiyishi。xinbiaozhunyouyuqixinyinghelinghuoxingerdailaidexingongnenghuizaiwuyizhongchanshengguifanheshejiloudong,yincichuliqiyanzhengshichuliqikaifaguochengzhongyixiangfeichangzhongyaodehuanjie。
我們在上一篇技術白皮書《基於形式驗證的高效RISC-V處理器驗證方法》中,以Codasip L31這款用於微控製器應用的32位中端嵌入式RISC-V處理器內核為例,介紹了一個基於形式驗證的、易於調動的RISC-V處理器驗證程序。它與RISC-V ISA黃金模型和RISC-V合規性自動生成的檢查一起,展示了如何有效地定位那些無法進行仿真的漏洞。
RISC-V的開放性允許定製和擴展基於RISC-V內(nei)核(he)的(de)架(jia)構(gou)和(he)微(wei)架(jia)構(gou),以(yi)滿(man)足(zu)特(te)定(ding)需(xu)求(qiu)。這(zhe)種(zhong)對(dui)設(she)計(ji)自(zi)由(you)的(de)渴(ke)望(wang)也(ye)正(zheng)在(zai)將(jiang)驗(yan)證(zheng)部(bu)分(fen)的(de)職(zhi)責(ze)轉(zhuan)移(yi)到(dao)不(bu)斷(duan)壯(zhuang)大(da)的(de)開(kai)發(fa)人(ren)員(yuan)社(she)群(qun)。然(ran)而(er),隨(sui)著(zhe)越(yue)來(lai)越(yue)多(duo)的(de)企(qi)業(ye)和(he)開(kai)發(fa)人(ren)員(yuan)轉(zhuan)型(xing)RISC-V,dajiacaifaxianchuliqiyanzhengjuefeiyishi。xinbiaozhunyouyuqixinyinghelinghuoxingerdailaidexingongnenghuizaiwuyizhongchanshengguifanheshejiloudong,yincichuliqiyanzhengshichuliqikaifaguochengzhongyixiangfeichangzhongyaodehuanjie。
在複雜性一般的RISC-V處chu理li器qi內nei核he的de開kai發fa過guo程cheng中zhong,會hui發fa現xian數shu百bai甚shen至zhi數shu千qian個ge漏lou洞dong。當dang引yin入ru更geng多duo高gao級ji特te性xing的de時shi候hou,也ye會hui引yin入ru複fu雜za程cheng度du各ge不bu相xiang同tong的de新xin漏lou洞dong。而er某mou些xie類lei型xing的de漏lou洞dong過guo於yu複fu雜za,導dao致zhi在zai仿fang真zhen環huan節jie都dou無wu法fa找zhao到dao它ta們men。因yin此ci必bi須xu通tong過guo添tian加jia形xing式shi驗yan證zheng來lai賦fu能nengRTL驗證方法。從極端漏洞到隱匿式漏洞,形式驗證能夠讓您在合理的處理時間內詳盡地探索所有狀態。
在本文中,我們將以西門子EDA處理器驗證應用程序為例,結合Codasip L31這款廣受歡迎的RISC-V處理器IP提供的特性,來介紹一種利用先進的EDAgongju,zaishijishejigongzuozhongduichuliqijinxingyanzhengdejutifangfa。zhezhongyanzhengfangfatongguoweimeitiaozhilingtigongyizuzhuanyongdeduanyanmobanlaishixiangaoduzidonghua,buzaixuyaoshoudongsheji,congertigaolexingshiyanzhengtuanduidegongzuoxiaolv。
如何使用西門子EDA處理器驗證應用程序
在我們使用該工具之前,需要為Codasip L31 RISC-V內核進行形式驗證設置。此設置類似於使用帶有抽象、約束等基於斷言的驗證(ABV)方法來形式驗證標準斷言的設置。
該工具允許驗證特定類別的指令,並啟用或禁用某些資源檢查。有了這個工具,我們的驗證可以從一個簡化的空間開始,這包括:
• 隻有最簡單的指令,例如隻有整數運算和邏輯指令。
• 隻有最簡單(但最重要)的檢查。例如通用寄存器的更新。稍後可以添加的其他檢查指的是係統寄存器(CSR)或程序計數器(PC)的更新以及內存訪問。
• 隻有主功能模式:沒有中斷、中止、異常或調試訪問。
這三個正交約束可以根據微架構特征的關鍵程度逐一放寬。經典的形式驗證技術可用於幫助獲得檢查器斷言的結果:抽象、設計縮減、案例拆分、不變量生成、半形式漏洞搜尋等。
結果
這(zhe)種(zhong)基(ji)於(yu)形(xing)式(shi)的(de)方(fang)法(fa)使(shi)我(wo)們(men)能(neng)夠(gou)找(zhao)到(dao)極(ji)端(duan)情(qing)況(kuang),並(bing)深(shen)入(ru)了(le)解(jie)改(gai)進(jin)我(wo)們(men)的(de)仿(fang)真(zhen)和(he)測(ce)試(shi)平(ping)台(tai)。在(zai)其(qi)他(ta)基(ji)於(yu)仿(fang)真(zhen)的(de)驗(yan)證(zheng)流(liu)程(cheng)運(yun)行(xing)而(er)未(wei)發(fa)現(xian)新(xin)漏(lou)洞(dong)之(zhi)後(hou),此(ci)驗(yan)證(zheng)工(gong)作(zuo)在(zai)項(xiang)目(mu)快(kuai)結(jie)束(shu)時(shi)完(wan)成(cheng),這(zhe)使(shi)我(wo)們(men)能(neng)夠(gou)找(zhao)到(dao)真(zhen)正(zheng)的(de)和(he)重(zhong)要(yao)的(de)漏(lou)洞(dong)。
我們可以特別關注其中的三個漏洞,它們從用於L31的西門子EDA處理器驗證應用程序中找到。以下是發現和彌補這三個漏洞的具體方法:
1. 分支預測器損壞
有了這個漏洞,返回到先前持有跳轉/分支指令的PC地址會導致分支預測器錯誤地預測跳轉到另一個地址。當滿足以下條件時,會發現這種極端情況:
自修改代碼

當添加未定義的指令(新指令異常)時,也會出現此漏洞極其罕見的版本:

該漏洞是通過檢查PCzhideduanyanfaxiande,zhijiehouguoshicuowudizhixingleyigefenzhizhiling,daozhidaimazhixingcuowu。tongguozhengqueqingchufenzhiyuceheliushuixiandehuanchongshujulaixiufuciloudong。
使用西門子EDA處理器驗證應用程序查找此漏洞需要8個周期和15分(fen)鍾(zhong)的(de)運(yun)行(xing)時(shi)間(jian)。在(zai)仿(fang)真(zhen)中(zhong)重(zhong)現(xian)該(gai)漏(lou)洞(dong)需(xu)要(yao)一(yi)個(ge)支(zhi)持(chi)自(zi)修(xiu)改(gai)代(dai)碼(ma)的(de)隨(sui)機(ji)生(sheng)成(cheng)器(qi),該(gai)代(dai)碼(ma)可(ke)正(zheng)好(hao)返(fan)回(hui)相(xiang)同(tong)的(de)地(di)址(zhi)並(bing)將(jiang)該(gai)地(di)址(zhi)從(cong)分(fen)支(zhi)修(xiu)改(gai)為(wei)另(ling)一(yi)種(zhong)類(lei)型(xing)的(de)指(zhi)令(ling)。換(huan)句(ju)話(hua)說(shuo),隨(sui)機(ji)生(sheng)成(cheng)器(qi)不(bu)可(ke)能(neng)做(zuo)到(dao)這(zhe)一(yi)點(dian)。隻(zhi)有(you)知(zhi)道(dao)漏(lou)洞(dong)詳(xiang)細(xi)信(xin)息(xi)的(de)定(ding)向(xiang)序(xu)列(lie)可(ke)以(yi)做(zuo)到(dao)。
2. 同一條指令的多次執行
出現這個漏洞,NPC(下一個 PC)單元停頓就會出現,這會導致多次獲取相同的地址。每條指令執行並退出。
當滿足以下條件時,會出現這種極端情況:
• 內核配置有TCM。
• 在提取總線上可以看到特定的延遲。
• 在流水線內可以看到特定的停頓。
gailoudonghuizhijiezailiushuixiandeqiyubufenzaochengweibeizhengquechulidetingdun,daozhitongyizhilingdeduocizhixing。keyitongguozhengquechuliqiyuliushuixianzhongdetingdunlaixiufuciloudong。
使用西門子EDA處理器驗證應用程序查找此漏洞需要5個周期和10分鍾的運行時間。在仿真中再現它需要隨機延遲和停頓的隨機模式,但也需要相當多的“運氣”來再現這個特定序列。
3. 合法的 FENCE.I 指令被認為是非法的
出現這個漏洞,內存屏障會由CSR單元處理。如果與CSR操作的CSR地址位元對應的指令位元(位 [31:20])與某些CSR寄存器(例如調試、計數器)匹配,則指令可能會被錯誤地標記為非法。
當滿足以下條件時,會發現這種極端情況:
• imm[11:0]/rs1/rd 中有隨機位元。
• 這些位元與其他一些非法指令相匹配。

該漏洞的直接後果是錯誤地引發了非法指令異常。通過正確解碼流水線每個部分的完整指令可修複此漏洞。
使用西門子EDA處理器驗證應用程序查找此漏洞僅用了8個周期和5分fen鍾zhong的de運yun行xing時shi間jian。因yin為wei編bian譯yi器qi隻zhi會hui創chuang建jian最zui簡jian單dan的de二er進jin製zhi編bian碼ma實shi現xian,所suo以yi很hen難nan在zai仿fang真zhen中zhong重zhong現xian該gai漏lou洞dong。它ta需xu要yao一yi個ge特te殊shu的de編bian譯yi器qi來lai創chuang建jian合he法fa編bian碼ma的de變bian體ti,或huo者zhe使shi用yong各ge種zhong編bian碼ma進jin行xing特te殊shu的de定ding向xiang測ce試shi。
從中發現的優勢/結論
應ying用yong這zhe種zhong方fang法fa可ke以yi提ti高gao驗yan證zheng團tuan隊dui的de工gong作zuo效xiao率lv。在zai項xiang目mu的de關guan鍵jian階jie段duan提ti高gao效xiao率lv。雖sui然ran在zai開kai始shi時shi構gou建jian正zheng確que的de設she置zhi需xu要yao付fu出chu努nu力li,但dan隨sui著zhe我wo們men添tian加jia新xin的de指zhi令ling類lei別bie和he新xin的de檢jian查zha器qi,進jin度du就jiu會hui加jia快kuai。這zhe個ge“最佳點”是我們發現大多數問題的地方,隨著放寬約束以允許該工具探索更深奧的操作模式,速度就開始放緩。

圖 1 驗證L31 RISC-V內核的最佳效率的最佳點(來源:Codasip)
總的來說,因為使用西門子EDA處理器驗證應用程序驗證整個CPU所需的總體工作量遠低於手動達到類似驗證質量所需的工作量,所以使用該工具是相當高效的。在總共30個漏洞中,有15個是通過形式驗證發現的。
表1 仿真 vs形式驗證
驗證技術 | 仿真驗證 | 形式驗證 |
驗證基礎設施 | 測試台、隨機指令生成器、檢查器 | 西門子EDA處理器驗證應用程序提供的斷言 |
開發時間 | 人-年(person-years of efforts) | 時間極短(隻需要自定義生成的設置) |
運行時間 | 成千上萬次的測試/案例和成千上萬個仿真小時 | 在2小時的運行時間內完成完整驗證(最佳情況下) |
當結合在一起到達高質量水平時,仿真和形式驗證是非常強大的,並使我們能夠促進改進驗證的良性循環。

圖 2 通過持續改進達到一流的品質(來源:Codasip)
該解決方案在Codasip L31這種3級流水線微控製器上的實施被證明是可行的,現在已部署到Codasip的下一代RISC-V內核中,包括嵌入式和應用內核。借助在L31上使用西門子EDA處理器驗證應用程序積累的知識,即使應用內核更複雜,也可以減少建立穩健環境所需的工作量。而Codasip的下一步計劃包括進一步研究該工具如何應用於超標量和亂序內核,以及支持新的 RISC-V 擴展。
補充閱讀
RISC-V處理器的高效驗證——技術白皮書:https://codasip.com/papers/efficientverification-of-riscv-processors-technical-paper/
構建用於處理器驗證的瑞士奶酪模型方法 - 博客文章:https://codasip.com/2022/04/29/building-a-swiss-cheese-model-approach-for-processorverification/
本文摘錄於《基於形式的高效 RISC-V 處理器驗證方法 – 形式化驗證》白皮書,出版人為總部位於歐洲的全球領先RISC-V供應商和處理器解決方案領導者,該公司的處理器IP目前已部署在數十億顆芯片中。Codasip通過開放的RISC-V ISA、Codasip Studio處理器設計自動化工具與高品質的處理器IP相結合,為客戶提供定製計算。這種創新方法能夠輕鬆實現定製和差異化設計,從而開發出高性能的、改變遊戲規則的產品,實現真正意義上的轉型。如希望得到該白皮書的完整版本,可瀏覽Codasip中文網站或者關注該公司微信公眾號。
該技術白皮書英文版下載鏈接:https://codasip.com/papers/a-formal-based-approach-for-efficient-riscv-processor-verification
(作者:Laurent Arditi, Paul Sargent, Thomas Aird,職務:Codasip高級驗證/形式驗證工程師)
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall



