日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

碎碎念浅谈randomize()与pre_randomize()和post_randomize()

發布時間:2023/12/15 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 碎碎念浅谈randomize()与pre_randomize()和post_randomize() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于randomize()這個函數,發現我之前對它的理解有誤。對pre_randomize()和post_randomize()的理解更是糟糕,下面我們就來整理一下他們之間的關系。

在綠皮書的6.3.2中,對randomize()函數的描述如下:randomize()函數為類里面所有的rand和randc類型的隨機變量賦一個隨機值,并保證不違背所有有效約束。

在綠皮書的6.9中,對pre_randomize()和post_randomize()的描述如下:有時需要在調用randomize()之前或者之后立即執行一些操作,SystemVerilog可以使用兩個特殊的void類型的pre_randomize()和post_randomize()函數來完成這項功能。
也就是說在pre_randomize與post_randomize是在randomize的前后,并不參與solver的求解,而是在solver求解完以后對其進行隨機數的調整。
實際上,randomize()函數是自己去調用這兩個函數!!!!

案例分析:

randomize()會自己調用pre_randomize()和post_randomize()這兩個函數。
如果沒有定義pre_randomize()和post_randomize()這兩個函數,那么就可以認為這兩個函數是什么也不做的。
可以根據自身需要重寫pre_randomize()和post_randomize()這兩個函數。
這兒可能會想到,對這些在pre_randomize()中設置的變量,也可以在別的地方設置,比如在自己另寫的function_x中對該變量進行設置。但是這樣每次進行randomize()之前都要手動調用一次function_x,這樣是很不方便的,而且也不容易遺忘或出錯。

補充

slover...before 不能用randc的類型
randomize(src) 里面有src和drc兩個變量的結果。()里面是誰,就僅僅對誰進行進行隨機,剩下的盡采用默認值(但是也會進行約束求解),也就是randmize(src) + drc==default ->滿足所有的約束。

隨機只能產生0/1,所以可以在post_randomize()里面設置對隨后后的值設置x態等。
pre/post_randmize()其實并沒有做任何隨機的操作,只不過是在隨機的前后做一些function的操作而已,對隨機的結果進行調整。可以改變隨機的值。

上述例子進一步說明了,pre/post_randomize()并沒有參數隨機,就是在隨機前和隨機后,做了一些function的操作。

總結

以上是生活随笔為你收集整理的碎碎念浅谈randomize()与pre_randomize()和post_randomize()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。