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

UCC2888,UCC3888,pdf(Off-line P
什么是CRC (Cyclic Redundancy Chec
C語言random函數(shù)偽隨機數(shù)產(chǎn)生
AUXILIARY POWER SUPPLY USING VIPer20
如何利用SystemVerilog仿真生成隨機數(shù)

解析Air780E模組LuatOS開發(fā)的隨機數(shù)(random) 示例篇

評論