根據(jù)對(duì)randc的了解和思考,分享一種基于testcase顆粒度的"周期性"隨機(jī)控制思路(off-line cyclic random)。并從編碼實(shí)現(xiàn)上,驗(yàn)證了該思路的可行性。
randc背景
在systemverilog中,隨機(jī)循環(huán)變量(randc),在一次仿真中多次調(diào)用randomize,會(huì)隨機(jī)循環(huán)遍歷其聲明范圍的所有值。隨機(jī)序列中的值都被取到后,產(chǎn)生一個(gè)新的隨機(jī)序列。
randc修飾的變量存在一些限制,如對(duì)變量類型的限制,不能參與solve before。而且randc只能是在一次仿真中具有“周期性”隨機(jī)的特性,此前用例的隨機(jī)結(jié)果不會(huì)影響當(dāng)前仿真的周期性取值序列。也可以認(rèn)為randc是一種on-line的周期性隨機(jī)。
off-line cyclic random
驗(yàn)證用例集中的testcase多次仿真時(shí),當(dāng)前testcase的隨機(jī)過程無法知道此前用例的隨機(jī)狀態(tài)和結(jié)果。因此有一定概率會(huì)出現(xiàn)隨機(jī)變量在多次仿真時(shí)取到相同的值。
和randc類似,有沒有可能off-line的周期性隨機(jī):隨機(jī)變量在testcase的多次仿真之間具有周期性。
off-line cyclic random:隨機(jī)變量的隨機(jī)取值不會(huì)和已有用例的隨機(jī)結(jié)果重復(fù),并能夠"周期性"取值。已有的隨機(jī)結(jié)果可以是已有用例的隨機(jī)結(jié)果,也可以是預(yù)指定的取值集合。
編碼實(shí)踐
為驗(yàn)證上述思路的可行性,并且還要降低對(duì)已有的隨機(jī)激勵(lì)結(jié)構(gòu)的影響,開發(fā)一個(gè)randc_plugin的package。使用時(shí)需要兩步驟適配:
已有的隨機(jī)激勵(lì)class繼承base_randc_plugin;
使用參數(shù)宏添加隨機(jī)參數(shù);
一個(gè)簡單的demo如下:
參數(shù)宏randc_int_registry表示注冊一個(gè)需要randc based testcase的int型變量,適用于systemverilog中的int,bit和enum類型。數(shù)組和其他復(fù)雜類型的注冊宏待后續(xù)補(bǔ)充完整。
on-line multi randomize
即使是使用rand修飾的隨機(jī)變量,使用randc_int_registry注冊后,仍具有randc的性質(zhì),而且還可以參與solve before,并且原有的constraint不受影響。
測試函數(shù)如下:
匯總得到的隨機(jī)結(jié)果如下:
off-linemulti randomize
測試函數(shù)如下:
將用例仿真10次后,匯總的隨機(jī)結(jié)果如下:
由于每個(gè)領(lǐng)域的驗(yàn)證各具特色,這里僅提供一種隨機(jī)控制的思路和編碼實(shí)現(xiàn)嘗試,randc_plugin還在持續(xù)完善中。
審核編輯:劉清
-
編碼器
+關(guān)注
關(guān)注
45文章
3639瀏覽量
134441
原文標(biāo)題:參數(shù)隨機(jī)策略:從 randc 到 off-line cyclic random
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論