返回介绍

5.3 常量

发布于 2020-09-09 22:55:46 字数 941 浏览 908 评论 0 收藏 0

常量是永远也不会改变的命名数据变量。SystemVerilog中有三种类型的常量,它们分别使用关键字localparam、specparam和const声明。所有这三种类型的常量都使用一个文本值来初始化。

localparam byte colon1 = ":";
specparam int delay = 10; // specparams用来指定块
const logic flag = 1;

参数或本地参数只能被设置成一个文本值的表达式、参数或本地参数、genvar、枚举名字、或者是这些类型的数据的常量函数。其中不允许使用层次化的名字。

specparam还可以被设置为包含一个或多个specparam的表达式。

使用const关键字声明的静态常量只能被设置为一个文本值的表达式、参数、本地参数、genvar、枚举名字、这些类型的常量函数、或者其它常量。参数、本地参数或常量函数可以具有层次化的名字,因为使用const关键字声明的常量是在确立之后计算。使用const关键字声明的自动常量可以被设置为任意表达式,只要这个表达式在没有const关键字时也是合法的。

const logic option = a.b.c;

一个常量表达式包含文本值以及其它的命名常量。

一个类的实例(一个对象句柄)也可以使用const关键字声明。

const class_name object = new(5,3);

这就意味着对象的行为就象一个不能被写入的变量。new方法的自变量必须是一个常量表达式。对象的成员可以被写入(除了使用const关键字声明的成员之外)。

SystemVerilog对parameter和localparam常量声明的增强将在第二十一章详细描述。SystemVerilog没有改变specparam常量声明。const常量与localparam常量的区别在于localparam必须在确立过程中设置,而const常量则在仿真过程中设置,例如在一个自动任务中。

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

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

发布评论

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