返回介绍

11.18 常量类属性

发布于 2020-09-09 22:55:49 字数 737 浏览 1161 评论 0 收藏 0

与任何其它SystemVerilog变量一样,类属性可以通过const声明成只读的。然而,由于类属性是动态的对象,类属性允许两种形式的只读变量:全局常量和实例常量。

全局常量类属性是那些在声明中包含了初始值得常量类属性。它们与其它的const变量类似,也就是它们不能在除声明之外的其它地方赋值。

class Jumbo_Packet;
    const int max_size = 9 * 1024; // 全局常量
    byte payload[];

    function new(int size);
        payload = new[size > max_size ? max_size : size];
    endfunction
endclass

实例常量在声明中不包含初始值,仅包含const限定符。这种类型的常量可以在运行时赋一个值,但赋值只能在对应的类构造器中完成一次。

class Big_Packet;
    const int size; // 实例常量
    byte payload[];

    function new();
        size = $random % 4096; // 在new中完成一次赋值 -> 正确
        payload = new[size];
    endfunction
endclass

典型情况下,全局常量还被声明成static,因为它们对于类的所有实例都是相同的。然而,一个实例常量不能声明成static,因为它们在构造器不接受所有的赋值。

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

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

发布评论

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