對于要驗證的 DUT 的每個功能特性,所有可能的激勵生成都是通過測試用例并在記分牌、模型、檢查器和斷言的幫助下開發的。
大多數情況下,定義功能覆蓋目標是在測試計劃準備過程中完成的。對于要驗證的被測設備 (DUT) 的每個功能特性,所有可能的激勵生成都是通過測試用例并在記分牌、模型、檢查器和斷言的幫助下開發的。我們通過檢查對該刺激的反應來確認 DUT 的正確性。為了確保我們創建了足夠的輸入場景和 DUT 響應組合,我們根據覆蓋組、覆蓋點和斷言覆蓋范圍為每個特征定義了覆蓋目標,這讓我們對特定功能的驗證程度充滿信心。
DUT RTL 將塊添加到從覆蓋類分數中定義的變量中,并在具有不同值命中的交叉覆蓋組中使用這些變量將確認輸入事務是否遵循指定的設計輸出路徑。出于幾個原因,這非常重要。首先,功能驗證記分牌確實會進行端到端交易檢查,但它不會確認 DUT 流量路徑激勵是否遵循。其次,單個覆蓋組或UVM RALRegmodel功能覆蓋或斷言覆蓋將有助于單個刺激覆蓋,但結合使用將確保功能路徑的正確性。讓我們詳細了解如何使用功能覆蓋來確認從輸入到輸出端口遍歷所需數據和控制路徑的流量。
執行流量可追溯性
很多時候,僅涵蓋單個特征和交叉特征是不夠的。通過不同數據塊、各種控制邏輯和不同 DUT 配置的所有可能組合,檢查輸入接口的流量是否已到達其他端的輸出接口,這是一個基本要求。
在控制塊接口上具有用于 DUT 輸入、輸出接口的單獨覆蓋組,regmodel 自動生成的功能覆蓋范圍可能無法保證基于寄存器配置。輸入事務、數據包或命令已通過所需的數據塊和控制路徑,或者已繞過典型的控制塊。
使用交叉覆蓋,在覆蓋類之外定義的變量上,并用于存儲來自各種寫入方法的事務,可以確保這些變量命中不同的值并跟蹤設計的DUT路徑。覆蓋組也將在覆蓋類之外定義。
場景
讓我們考慮一個場景,如圖 1 所示。在高度配置和輸入的DUT中。..數據包可以通過選擇的數據路徑和控制路徑塊以及基于寄存器配置的選定數據包路由器端口路由到輸出端口。使用字段 RT=2‘b01 寄存器CTRNL_RUT決定從輸入端口 1 到 DataPath_blk1 的數據包路徑,使用 Cntrl_plan1、交換機 1(圖中未顯示)和路由器端口 1,最后到輸出端口 1。但是,寄存器CTRNL_RUT。RT=2’b10 將使用 Cntrl_plan2 更改通過DataPath_blk2和路由器端口 2 的新傳入數據包的路由。
在這種情況下,為datapath_block1定義的覆蓋組,控制路徑即Cntrl_plane1和寄存器字段RT將單獨覆蓋激勵值。但是,如果變量是在覆蓋類的范圍之外定義的,保存來自這些接口的信號值,并且如果在具有相關值的交叉覆蓋中使用,則可以確認數據包已遍歷正確的路徑并實現數據包可追溯性。
圖1:流量跟蹤獲取每個點的信息
覆蓋實施
在測試平臺中,環境類通常具有實例化的所有接口代理、功能覆蓋率和記分板。IO 和控制接口監視器的分析端口連接到功能覆蓋類的導出,以獲取接口數據包和事務。所需的資源,如 regmodel,將使用uvm_condig_db構造到覆蓋類來設置不同的配置對象。覆蓋實現明智,定義覆蓋類之外的變量、數據包存儲元素,并使用這些元素來復制重要接口信號、控制信號和數據包字段的值。在覆蓋類之外定義的這些變量將在交叉覆蓋中使用。
如上圖 1 所示,在覆蓋類之外定義的變量將用于保存數據包 ID 等信息,DataPath_blk1有效。對于控制平面,保存就緒、狀態、目標 ID、路由通道號等信息。注冊字段(如CTRNL_RUT)的值。RT 值可以與這些變量交叉,以確保如果 RT 的字段值為 01,則Datapath_blk1字段和控制計劃信號具有感興趣的值。使用上述方法實現功能覆蓋將很有幫助,尤其是在塊和集群級別驗證的情況下。覆蓋類的獨立實現探索了具有類似 DUT 接口的項目之間的可重用性選項。
寄存器配置信息也可以通過接口接收,但同樣需要解碼地址和字段,因此使用 regmodel 將是有意義的。Regmodel 帶有豐富的 API 集和默認序列,用于執行所有寄存器和字段及其屬性?;赗egmodel的自動生成的功能覆蓋率可以單獨處理。
嵌入式覆蓋組存在已知限制。我們不能使用同一覆蓋組的多個實例作為數據類型,因此在功能覆蓋類之外定義覆蓋組將有助于定義覆蓋組數組,特別是如果大多數接口屬于同一類型,這是網絡域 DUT 的常見情況,這將有所幫助。具有多個實例的單個覆蓋組可以在每個覆蓋類write_《》方法中使用不同的索引進行采樣。
代碼示例
在上面的例子中,covergroup 和變量存儲來自 write 方法的交易和接口信號,并在類外聲明。這將允許跨覆蓋組使用這些變量。
結論
基于將驗證事務或數據包的重要接口信號,可以定義覆蓋類范圍之外的全局變量并用于復制這些信號。每個接口信號也可以做同樣的事情,控制信號和那些許多全局變量可以在一個覆蓋組中使用,這將定義這些變量的交叉覆蓋。通過這種方式,您可以確認從輸入到輸出端口的流量遍歷所需的數據和控制路徑。
審核編輯:郭婷
-
嵌入式
+關注
關注
5068文章
19019瀏覽量
303271 -
寄存器
+關注
關注
31文章
5317瀏覽量
120006 -
路由器
+關注
關注
22文章
3707瀏覽量
113541
發布評論請先 登錄
相關推薦
評論