在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何將SystemVerilog斷言屬性和覆蓋屬性置于在設計上?

數字芯片實驗室 ? 來源:數字芯片實驗室 ? 2024-05-28 10:30 ? 次閱讀

介紹

功能覆蓋、激勵生成和運行管理是當今功能驗證的三大相互關聯的任務。其中,功能覆蓋率可以說是最重要的,主要是因為覆蓋率收斂是tape的主要標準。覆蓋率衡量標準提供了關鍵的反饋。如圖1所示,覆蓋率模型應包括端到端功能覆蓋、主要接口的事務覆蓋、關鍵RTL結構的結構覆蓋和基本代碼覆蓋。

基于斷言的方法有助于發現bug,反饋回歸環境的質量。這種方法不僅可以由驗證實現,設計可以通過以斷言的形式描述他們對設計內部操作的深入行為來提供check。

斷言和功能覆蓋實際上是同一枚硬幣的兩面。兩者都在寄存器傳輸水平(RTL)設計中提供詳細的觀察點。

指南

遵循指南可以使設計更容易。首先,將斷言放在RTL代碼中,以便它們可以與RTL代碼一起管理、更新和重復使用。接下來,通過適當的注釋將斷言與RTL分開;一些公司建議將ifdef/endif放在斷言周圍,以便將它們排除在實現流程中的工具之外。

斷言不必復雜。事實上,根據我的經驗,簡單的斷言通常和復雜的斷言一樣有用,包括捕捉復雜的bug。在接下來的部分中,我將探索如何將SystemVerilog 斷言屬性和覆蓋屬性置于在設計上。

首先,用于表示特殊信息的寄存器應遵守預定義的合法值(gray_code、odd_parity、even_parity、one-hot)。例如,下面的寄存器聲明要求bus_state是one_hot編碼的,int_mask中的單個位是相互排斥的,hdl_cmd將只具有合法值。設計或者驗證可以捕獲它們,以確保它們被功能驗證所涵蓋。


接下來,當寄存器用作計數器時,它們應該相應地存在概念(最小、最大、范圍、值、遞減、遞增、上溢出、下溢出等)。例如,在下面的寄存器聲明中,我們希望確保hdr_adr在1到26的范圍內。對于bus_cnt,它不應該下溢和溢出。對于計數器來說,了解他們是否達到了高水位可能很有趣。驗證團隊可以進行更多的覆蓋分析,但需要知道這些計數器的位置,這些指針通常可以在覆蓋屬性中找到。

接下來,當寄存器用作計數器時,它們應該相應地運行(即與最小、最大、范圍、值、遞減、增量、增量、下流、溢出等的所有參數一致)。例如,在下面的寄存器聲明中,我們希望確保hdr_adr在1到26的范圍內。對于bus_cnt,它不應該下溢和上溢。對于計數器來說,了解他們是否達到了高水位也可能很有趣。驗證團隊可以進行更多的覆蓋率分析。


此外,重要的控制寄存器(狀態、地址和狀態)應正確復位,并且不應具有X或Z狀態。

在RTL開發期間定期進行檢查。例如,在下面的示例中,當斷言cmd_write時,將發生DMA傳輸。然而,用戶沒有檢查cmd_ready。他假設當cmd_write被采樣時,命令處理已經準備就緒。

下面的第一個斷言屬性有助于確保在斷言cmd_write時,信號cmd_ready為真。第二個斷言屬性確保xdma傳輸將在cmd_write之后發生。另一個覆蓋率屬性可以評估成功的DMA傳輸。

當綜合指令與case語句一起使用時,確保假設對指定的case語句成立,并報告任何潛在的仿真/綜合不匹配。對于full_case指令,至少有一個case項為真,對于parall_case指令,最多有一個case項為真。例如,在下面的示例中,帶有“X”賦值的默認分支用于幫助綜合優化。永遠不應該達到它。可以添加斷言屬性來檢查此場景。然后,可以使用仿真和形式驗證來驗證它永遠不會被執行。與此同時,我們可以有一個覆蓋率屬性,可以獲取一些關鍵但罕見的條件。我們希望確保它們已經通過仿真進行了檢查和覆蓋。

有時候,只有一個分支變量應該是真。例如,在下面的示例中,應始終斷言其中一個信號(s0、s1或s2)。我們可以用one_hot屬性來驗證這一點。同樣,覆蓋屬性可用于捕獲控制信號上的臨界值變化,例如當pkg_type從`CTRL更改為3'b111時。控制語句為定義這些覆蓋屬性提供了一個特別好的位置,因為所有控制信號和參數都在本地可用。

當設計團隊集成所有SoC模塊進行芯片級仿真時,這些模塊通常無法相互通信。為了及早發現這些模塊間通信問題,添加了協議監視器來檢查片上總線和標準接口。在仿真過程中,協議監視器確保模塊與其外部接口正確通信。通過收集統計數據和覆蓋信息,這些監視器衡量驗證環境的有效性。

隨著模塊的復雜性增加,內部通信方案也越來越復雜。斷言對于驗證這些模塊內接口很有用。

覆蓋率和數據流統計對內部接口和外部接口一樣重要。此類信息證實了通過接口的數據流,并突出了任何潛在的“瓶頸”。

例如,在下面的數據傳輸波形中,我想確保數據有效信號斷言足夠長的時間(兩到四個周期),并且當斷言有效時數據總線是穩定的。


接下來,在下面的握手數據傳輸波形中,我想確保數據有效信號的斷言時間足夠長,以便在斷言有效時數據總線是穩定的,并且每個有效的斷言后都有一個ack。


計算資源、系統片上總線、互連、buffer和存儲器是邏輯結構,通常由仲裁和復雜的控制邏輯共享和控制。在為設計創建驗證環境時,團隊傾向于首先關注整體規格。相反,它們不會強調這些資源控制邏輯的邊界情況。我看到許多回歸環境在這些關鍵場景提供的覆蓋率非常低。因此,有問題的場景沒有被發現,包括重新流片成本高昂的故障。

在仲裁資源共享的控制器中,根據優先級、權重或credit方案生成request和grant信號。我想確保仲裁方案正確,資源(總線、互連、內存)一次只由一個master處理,并在再次分配之前取消分配。最好用參考模型方法檢查這種類型的結構。可以利用Accellera OVL庫中的仲裁檢查器。預定義的仲裁包括優先權、公平或輪訓、FIFO和LRU。

ovl_arbiter檢查器可以在RTL代碼中實例化。它確保不應在沒有請求的情況下發放grant,并且在一個周期內只聲明一項grant,并在請求后[min_cks:max_cks]指定的時間窗口內grant。除了檢查仲裁方案外,仲裁員checker還有一套全面的cover point和cover group,如cover_req_granted、cover_req_aborted、time_to_grant、concurrent_requests等。還可以添加額外的斷言屬性,以確保request和grant信號表現良好。例如,仲裁checker假設請求將保留,直到它被grant。我們可以為每個通道生成斷言屬性,如下所示。


總線橋、dma控制器和路由器等數據傳輸設備將數據包從一個接口傳輸到另一個接口。在系統級仿真環境中,數據完整性錯誤不容易觀察到。只有當損壞的數據到達scoreboard時,它們才會被檢測到,或者在仿真結束時被標記為丟失。使用斷言屬性,可以沿著數據傳輸路徑檢查它們。它們不應該丟失或損壞,如有必要,我們還可以確保它們遵循先入先出規格,沒有任何更改。與其手動創建數據完整性斷言,不如利用Accellera OVL庫中的fifo斷言檢查器。fifo檢查器確保模塊中事務通過模塊的數據傳輸不會損壞。對于具有多個輸入和輸出端口的模塊,例如N-to-M總線矩陣,可以使用OVL多端口fifo檢查器。同樣,fifo檢查器還有一套全面的cover point和cover group,如cover_enqueues、cover_dequeues、cover_fifo_full、cover_fifo_empty、cover_simultaneous_enq_deq等。它們可用于評估設備的數據流。也可以添加其他斷言屬性。

出于驗證目的,我們將有限狀態機(FSM)分為兩類:接口FSM和計算FSM。接口FSM使用具有明確timing要求的I/O信號。接口FSM的例子有總線控制器、握手FSM等。計算FSM不涉及具有明確定義的timing要求的信號。重要的是不要根據FSM的RTL編寫屬性。如果設計師誤解了需求或在編寫RTL時犯了錯誤,FSM將是錯誤的。

通常,接口FSM的規范來自協議文檔和波形圖。斷言屬性應來自原始規范。他們將確保FSM在時間段內正確采樣輸入信號,并在輸出時序規范內斷言響應信號。通常,計算FSM的規范來自控制流圖,這在工程文檔和標準規范中很常見。為了提高性能和/或簡化實現,流程圖可能會被劃分、扁平化、重新管道化成多個FSM。我們可以捕獲具有斷言屬性的流程圖行為創建了一個“可執行”規范。

斷言屬性可用于捕獲流程圖中的控制決策、狀態跳變和操作序列。在下面的示例中,流程圖來自原始規范。



結論

在覆蓋率驅動的驗證方法中,捕獲錯誤和衡量進度的能力同樣重要。幸運的是可以利用用斷言捕獲錯誤以及在設計中提供深入的結構覆蓋。通過使用覆蓋屬性和斷言庫,你可以以很少的增量努力完成這項工作。

最好的建議:在為設計開發斷言時考慮覆蓋范圍。這是在回歸環境中實現全面的錯誤檢測能力和結構覆蓋率的第一步。



審核編輯:劉清

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

    關注

    31

    文章

    5358

    瀏覽量

    120774
  • 數據傳輸
    +關注

    關注

    9

    文章

    1927

    瀏覽量

    64703
  • 計數器
    +關注

    關注

    32

    文章

    2259

    瀏覽量

    94794
  • SoC芯片
    +關注

    關注

    1

    文章

    615

    瀏覽量

    34966
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59872

原文標題:如何使用簡單的SystemVerilog斷言來驗證你的設計

文章出處:【微信號:數字芯片實驗室,微信公眾號:數字芯片實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SystemVerilog中的“const”類屬性

    SystemVerilog中可以屬性聲明為常量,即“只讀”。目的就是希望,別人可以讀但是不能修改它的值。
    發表于 11-29 10:25 ?2165次閱讀

    [啟芯公開課] SystemVerilog for Verification

    設計驗證相關的公開課!SystemVerilog作為IEEE-1800,VLSI設計、驗證和斷言屬性集中在一起,是數字超大規模集成電路設計和驗證領域最流行的語言。從2006年至今
    發表于 06-10 09:25

    如何將XY圖的屬性關閉程序后恢復至以前?

    如何將XY圖的屬性關閉程序后恢復至以前,我想實現的功能是:XY圖身設置兩個游標,程序運行中可任意添加游標,當關閉程序下次開啟時,仍為兩個游標。
    發表于 12-16 15:10

    如何將CAD文字標注變為ArcGIS屬性

    。同樣的步驟,我們再將文字導出成mif格式的文件,文件命名為“文字”。這里和導出多段線有點區別,首先是圖9那里,“對象類型”要選擇“文字”;設置界面處,我們需要點擊“數據”分頁,點擊“選擇屬性
    發表于 01-21 16:16

    如何將DRIVEDONE屬性傳播到我的mcs文件生成?

    我正在使用Kintex-7部分,由于某種原因(尚未完全研究),我必須將BITSTREAM.CONFIG.DRIVEDONE屬性設置為yes以便能夠位文件加載到FPGA中。現在我遇到了編程SPI PROM的問題 - 表明完成的引腳沒有變高。
    發表于 06-04 07:29

    SystemVerilog斷言手冊

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發表于 07-22 14:12 ?20次下載

    SystemVerilog斷言及其應用

    介紹SystemVerilog 斷言的概念、使用斷言的好處、斷言的分類、斷言的組成以及
    發表于 05-24 16:35 ?0次下載
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>斷言</b>及其應用

    基于比較可能度的屬性權重未知的多屬性決策方法

    圍繞多等級同時考慮優于、劣于、無差異和不確定等四種成對方案間關系的不同分布式偏好關系(DPR),提出一種基于其比較可能度的屬性權重未知的多屬性決策方法。首先,利用各等級的得分值分布
    發表于 11-29 11:23 ?0次下載

    中文專利屬性值對抽取技術及應用

    專利信息抽取是專利分析的基礎,屬性屬性值的識別與抽取是專利信息抽取所要解決的關鍵問題。目前,中文專利信息抽取領域針對屬性屬性值同步抽取
    發表于 12-01 16:58 ?2次下載

    一種統計屬性約簡的定義

    傳統的屬性約簡由于其時間復雜度和空間復雜度過高,幾乎無法應用到大規模的數據集中.隨機抽樣引入傳統的模糊粗糙集中,使得屬性約簡的效率大幅度提升.首先,統計下近似的基礎
    發表于 12-25 17:18 ?0次下載

    labview屬性節點教程,屬性節點有什么作用?

    控件的大部分屬性都可以通過屬性對話框ā行設置,對于未包括的屬性則需要通過屬性節點來編程操作了。屬性節點用于訪問對象的
    發表于 08-13 08:00 ?0次下載
    labview<b class='flag-5'>屬性</b>節點教程,<b class='flag-5'>屬性</b>節點有什么作用?

    如何訪問對象屬性

    JavaScript對象的屬性是無序的集合。每個鍵值對稱為一個屬性。對象屬性的鍵可以是字符串。屬性的值可以是任何值,例如字符串、數字、數組
    的頭像 發表于 12-07 09:34 ?1311次閱讀

    placeholder屬性的作用

    知道所期望的輸入格式或內容。在這篇文章中,我們討論placeholder屬性的具體作用以及它對用戶體驗的影響。 首先,placeholder屬性提供了對用戶輸入的預期格式或內容的提示。例如,
    的頭像 發表于 11-30 10:12 ?1205次閱讀

    placeholder屬性和value屬性的差別

    現代的Web設計和開發中,表單是至關重要的元素之一。與此同時,placeholder屬性和value屬性表單中扮演著重要的角色。本文
    的頭像 發表于 11-30 10:13 ?1848次閱讀

    mapgis如何進行屬性連接

    MapGIS是一種強大的GIS(地理信息系統)軟件,它提供了許多功能來處理和分析空間數據。MapGIS中,屬性連接是一種非常有用的功能,它可以兩個或多個地圖層中的屬性信息進行關聯和
    的頭像 發表于 02-25 10:59 ?1717次閱讀
    主站蜘蛛池模板: 操久久| 中文字幕在线一区二区在线| 97av在线视频| 扒开双腿疯狂进出爽爽爽| bt 电影天堂| 亚洲黄视频| 免费在线a视频| 福利在线看片| 激情丁香六月| aaaa级毛片| 婷婷色5月| 日本高清高色| 免费国产不卡午夜福在线观看 | 一区二区三区中文国产亚洲| 亚洲情欲网| 911国产自产精选| 黄色xxxx| 国产高清在线观看| 五月激情综合丁香色婷婷| 日本黄色大片网站| 韩国三级hd| 午夜影视在线视频观看免费| 欧美精品xxxxbbbb| 欧美黑人巨大xxx猛交| 日本免费一区二区三区视频| 亚洲综合天堂网| 奇米77| 日韩免费视频一区| 久久频这里精品99香蕉久网址| 成人a级特黄毛片| 日韩成人在线影院| 好爽好紧好大的免费视频国产| 久久精品免费在线观看| 四虎最新紧急更新地址| 美女视频黄a全部| 午夜影视网| 日本人的xxxxxxxxx69| 最新版天堂中文在线官网| 日本最色视频| 91久久夜色精品国产网站| 国产午夜久久影院|