斷言(assertion)的簡介

2021-06-13 21:10:43 字數 1506 閱讀 5081

最常用的斷言定義方法是開放驗證庫ovl提供的宣稱性斷言。ovl是基於verilog的開放原始碼的斷言監督元件庫,以相同方式在rtl中定義靜態和動態斷言;提供統一的訊息報告機制;易於定製;提供一致安全級別,發生嚴重錯誤時可停止模擬。由於原始碼開放,能夠根據應用進行定製,因此ovl很吸引人。ovl使用斷言模組庫,因此在設計中必須例項化斷言。目前它還無法定義過程性斷言。

過程性斷言

與例項化斷言模組相比,用過程性語句定義斷言有時更方便。過程性斷言在verilog的always模組中非常有用。rtl編碼時,宣稱性和過程性斷言都是很好的捕獲設計意圖的方式。如果在這個階段沒有定義斷言,有關設計意圖的知識就有可能流失,因為不可能有人返回來插入這些斷言。

形式特徵語言

形式特徵語言目的在於:用最少的代價指定設計的特徵。    它們擅長建立複雜的時變表示式,通過使用規則表示式,用很少的**指定複雜行為。已經存在許多年,但仍未進入主流設計,如sugar,ova。在設計的所有層次及專案各個階段,形式特徵語言都很有用。系統工程師能用其指定設計的高階特徵。這些高階特徵斷言可用於基於ip的soc設計驗證,無需驗證工程師理解設計的細節;rtl設計師可根據它們定義設計的低階特徵。與過程性斷言相比,形式特徵語言更通用,沒有針對任何特定的語言。目前用形式特徵語言描述斷言的工具把定義好的斷言放在單獨檔案,這樣形式工具和模擬器能夠單獨處理。

偽注釋命令

偽注釋把斷言埋在注釋中,不干擾verilog語法,不用對模擬器進行任何修改。形式驗證工具用專門的語法分析程式讀取注釋。並為每個斷言產生等價 rtl描述, 便於用標準邏輯模擬器模擬。這非常有用,因為它在模擬時自動收集斷言覆蓋率、建立設計邏輯活動的資料庫,並以簡潔的方式展現這些活動。

2.3 仍需完善的方面

成功應用斷言驗證,仍需下列技術改善成熟:模擬引擎、分析引擎、斷言能力、統一語言。

模擬引擎直接執行斷言檢查

斷言是關於設計要素如訊號、暫存器、業務等的描述。模擬時檢查斷言需要訪問這些要素,多數情況下每週期都要訪問。為了保證足夠的模擬吞吐量,就要最小化訪問開銷。但現在使用pli監督成百上千的斷言,大大降低模擬效能。為了最小化訪問開銷,要求模擬引擎能直接檢查斷言。 

多個形式引擎且與模擬引擎緊密結合

設計的斷言型別各異、難易並存,不可能用單個形式引擎證明搜尋。應當有多個形式引擎用於形式分析,提高特徵檢查效率。為了形式分析效率最大化,形式分析引擎和模擬引擎要緊密配合,有效探索設計的狀態空間。尤其是,能夠生成並證實能引起某個特徵或假設衝突的激勵,在除錯設計錯誤時非常必要。另外,形式分析需要大容量來發現大規模設計的錯誤,大容量指設計規模和用狀態深度表示的特徵複雜度。整合多個形式引擎和模擬引擎,可以有效搜尋複雜設計的邊角邏輯錯誤。

斷言的綜合能力

以前,**的唯一價值是效能。不像模擬,**不能讓測試基準和監督器監測報告**器中的邏輯活動。但現在斷言改變了這種情況。利用軟硬體有效實現的斷言,能在保持**效能的同時,提供可觀察性、改善**的除錯能力。但在**中運用斷言的前提是斷言是可綜合的。把斷言寫進設計並綜合到fpga,提高了設計的可觀察性,使設計師能夠監測結果,一旦有斷言衝突就報告。因此當設計放置在快速執行的**環境中,就能大大幫助設計師找出設計中殘留錯誤。

SV 使用斷言(Assertion)的優點

朋友們,這次我決定寫關於斷言的文章。我個人認為斷言是非常方便和非常有用的資產,當我們談 能驗證時,即在給定的rtl設計中發現缺陷 確保驗證完整性。它是一種令人驚嘆的驗證技術,用較少的 提供了如此多的好處。如果你閱讀了我之前關於斷言的文章 關於斷言的基礎知識 我們在這裡討論了乙個斷言示例,並與相應的v...

Visual C 中的斷言

斷言語句指定在程式的某些特定點應為真的條件。如果該條件不為真,則斷言失敗,中斷程式的執行,並顯示 斷言失敗 對話方塊。visual c 支援基於下列構造的斷言語句 mfc 程式的 mfc 斷言。使用 atl 的程式的 atlassert。使用 c 執行時庫的程式的 crt 斷言。其他 c c 程式的...

assert 斷言的用法

程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用。這個概念可能不大好理解,想想vc下,除錯時有個選項,乙個是debug,乙個是release assert 表示式 的意思是 當表示式為真時,程式繼續執行,如果表達市為假,那程式就會...