# 驗證 0 ###### tags: `system verilog` > 隨手筆記 [TOC] ## 驗證計畫的內容 主要分為三項: - `驗證功能` - `覆蓋率要求`: 程式碼覆蓋率 + 功能覆蓋率 - `測試案例的應用場景`:數據傳輸、命令處理、容錯處理 ## 驗證環境 :::info 驗證平台都環繞在DUT周圍,目的皆為: - 產生激勵 (Generate stimulus) - 獲取響應 (Capture response) - 檢查正確性 (Check for correctness) - 通過覆蓋率來評估驗證進度 (Measure progress through coverage matrix) ::: ### 驗證平台的屬性 - 可重用,易於修改 > `物件導向 (Object oriented programming)` - 分層的驗證平台,易於重複使用 > 扁平化的驗證平台難以修改和維護,因此分層的驗證平台`將程式碼分隔成獨立的功能模組`,將通用的功能放在一段程式碼中 - 迅速獲取信息並可快速達到較高的覆蓋率 > `隨機化驗證技術 (Randomize)` ### 分層的驗證平台 (5層) - 信號層 (Signal Layer) > DUT 與 TB 的訊號連接 使用 `interface` 連接 (而不是使用 wire 連接 module) - 命令層 (Command Layer) - 驅動器 (Driver) > 將命令 (send, read, write) 轉換為信號,驅動到 DUT - 接收器 (Receiver) > 將 DUT 的輸出信號轉換成命令 (monitor) - 斷言 (Assertions) > 斷言可以對時間周期的系統行為進行建模 (確認時序是否正確)  - 功能層 (Functional Layer) - 將事務級信息 (transactions) 轉換成命令驅動到 DUT (像是 DMA read operation) - 代理器 (Agent) > 暫存事務級信息,按照一定的順序發送這些信息 - 檢查器 (Checker) > 接收 DUT 的輸出數據,並與期望的結果進行比對 - 計分板 (Scoreboard) > 將比較的結果反饋在計分板中 - 應用層 (Scenario Layer) - 生成器 (Generator) - 生成期望的數據 - 定向測試 - 帶約束的隨機測試 - 測試層 (Test Layer) - 測試案例可以控制所有輸入到驗證環境中的所有內容 - 為輸入的激勵訊息設置約束 - 組合多個測試案例 - 功能覆蓋率 (Functional Coverage) > 利用功能覆蓋率的統計結果來調整約束,產生下一步的輸入激勵  ## 分層驗證平台的好處 - 更新驗證環境的`時間少` - 通過頂層文件可以很`容易配置`驗證平台 - 測試器件所有的有效的配置 - 選擇不同的設計配置進行回歸測試 - 帶約束的隨機化配置對象 - 提高`可重複性` --- ## Reference - ➜ []()
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up