目錄
- 1 功能驗證
功能驗證
編輯在電子設計自動化中,功能驗證是驗證邏輯設計是否符合規范的任務。功能驗證試圖回答這樣的問題:這個建議的設計是否能達到預期的效果?這是一項復雜的任務,在大多數大型電子系統設計項目中需要花費大部分的時間和精力。功能驗證是更全面的設計驗證的一部分,除了功能驗證,它還考慮到非功能方面,如時序、布局和功率。功能驗證是非常困難的,因為即使是一個簡單的設計,也存在大量可能的測試案例。通常有超過1080個可能的測試來全面驗證一個設計--這個數字在一生中是不可能實現的。這項工作相當于程序驗證,而且是NP-hard甚至更難的--目前還沒有找到在所有情況下都能很好工作的解決方案。然而,它可以被許多方法所攻擊。它們中沒有一個是完美的,但在某些情況下每一個都是有幫助的。邏輯模擬在建立邏輯之前進行模擬。模擬加速將特殊用途的硬件應用于邏輯模擬問題。仿真建立一個使用可編程邏輯的系統的版本。這很昂貴,而且仍然比真正的硬件慢得多,但比模擬快幾個數量級。例如,它可以用來啟動處理器上的操作系統。形式驗證試圖從數學上證明某些要求(也可以用形式表示)得到滿足,或者證明某些不希望發生的行為(如死鎖)不會發生。智能驗證使用自動化來使測試平臺適應寄存器傳輸級代碼的變化。HDL特定版本的lint和其他啟發式方法被用來發現常見問題。基于仿真的驗證(也稱為"動態驗證")被廣泛用來模擬設計,因為這種方法很容易擴展。刺激物被提供來鍛煉HDL代碼中的每一行。通過提供有意義的場景來檢查給定的輸入,設計是否符合規范,從而建立一個測試平臺來驗證設計的功能。仿真環境通常由幾種類型的組件組成。生成器產生輸入向量,用于搜索意圖(規格)和實現(HDL代碼)之間存在的異常。這種類型的生成器利用了NP-complete類型的SAT求解器,計算成本很高。其他類型的生成器包括手動創建的向量、基于圖形的生成器(GBM)專有生成器。現代生成器創建了有向隨機和隨機刺激,這些刺激是由統計學驅動的,以驗證設計的隨機部分。隨機性對于在可用的輸入刺激的巨大空間中實現高分布是很重要的。為此,這些生成器的用戶故意對生成的測試的要求規定不足。生成器的作用是隨機地填補這一空白。這種機制允許生成器創建輸入,揭示用戶沒有直接搜索到的錯誤。生成器還將刺激物偏向于設計角落的情況,以進一步強調邏輯。偏向性和隨機性服務于不同的目標,它們之間存在著權衡,因此不同的生成器有不同的這些特性的組合。由于設計的輸入必須是有效的(合法的),許多目標(如偏置)應該保持,許多發生器使用約束滿足問題(CSP)技術來解決復雜的測試要求。
設計輸入的合法性和偏置武庫被建模了。基于模型的生成器使用這個模型為目標設計產生正確的刺激。驅動器將生成器產生的刺激轉化為被驗證設計的實際輸入。生成器在一個高度抽象的水平上創建輸入,即作為事務或匯編語言。驅動器將這種輸入轉換成實際的設計輸入,如設計的接口規范中所定義的。仿真器根據設計的當前狀態(觸發器的狀態)和注入的輸入,產生設計的輸出。仿真器有一個設計網表的描述。這個描述是通過將HDL合成為低門級的網表而產生的。監控器將設計的狀態和它的輸出轉換為事務抽象級別,因此它可以存儲在"記分牌"數據庫中,以便以后檢查。檢查器驗證"記分牌"的內容是否合法。有些情況下,除了輸入之外,生成器還創建了預期的結果。在這些情況下,檢查器必須驗證實際結果與預期結果是否一致。仲裁管理器共同管理上述所有的組件。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/167730/