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