返回介绍

10.4.3 缺省参数值

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

为了处理一些共用的情况或者考虑一些不用的参数,SystemVerilog允许子例程声明为每一个单一参数指定一个缺省值。

在一个子例程中声明一个缺省参数的语法如下:

subroutine([direction] [type] argument = default_value);

可选的direction可以是input、inout、或ref(不能指定输出端口的缺省值)。

default_value是一个表达式。每次子例程被调用的时候,这个表达式会在调用者的作用范围内计算。表达式的元素必须在子例程的作用范围内可见,并且,如果使用的话,也需要在调用者的作用范围内可见。如果没有使用缺省值,表达式不需要被计算并且不需要在调用者的作用范围内可见。注意,缺省值仅允许使用ANSI风格的声明。

当调用子例程的时候,具有缺省值得参数可以从调用中忽略并且编译器应该插入它们对应的值。未指定的参数(空参数)可以用作缺省参数的占位符,这就允许使用非连续的缺省参数。如果一个未指定的参数被用于一个没有缺省值的参数,软件工具会发布一个编译器错误。

task read(int j=0, int k, int data=1);
    ...
endtask;

这个例子声明了一个任务,read(),它具有两个缺省参数,jdata。接着这个任务就可以使用不同的缺省参数调用:

read( , 5);      // 等价于read(0, 5, 1);
read(2, 5);      // 等价于read(2, 5, 1);
read( , 5,  );   // 等价于read(0, 5, 1);
read( , 5, 7);   // 等价于read(0, 5, 7);
read(1, 5, 2);   // 等价于read(1, 5, 2);
read();          // 错误;k没有缺省值

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

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

发布评论

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