有關斷言和更新的驗證方法學的新近標準極大地方便了設計師創建、實現和監視斷言。斷言在形式分析、仿真和加速/模擬中普及的速度正在加快,因為用戶已經認識到讓斷言主動地監視RTL代碼中的錯誤可以獲得巨大的好處。
設計師可以利用完整的斷言驗證(ABV)方法在開發RTL時編寫斷言。然后用針對單個模塊的形式分析工具對這些斷言以及自動析取的斷言進行驗證,有時這一過程可能先于仿真數個月的時間。
在集成模塊或群集(cluster)級,作為仿真補充的形式分析將繼續發揮作用。在這一級別,仿真不僅有助于驗證斷言的正確性,而且可以驗證整個模塊或群集的功能覆蓋率。
而在全芯片或系統級,仿真、加速和模擬都是主選工具。在組成完整芯片的子模塊中使用的相同斷言可明顯帶來更多的好處。在這一級別,斷言可以提供更快的調試速度和更好的邊界案例曝光率,并有助于功能覆蓋率的提高。
在標準開發流程中采用ABV組件時,設計團隊將面臨諸多挑戰。以下是一些應對策略。
建議
. 專注于斷言語言的有效生產子集。一下“吃”得太多,只會增加出錯的機率。沒有理由要馬上精通整個斷言語言;逐步推進的方法可帶來巨大好處,如更容易的采納和更高的投資回報。
. 考慮使用庫。諸如開放驗證庫(OVL)和Incisive斷言庫(IAL)這樣的庫包含共同的組件和設計結構,因此非常方便啟用ABV。許多公司開始時都使用一些斷言庫元件集,并因此獲得巨大的回報。
. 將眼光放遠一點。在斷言方面做的工作應該應用于整個流程中,包括設計以及模塊、芯片和整個系統。例如,為形式分析編寫的斷言應該應用于仿真中和仿真后的加速和模擬。這樣做可以使整個方法更流暢、更具重復性,并更容易取得成功。
. 考慮到復用。針對設計中的公共接口,要考慮創建一個可參數化的可復用元件庫。要在本項目或今后的項目中不斷地復用這些庫。
. 在仿真中用覆蓋率彌補斷言。大多數斷言描述的是設計功能,沒有表達激勵對設計/斷言帶來的好處。編寫一些斷言并用作功能覆蓋率目標是有好處的。
圖:從模塊到全芯片或系統級的基于斷言的完整驗證流程。
不建議
. 花太多時間在操心使用哪種斷言語言方面。System Verilog斷言和特殊屬性語言(PSL)采用的都是普通語法,實際上功能相仿,但與硬件描述語言不同。這兩種斷言語言代表了全新的語言和語法,肯定會提高總的學習曲線。
. 偏好一種語言。事實上,斷言可能來自使用多種斷言語言的多個地方(如第三方驗證知識產權提供商、內部設計和驗證部門等)。
. 為設計的所有方面編寫斷言。專注于高風險的區域,如果時間允許審慎地增加更多的斷言。首先要把重點放在控制邏輯上。將白盒可視性做進設計中面向控制的部分,因為大部分缺陷在這里,因此具有的價值。
. 害怕使用簡單的VHDL或Verilog/SystemVerilog來生成更容易更熟悉的條件進行檢查而使問題簡單化。這樣做可以減少由于創建錯誤斷言而引起的風險。記住,這些代碼只用于仿真,不會被綜合。
. 消極等待引入斷言。斷言創建應該開始于設計開發過程中的早期階段。當設計師編寫RTL時,驗證工程師就應使用斷言,并在模塊級編寫附加斷言,同時考慮端到端事務處理,從而有效補充設計師的白盒斷言。