谈一谈SystemVerilog的randomize

提到systermverilog,最常接触的就是随机,与随机紧密相关的函数就是randomize,但是实际上我们又对randomize知道多少呢?本章节我们就梳理一下randomize()的坑。

一些之前踩过的坑:https://www.cnblogs.com/xuqing125/p/15772001.html

从下面几个例子入手:

例子一:randomize的正常使用。

  • 基类bird有自己的随机变量:src/drc
  • 扩展类parr有单属于自己的随机变量:a/b
仿真结果

例子二:A = B

  • A = B;
  • 仅仅对A.randomize()
仿真结果
  • 基类的句柄A指向的是扩展类的对象B.
  • A.randomize(),从结果来看B(a/b)也进行了随机化.randomize()其实就是类似于virtual的function。

例子三:A= B,A.randomize() with {a ==2 ;};

解决方法:将基类句柄转换成扩展类的类型。

image.png

注意:这个在sequence中需要尤其注意,因为seq中涉及到随机化。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容