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