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

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

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

形式化驗(yàn)證最佳實(shí)踐之三:實(shí)現(xiàn)端到端屬性

ruikundianzi ? 來源:IP與SoC設(shè)計(jì) ? 2023-11-24 14:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在本系列的前兩集中,我們看到了如何為高速緩存建立一個(gè)高效的正式測試平臺,如何發(fā)現(xiàn)一個(gè)真正的漏洞以及如何重現(xiàn)一個(gè)死鎖漏洞和找到一個(gè)設(shè)計(jì)修復(fù)方法。在這一點(diǎn)上,我們確信不存在其死鎖漏洞。本集將介紹我們?nèi)绾悟?yàn)證強(qiáng)大的斷言,怎么準(zhǔn)備正式測試平臺以驗(yàn)證端到端屬性(端到端屬性將根據(jù) DUT 的輸入檢查 DUT 的輸出),以及新的最佳實(shí)踐。

基本屬性

實(shí)際上,讓我們從一個(gè)不是端到端但對高速緩存至關(guān)重要的屬性開始。該屬性是我們唯一需要檢查內(nèi)部細(xì)節(jié)的屬性。它可以驗(yàn)證緩存中的命中請求是否只有一種命中方式。如果不遵守這一點(diǎn),那么在讀取或?qū)懭肽姆N數(shù)據(jù)時(shí)就會非常模糊。

hit_onehot: assert property(i_ucache.i_hit_stage.is_hit |-> $onehot(i_ucache.i_hit_stage.hit_way);

在緩存中執(zhí)行查找時(shí),地址會被分割成一個(gè)標(biāo)記(下圖中為 123)、一個(gè)索引(1)和一個(gè)偏移量。索引用于尋址標(biāo)記方式。如果該索引的內(nèi)容有效,而標(biāo)簽在兩種方式(下圖中的 0 和 2)中相同,這就是 "多重命中",也是一個(gè)嚴(yán)重的問題。許多潛在的設(shè)計(jì)錯(cuò)誤都可以看作是對這一屬性的違反。

5450bd94-8a84-11ee-939d-92fbcf53809c.png

查找標(biāo)記方式

然而,要摒棄對這一斷言的錯(cuò)誤失效,需要幾個(gè)約束條件。如第一集所述,我們抽象了不同的 RAM 陣列,包括 tagram。這意味著緩存讀取 tagram 的結(jié)果是 "隨機(jī) "的。這一點(diǎn)都不好,會導(dǎo)致斷言很快失敗。

引入 CAM 組件

這就是內(nèi)容可尋址內(nèi)存(CAM)發(fā)揮作用的地方。CAM 是內(nèi)存的縮小版。它不能容納數(shù)千個(gè)單元(每個(gè)地址一個(gè)單元),而只能容納少數(shù)幾個(gè)選定的地址,但這些地址不受任何限制。這實(shí)際上是某種固定長度的關(guān)聯(lián)數(shù)組,其長度遠(yuǎn)遠(yuǎn)小于實(shí)際數(shù)組的大小。

下圖左邊顯示的是一個(gè)真實(shí)的 tagram,右邊顯示的是一個(gè) CAM 抽象。

546d3cb2-8a84-11ee-939d-92fbcf53809c.png

我們可以看到,真實(shí)標(biāo)記圖在索引 2 處包含一個(gè)有效標(biāo)記。但在 CAM 中卻沒有。為了避免因緩存讀取索引 2 而導(dǎo)致錯(cuò)誤失敗,我們只需限制所有讀?。ê蛯懭耄┒急仨氃?CAM 中存在的索引處進(jìn)行:

request_in_cam: assume property(request |-> there_exists_one_in_cam(req_index));

這是一個(gè)很強(qiáng)的過約束,我們可以通過正確調(diào)整 CAM 的大小來緩解這個(gè)問題。為此,我們定義了覆蓋屬性,以確定使用了多少個(gè)不同的索引。通過對這些屬性的證明,我們可以確定哪些 CAM 大小過大,無法充分利用,因?yàn)樾问椒治鰰兊眠^于復(fù)雜。我們通常使用 FV 無法充分利用的最小 CAM 大小。

我們使用一個(gè) CAM 實(shí)例數(shù)組來表示所有標(biāo)簽陣列。此外,使用 CAM 可以抽象出緩存的初始內(nèi)容。我們只需讓數(shù)組中的值不受限制即可。事實(shí)上,并非完全無約束!hit_onehot 斷言仍然會在一個(gè)簡單的情況下失效:讀取請求進(jìn)來后,會以兩種方式命中,因?yàn)槊總€(gè) CAM 的初始狀態(tài)允許在同一索引中有兩種方式擁有相同的有效標(biāo)記。我們需要添加僅適用于復(fù)位后第一個(gè)周期的約束:

548f2674-8a84-11ee-939d-92fbcf53809c.png

這給形式分析增加了很多復(fù)雜性,所以只有在需要時(shí)才使用這些約束。不幸的是,我們還沒有完成 hit_onehot 斷言,還需要使用 CAM 內(nèi)容的新約束:

對于 CAM 中已經(jīng)存在的地址,高速緩存不得收到 "非高速緩存 "請求。

我們還需要用 CAM 為 dirtyram 陣列建模,并使標(biāo)簽和 dirty CAM 的內(nèi)容保持一致(即 dirty 行必須有效)。

CAM 中的地址必須在內(nèi)存映射寄存器范圍之外。

其中一些約束用于確保 CAM 的初始內(nèi)容正確無誤。我們還可以使用非常類似的屬性作為斷言來檢查任何循環(huán)。只需刪除 "init_cycle "項(xiàng)即可:

549ba50c-8a84-11ee-939d-92fbcf53809c.png

對死循環(huán)狀態(tài)存有敬意!

正如前面提到的,我們需要限制到達(dá) tagram(實(shí)際上是 CAM)的請求,使它們只針對 CAM 中存在的索引。這有一個(gè)隱藏的缺點(diǎn)。為了說明這一點(diǎn),讓我先總結(jié)一下什么是 FV 中的 "深度錯(cuò)誤查找"。

深度漏洞查找

有多種不同的查找方法,所有方法都是 "半正式 "的,這意味著它們并非詳盡無遺。但是它們在查找故障方面非常出色。

除了從復(fù)位狀態(tài)開始進(jìn)行形式分析外,主要技術(shù)還使用軌跡末端來啟動形式分析。首先根據(jù)用戶定義的覆蓋屬性或自動生成的覆蓋屬性生成軌跡。然后,從這一跟蹤的最后一個(gè)周期(或最后幾個(gè)周期)開始,執(zhí)行另一項(xiàng)形式分析,找到其他跟蹤,用于啟動其他形式分析等。它們也可能會發(fā)現(xiàn)錯(cuò)誤。這種方法能夠發(fā)現(xiàn)需要大量循環(huán)才能出現(xiàn)的錯(cuò)誤,而標(biāo)準(zhǔn)(窮舉)FV 是無法發(fā)現(xiàn)這些錯(cuò)誤的。

下面以窮舉式 FV 為例進(jìn)行說明:窮舉式 FV 僅從重置狀態(tài)開始探索,在探索了所有狀態(tài)直至幾個(gè)周期后就達(dá)到了極限。相反,深度錯(cuò)誤查找從復(fù)位狀態(tài)開始探索,但也會探索一些其他狀態(tài)(綠色),并且可以深入設(shè)計(jì),可能會發(fā)現(xiàn)錯(cuò)誤狀態(tài)(紅色),但也會遺漏一些狀態(tài)(灰色)。

54ddf9ac-8a84-11ee-939d-92fbcf53809c.png

在深度錯(cuò)誤查找中,當(dāng)從跟蹤結(jié)束處開始新的形式分析時(shí),跟蹤前綴會被凍結(jié)。我們所說的 "死循環(huán)狀態(tài) "是指由于某些約束條件在其后適用,因此無法進(jìn)入下一個(gè)狀態(tài)。死端狀態(tài)越多,深度錯(cuò)誤查找的效率就越低。

如何消除死鎖狀態(tài)

假設(shè)高速緩存接收到一個(gè)地址 A 的請求。然后,該請求觸發(fā)了對 CAM 的訪問,訪問的索引 I 取決于 A。針對 A 的請求本應(yīng)在幾個(gè)周期前就避免。

遵循這個(gè)簡單的規(guī)則可以大大緩解死鎖狀態(tài)問題:盡快對事物進(jìn)行約束。在本例中,它包括對高速緩存輸入端的地址進(jìn)行限制,這樣對于可緩存請求,只有在 CAM 中匹配地址的請求才會被發(fā)出。

為 tagram 和 dirtyram 添加 CAM 以及相關(guān)限制并不容易。只有在調(diào)試重要斷言(如 hit_onehot 斷言)失敗時(shí),才能逐步添加抽象和約束。不過,這也是一種投資。你會看到,我們在緩存驗(yàn)證的其余部分中都使用了它。最后,我們沒有發(fā)現(xiàn)任何關(guān)于 hit_onehot 的失敗,但即使過了很長時(shí)間,也沒有得到任何證明。這并不奇怪,因?yàn)檫@個(gè)斷言幾乎驗(yàn)證了設(shè)計(jì)的全部控制(在分析覆蓋率時(shí)可以看到......在下一集中)。然而,手動添加一些令人討厭的錯(cuò)誤,很快就會被視為該斷言的失敗,這是一個(gè)好兆頭。

關(guān)于這次的收獲可以來回顧一下。

我們已經(jīng)看到了如何大大增強(qiáng)(或復(fù)雜化?。┪覀兊恼綔y試平臺。這需要驗(yàn)證一個(gè)基本的控制斷言,之后還需要驗(yàn)證數(shù)據(jù)完整性斷言。以下是我們確定的最佳實(shí)踐。

54f6f93e-8a84-11ee-939d-92fbcf53809c.png

審核編輯:黃飛

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

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124422
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3122

    瀏覽量

    75246
  • 死鎖
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    8202
  • CAM
    CAM
    +關(guān)注

    關(guān)注

    5

    文章

    202

    瀏覽量

    43895
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    191

    瀏覽量

    12951

原文標(biāo)題:形式化驗(yàn)證最佳實(shí)踐之三:實(shí)現(xiàn)端到端屬性

文章出處:【微信號:IP與SoC設(shè)計(jì),微信公眾號:IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    鑒源論壇 · 觀模丨形式化驗(yàn)證——以操作系統(tǒng)任務(wù)調(diào)度算法驗(yàn)證為案例

    形式化方法為軟件開發(fā)過程提供了一種較為透徹的思維方式,該方式可以用于工程化系統(tǒng)設(shè)計(jì),并且可以很好地幫助工程人員建立系統(tǒng)抽象模型,從而進(jìn)行系統(tǒng)精化和驗(yàn)證。
    的頭像 發(fā)表于 11-09 11:25 ?1139次閱讀
    鑒源論壇 · 觀模丨<b class='flag-5'>形式化驗(yàn)證</b>——以操作系統(tǒng)任務(wù)調(diào)度算法<b class='flag-5'>驗(yàn)證</b>為案例

    芯片開發(fā)中形式化驗(yàn)證的是一個(gè)誤區(qū)

    今天的形式驗(yàn)證工具具有更大的容量,并且許多工具能夠在服務(wù)器或云上以分布式模式運(yùn)行。形式驗(yàn)證的技術(shù)和方法也得到了擴(kuò)展。
    的頭像 發(fā)表于 11-29 14:31 ?2373次閱讀

    形式化方法的工程化

    形式化工程方法,是以軟件形式化方法理論為基礎(chǔ),以系統(tǒng)化的工程方法引導(dǎo)工業(yè)界工程人員構(gòu)建高質(zhì)量的軟件模型,用以引導(dǎo)后續(xù)的代碼編寫和相關(guān)測試分析。并選取了工業(yè)實(shí)際場景中的某操作系統(tǒng)的調(diào)度系統(tǒng)的形式化驗(yàn)證
    的頭像 發(fā)表于 03-24 11:01 ?1924次閱讀
    <b class='flag-5'>形式化</b>方法的工程化

    EDA形式化驗(yàn)證漫談:仿真之外,驗(yàn)證之內(nèi)

    “在未來五年內(nèi)仿真將逐漸被淘汰,僅用于子系統(tǒng)和系統(tǒng)級驗(yàn)證。與此同時(shí),形式化驗(yàn)證方法已經(jīng)開始處理一些系統(tǒng)級任務(wù)。隨著技術(shù)發(fā)展,更多Formal相關(guān)的商業(yè)標(biāo)準(zhǔn)化會推出?!?Intel?fellow
    的頭像 發(fā)表于 09-01 09:10 ?1817次閱讀

    ACRN 之InterruptWindow功能正確性形式化驗(yàn)證

    重磅推薦|ACRN 之InterruptWindow功能正確性形式化驗(yàn)證
    發(fā)表于 06-18 16:04

    化驗(yàn)證和封裝形式有關(guān)系嗎?

    無關(guān),任何形式的封裝,皆需要做老化實(shí)驗(yàn)。蘇試宜特提供客戶量身訂制全方位的一站式服務(wù), 從老化驗(yàn)證的硬件設(shè)計(jì)/制造樣品調(diào)試/實(shí)驗(yàn)/報(bào)告, 蘇試宜特都可以協(xié)助客戶完成。
    發(fā)表于 09-13 09:46

    基于串空間的協(xié)議認(rèn)證屬性標(biāo)準(zhǔn)化驗(yàn)證過程

    針對目前串空間理論依賴分析人員主觀判斷、無法使用自動化工具進(jìn)行驗(yàn)證的問題,提出了基于串空間理論的協(xié)議認(rèn)證屬性標(biāo)準(zhǔn)化驗(yàn)證過程。首先為協(xié)議消息項(xiàng)定義類型標(biāo)簽,對串空間及認(rèn)證測試?yán)碚撨M(jìn)行擴(kuò)展;然后通過判斷
    發(fā)表于 01-07 12:13 ?0次下載

    VaaS平臺已支持區(qū)塊鏈平臺智能合約的形式化驗(yàn)證

    VaaS形式化驗(yàn)證平臺,采用了多種形式化驗(yàn)證方法,具有驗(yàn)證效率高、自動化程度高、人工參與度低、易于使用、支持多個(gè)合約開發(fā)語言、可支持大容量區(qū)塊鏈底層平臺的形式化驗(yàn)證等優(yōu)點(diǎn)。
    發(fā)表于 12-14 10:18 ?1239次閱讀

    閃電網(wǎng)絡(luò)通過形式化驗(yàn)證結(jié)果表明和比特幣一樣安全

    of the Lightning Network” 的論文認(rèn)為,如今閃電網(wǎng)絡(luò)已經(jīng)被用于保護(hù)至少 8500 萬美元的真實(shí)資金,但其代碼規(guī)范缺乏形式化驗(yàn)證是一件 “極其嚴(yán)重的事”。
    發(fā)表于 09-24 10:29 ?836次閱讀

    安全測試之離線免費(fèi)版自動形式化驗(yàn)證工具Beosin—VaaS

    近期,筆者注意一款智能合約自動形式化驗(yàn)證工具BeosinVaaS推出了離線免費(fèi)版。所謂離線免費(fèi)版,相較于之前該公司推出的在線免費(fèi)版、企業(yè)版而言,亮點(diǎn)自然不言而喻。對于開發(fā)者來說,離線版的驗(yàn)證工具將
    發(fā)表于 11-23 00:06 ?926次閱讀

    基于定理證明其的有限域及其形式化研究

    方法只能在η固定的特定有限域上進(jìn)行驗(yàn)證,而且計(jì)算量往往超出計(jì)算機(jī)的能力?;诮换ナ蕉ɡ碜C眀器的形式化驗(yàn)證為有限域性質(zhì)的通用驗(yàn)提供了可能性,但這方面的工作難度較大。已有研究主要針對有服域的抽象性質(zhì)進(jìn)行形式化驗(yàn)證,但計(jì)
    發(fā)表于 04-25 11:41 ?1次下載
    基于定理證明其的有限域及其<b class='flag-5'>形式化</b>研究

    虹科PagerDuty通過自動化響應(yīng)實(shí)現(xiàn)最佳實(shí)踐

    虹科PagerDuty / 現(xiàn)代化事件響應(yīng) 通過更快地解決關(guān)鍵事件來防止未來可能出現(xiàn)的事件,改善客戶體驗(yàn),通過的自動化響應(yīng)實(shí)現(xiàn)最佳
    的頭像 發(fā)表于 08-10 15:21 ?1650次閱讀

    從小眾走向普及,形式化驗(yàn)證對系統(tǒng)級芯片開發(fā)有多重要?

    形式化驗(yàn)證作為一種全新的驗(yàn)證方法,近年來在芯片開發(fā)中快速發(fā)展,正逐漸取代傳統(tǒng)的仿真方法。 雖然仿真在系統(tǒng)級驗(yàn)證方面仍然發(fā)揮著重要的作用,但對于單元級的signoff而言,形式化驗(yàn)證已經(jīng)
    的頭像 發(fā)表于 04-21 19:35 ?896次閱讀
    從小眾走向普及,<b class='flag-5'>形式化驗(yàn)證</b>對系統(tǒng)級芯片開發(fā)有多重要?

    國內(nèi)首例!空運(yùn)“”碳中和實(shí)踐獲圓滿成功

    在國際物流生態(tài)鏈綠色物流領(lǐng)域“”碳中和解決方案的首個(gè)落地實(shí)例,實(shí)現(xiàn)了中興通訊成品從南京智能制造基地西班牙馬德里倉庫的全鏈路碳中和綠色
    的頭像 發(fā)表于 07-12 13:15 ?685次閱讀
    國內(nèi)首例!空運(yùn)“<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>”碳中和<b class='flag-5'>實(shí)踐</b>獲圓滿成功

    測試用例怎么寫

    測試方法,旨在驗(yàn)證整個(gè)應(yīng)用程序從前端后端的流程是否能夠按照預(yù)期工作。它涉及多個(gè)系統(tǒng)組件和接口的交互,確保業(yè)務(wù)流程的完整性和正確性。 二、編寫
    的頭像 發(fā)表于 09-20 10:29 ?970次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品