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