利用先進形式驗證工具來高效完成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提供的特性,來介紹一種利用先進的EDA工(gong)具(ju),在(zai)實(shi)際(ji)設(she)計(ji)工(gong)作(zuo)中(zhong)對(dui)處(chu)理(li)器(qi)進(jin)行(xing)驗(yan)證(zheng)的(de)具(ju)體(ti)方(fang)法(fa)。這(zhe)種(zhong)驗(yan)證(zheng)方(fang)法(fa)通(tong)過(guo)為(wei)每(mei)條(tiao)指(zhi)令(ling)提(ti)供(gong)一(yi)組(zu)專(zhuan)用(yong)的(de)斷(duan)言(yan)模(mo)板(ban)來(lai)實(shi)現(xian)高(gao)度(du)自(zi)動(dong)化(hua),不(bu)再(zai)需(xu)要(yao)手(shou)動(dong)設(she)計(ji),從(cong)而(er)提(ti)高(gao)了(le)形(xing)式(shi)驗(yan)證(zheng)團(tuan)隊(dui)的(de)工(gong)作(zuo)效(xiao)率(lv)。
如何使用西門子EDA處理器驗證應用程序
在我們使用該工具之前,需要為Codasip L31 RISC-V內核進行形式驗證設置。此設置類似於使用帶有抽象、約束等基於斷言的驗證(ABV)方法來形式驗證標準斷言的設置。
該工具允許驗證特定類別的指令,並啟用或禁用某些資源檢查。有了這個工具,我們的驗證可以從一個簡化的空間開始,這包括:
• 隻有最簡單的指令,例如隻有整數運算和邏輯指令。
• 隻有最簡單(但最重要)的檢查。例如通用寄存器的更新。稍後可以添加的其他檢查指的是係統寄存器(CSR)或程序計數器(PC)的更新以及內存訪問。
• 隻有主功能模式:沒有中斷、中止、異常或調試訪問。
這三個正交約束可以根據微架構特征的關鍵程度逐一放寬。經典的形式驗證技術可用於幫助獲得檢查器斷言的結果:抽象、設計縮減、案例拆分、不變量生成、半形式漏洞搜尋等。
結果
zhezhongjiyuxingshidefangfashiwomennenggouzhaodaojiduanqingkuang,bingshenrulejiegaijinwomendefangzhenheceshipingtai。zaiqitajiyufangzhendeyanzhengliuchengyunxingerweifaxianxinloudongzhihou,ciyanzhenggongzuozaixiangmukuaijieshushiwancheng,zheshiwomennenggouzhaodaozhenzhengdehezhongyaodeloudong。
我們可以特別關注其中的三個漏洞,它們從用於L31的西門子EDA處理器驗證應用程序中找到。以下是發現和彌補這三個漏洞的具體方法:
1. 分支預測器損壞
有了這個漏洞,返回到先前持有跳轉/分支指令的PC地址會導致分支預測器錯誤地預測跳轉到另一個地址。當滿足以下條件時,會發現這種極端情況:
自修改代碼

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

該漏洞是通過檢查PC值zhi的de斷duan言yan發fa現xian的de,直zhi接jie後hou果guo是shi錯cuo誤wu地di執zhi行xing了le一yi個ge分fen支zhi指zhi令ling,導dao致zhi代dai碼ma執zhi行xing錯cuo誤wu。通tong過guo正zheng確que清qing除chu分fen支zhi預yu測ce和he流liu水shui線xian的de緩huan衝chong數shu據ju來lai修xiu複fu此ci漏lou洞dong。
使用西門子EDA處理器驗證應用程序查找此漏洞需要8個周期和15fenzhongdeyunxingshijian。zaifangzhenzhongzhongxiangailoudongxuyaoyigezhichizixiugaidaimadesuijishengchengqi,gaidaimakezhenghaofanhuixiangtongdedizhibingjianggaidizhicongfenzhixiugaiweilingyizhongleixingdezhiling。huanjuhuashuo,suijishengchengqibukenengzuodaozheyidian。zhiyouzhidaoloudongxiangxixinxidedingxiangxuliekeyizuodao。
2. 同一條指令的多次執行
出現這個漏洞,NPC(下一個 PC)單元停頓就會出現,這會導致多次獲取相同的地址。每條指令執行並退出。
當滿足以下條件時,會出現這種極端情況:
• 內核配置有TCM。
• 在提取總線上可以看到特定的延遲。
• 在流水線內可以看到特定的停頓。
該(gai)漏(lou)洞(dong)會(hui)直(zhi)接(jie)在(zai)流(liu)水(shui)線(xian)的(de)其(qi)餘(yu)部(bu)分(fen)造(zao)成(cheng)未(wei)被(bei)正(zheng)確(que)處(chu)理(li)的(de)停(ting)頓(dun),導(dao)致(zhi)同(tong)一(yi)指(zhi)令(ling)的(de)多(duo)次(ci)執(zhi)行(xing)。可(ke)以(yi)通(tong)過(guo)正(zheng)確(que)處(chu)理(li)其(qi)餘(yu)流(liu)水(shui)線(xian)中(zhong)的(de)停(ting)頓(dun)來(lai)修(xiu)複(fu)此(ci)漏(lou)洞(dong)。
使用西門子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可編程電源,賦能高端裝備製造
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall




