首先看下下面的这个示例:
module PU;
int A[2:0][3:0][4:0], B[2:0][3:0][4:0], C[5:0][4:0];
initial
begin
A[0][2][4] = 1024; //row 0, column 2, element #4
//display index #4 (i.e., 5th element)
$display("A[0][2][4]=",A[0][2][4]);
//display 5 elements of row 0, column 2
$display("A[0][2]=",A[0][2]);
//display row 0 (4 columns; 5 elements each)
$display("A[0]=",A[0]);
//display 3 rows * 4 columns of 5 elements each
$display("A=",A);
$display("
");
B[1][1][1]=512; //row 1; column 1; element #1
// assign a subarray composed of fve ints
A[2][3] = B[1][1];
//display 5 elements of row 2, column 3
$display("A[2][3]=",A[2][3]);
B[0][0][0]=128; //Assign only to the last unpacked element
A[1] = B[0];
$display("
");
$display("A[1]=",A[1]); //display row 1 (4 columns; 5
elements each)
C[5][4]=64;
A[0][1] = C[5];
$display("
");
$display("C[5]=",C[5]);
$display("A[0][1]=",A[0][1]);
end
endmodule
仿真log:
A[0][2][4]= 1024 //index #4 (i.e., 5th element)
A[0][2]='{1024, 0, 0, 0, 0} //5 elements of row 0, column 2
A[0]='{'{0, 0, 0, 0, 0}, '{1024, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}}
//4 columns of row 0 with value assigned to column 2, element #4 (5th position)
A='{'{'{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}}, '{'{0, 0, 0, 0,
0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}}, '{'{0, 0, 0, 0, 0}, '{1024, 0, 0,
0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}}}
//Entire 3 rows*4 columns (12 entries – 5 elements each with value assigned to
column 2, element #5)
A[2][3]='{0, 0, 0, 512, 0} // display 5 elements of row 2, column 3
A[1]='{'{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 0}, '{0, 0, 0, 0, 128}}
// display row 1 (4 columns; 5 elements each)
C[5]='{64, 0, 0, 0, 0} //Row 5, 5 elements with index 4 assigned
A[0][1]='{64, 0, 0, 0, 0} //Row 0, column 1 of 5 elements
V C S S i m u l a t i o n R e p o r t
Packed和Unpacked数组作为子程序的参数
数组可以作为参数传递给子程序,当数组作为值传递给子程序时,会将这个数组复制一份传递给子程序。
task trial (int a[3:1][3:1]); //’a’ is a two-dimensional array
//(2-D unpacked)
上面是一个SystemVerilog task声明的示例,该task会将一个2维unpacked数组作为参数值传递。
int b[3:1][3:1]; // OK: same type, dimension, and size
int b[1:3][0:2]; // OK: same type, dimension, & size
// (different ranges)
logic b[3:1][3:1]; // ERROR: incompatible element type
// (logic vs. int)
event b[3:1][3:1]; // ERROR: incompatible type (event
vs. int)
int b[3:1]; // ERROR: incompatible number of dimensions
int b[3:1][4:1]; // ERROR: incompatible size (3 vs. 4)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Verilog
+关注
关注
29文章
1367浏览量
112430 -
数组
+关注
关注
1文章
420浏览量
26738
原文标题:SystemVerilog中数组的赋值、索引和切片
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
matlab appdesigner 表格组件赋值问题,求助
如上图所示,我在用matlab2021Ra APP模块进行编程的时候,想在表格中调入自己编写的结构数组,我从网上AI了一个程序语句,看着没问题,但是就是给表格赋值不了,还请各位大神帮忙看一下这个是怎么回事,我是初学者,请各位帮
发表于 07-12 11:45
在testbench中如何使用阻塞赋值和非阻塞赋值
本文详细阐述了在一个testbench中,应该如何使用阻塞赋值与非阻塞赋值。首先说结论,建议在testbench中,对时钟信号(包括分频时钟)使用阻塞

FIB聚焦离子束切片分析
FIB(聚焦离子束)切片分析作为一种前沿的材料表征技术,凭借其高精度和多维度的分析能力,在材料科学、电子器件研究以及纳米技术领域扮演着至关重要的角色。它通过离子束对材料表面进行刻蚀,形成极薄的切片

创建唯一索引的SQL命令和技巧
在创建唯一索引时,以下是一些SQL命令和技巧,可以帮助优化性能: 使用合适的索引类型:对于需要保证唯一性的列,使用UNIQUE索引来避免重复数据的插入。 这可以确保列中的值是唯一的,同
Labivew 实现鼠标在数组中选中元素时,精准的显示所在位置的行、列值方法
在项目开发中,遇到一个布尔的二维数组输入控件,选中数组元素并索引出行列的操作,试过其他大佬的方法,不是特别精准,,尝试一下还可以,分享给需要的朋友
*附件:选中二维
发表于 12-21 18:07
什么是半导体芯片的失效切片分析?
芯片切片分析技术芯片切片分析是一种在半导体、电子显微学和材料科学等领域广泛应用的技术。通过将芯片切成薄片,研究人员可以直接观察芯片内部的微观结构,如晶体管、电路布线等,从而深入研究芯片的内部结构

数组名之间可以直接赋值吗
数组之间的赋值能不能直接使用等于号?比如这样的代码。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
指针数组和二维数组有没有区别
指针数组和二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
labview按行读取二维数组之后再按读取顺序重新组成二维数组如何实现?
labview用了index Array按索引一行行读取二维数组之后想再按读取顺序重新组成一个二维数组如何实现,即第一次读取的作为第一行,第二次读取的作为第二行以此类推
发表于 10-25 21:06
MATLAB中的矩阵索引
对矩阵进行索引是从矩阵中选择或修改部分元素的一种方式。MATLAB 有几种索引样式,它们不仅功能强大、灵活,而且可读性强、表现力强。矩阵是 MATLAB 用来组织和分析数据的一个核心组件,索引是以可理解的方式有效操作矩阵的关键。

labview字符串数组转化为数值数组
在LabVIEW中,将字符串数组转换为数值数组是一项常见的任务,尤其是在处理数据采集、信号处理或用户输入时。 1. 理解LabVIEW的数据类型 在开始之前,了解LabVIEW中的数据
飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之数组
起来,其中每个成员之间使用空格隔离。另一种定义方式如下所示,每个成员单独赋值:Arr[0]=a0Arr[1]=a1Arr[2]=a2…Arr[n]=an2、数组成员使用可以将每个成员当成一个变量来使
发表于 08-30 09:25
评论