返回介绍

12.3 随机变量

发布于 2020-09-09 22:55:50 字数 919 浏览 1201 评论 0 收藏 0

类变量可以使用rand和randc类型修饰符关键字声明成随机的。

在一个类中声明随机变量的语法如下:

class_property ::=           // 引用自附录A.1.8
    {property_qualifier} data_declaration

property_qualifier ::=
    rand
  | randc

语法 12-1 — 随机变量声明语法(摘录自附录A)

  • 求解器可以随机化任何integral类型的单一变量。
  • 数组可以声明成rand或randc,在这种情况下,数组的所有成员元素都被当作rand或randc看待。
  • 动态数组和联合数组可以使用rand或randc声明。数组中的所有元素都被随机化,并会重写先前的任何数据。如果数组元素是对象句柄,所有数组元素的值必须不等于null。我们可以约束单个的数组元素,在这种情况下索引表达式必须是一个文本常量。
  • 使用rand或randc声明的动态数组的尺寸也可以被约束。在这种情况下,数组应该根据尺寸约束被重新调整尺寸,并且会接着随机化所有的数组元素。数组尺寸约束使用尺寸方法进行声明。例如:
rand bit [7:0] len;
rand integer data[];
constraint db {data.size == len;}

变量len具有8位的宽度。随机化器会在8位的范围内(0到255)为len变量计算一个随机值,接着会随机化data数组的第一个len元素。

如果一个动态数组的尺寸没有被约束,那么randomize()会随机化数组中的所有元素。

  • 一个对象句柄可以使用rand声明,在这种情况下,该对象的所有变量和约束都被并发地求解。对象不能使用randc声明。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文