卢骏 · 2020年06月16日

sv的常数数组参数传递

systemverilog中,如果一个函数的参数为数组,那么在外部调用这个函数时,可以向这个数组参数,传递一个真正的数组,也可以通过 '{}方式,传递一个常量数组。这样,可以避免在外部定义一个数组,对数组进行赋值,然后进行传递。

格式为以下:

'{数组索引:值, 数组索引: 值, 数组索引: 值 ….}。

数组索引没有顺序要求。

如以下代码进行测试:
1.png

定义了2个函数,array_test,输入参数为大小为4的int类型的数组。

array_test_1,输入参数为大小为4的int类型的关联数组。

在initial中,分别调用array_test和array_test_1函数,传入常量数组。

打印结果为:
2.png

这里要注意,对于array_test函数,因为参数是大小为4的int类型的数组,所以调用array_test函数时,要传递一个大小为4的int类型的数组。

如果,以下面的代码调用:
3.png

就会出现如下错误,提示,参数不匹配。
4.png

对于array_test_1函数,因为输入参数为关联数组,因此在调用array_test_1函数时,可以不用传递整个数组,只传递数组的一部分,其余没有传递的部分,均被当成0处理。所以在打印结果中,数组的第0项,第1项,第2项的值,均为0,只有第3项为10,和传递的参数一致。

更多相关阅读

uvm中直接操作RTL信号
irun工具检测zero-delay组合逻辑
irun增量编译bind操作遇到的问题


原文首发于骏的世界博客
作者:卢骏
更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

推荐阅读
关注数
19607
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息