在開發和使用驗證IP中都發揮了作用,我認為交易類是VIP中最重要的組成部分。事務類的質量定義了 VIP 的質量。無論是UVM還是任何其他方法,決定交易類結構都需要充分的規劃,因為它會影響整個VIP架構和驗證環境。
讓我列出一些我認為相關的準則:
協議的所有變體都應在事務類中定義。這使得事務類可用于生成各種可能的激勵(同時驅動DUT)。然后,監視器的總線功能模型還能夠從 DUT 接口中提取信息并填充事務類的相關字段。特別是對于總線協議,我們應該在事務類中具有隨機屬性,不僅用于信號值,還用于所有可能的延遲。這將使生成器能夠使用約束隨機生成來模擬不同的速度,并在交易中創建不同的延遲。然后,BFM 可以使用事務類中嵌入的信息,而不是自行生成任何信息。
分層與扁平化事務模型:扁平化事務易于維護,并且更容易添加新約束。但是,當協議很復雜并且需要在程序上隨機化字段時,最好讓父類實例化子類對象數組。
在下面的示例中,AXI 突發類實例化特定于突發的每個節拍的數據類隊列。生成突發字段后,將在突發的 post randomize() 方法中生成數據字段。如果此事務模型被平展,則axi_data類的所有字段都將是axi_burst類中的數組。這里的缺點是什么?如果必須生成隨機突發,則所有數組都將并行生成。如果您有復雜的約束,這可能會導致額外的性能開銷。
配置信息應該可以從事務類中訪問。任何可重用的 VIP 都必須是可配置的,并且通常具有與之關聯的配置描述符。不同的交易需要根據VIP的配置生成信息。因此,通過分層選項 (VMM) 或資源/配置數據庫 (UVM) 將 VIP 配置句柄作為引用傳遞給事務。
提供一組豐富的實用程序方法:UVM 提供了一組預定義的宏,這些宏定義了事務中的復制、比較、顯示等實用程序方法。特別是對于驗證IP中使用的事務,與要驗證的總線協議相關的其他實用程序方法可能非常有用。這可用于 VIP 的不同組件。在下面的AXI示例中,方法get_trans_addr_by_idx()計算并提供“數據節拍”的地址,用戶不必擔心“突發”是包裝型、固定型還是增量型。類似地,你可以有一個 get_data() 方法,它可以提供一個字節隊列以及相應的數據。因此,用戶無需在其記分牌中單獨計算此信息。
我們可以進一步完善這些。最后,重要的是要知道構建有效的事務模型將產生高效的驗證IP。在這里,我放下了我的想法。根據要驗證的協議和所涉及的復雜性,不同的人可能希望以不同的方式構建他們的交易類。但是,我相信上述準則可以納入當今使用的大多數協議中。希望這對您有用,我絕對有興趣知道您對這個主題的看法。
審核編輯:郭婷
-
IP
+關注
關注
5文章
1709瀏覽量
149575 -
UVM
+關注
關注
0文章
182瀏覽量
19179 -
AXI
+關注
關注
1文章
127瀏覽量
16631
發布評論請先 登錄
相關推薦
評論