SystemVerilog学习笔记2 ---《多维数组的遍历》

1. 一维数组遍历

  • 数组遍历一般使用foreach或者使用for循环
  • for和foreach都使用 begin … end 表示作用范围

1.1 foreach

 int array[3] = '{9, 5, 8};
 foreach(array[i])
       $display("array[%0d] = %d", i, array[i]);
  • foreach循环相当于从数组的宽度的左端点,向数组宽度的右端点循环。
  • int array[3]; 等价于 int array[0:2]; 即索引变量从0开始,遍历到2。
    在这里插入图片描述

1.2 for循环

  • 注 意 f o r 循 环 需 要 自 己 声 明 循 环 变 量 \color{red}{注意for循环需要自己声明循环变量} for
 int array[3] = '{9, 5, 8};
for(int i=0; i < $size(array); i++)
       $display("array[%0d] = %d", i, array[i]);

2. 多维数组的遍历

2.1 foreach

  • 注意循环变量为 [ i , j ] \color{red}{[i,j]} [i,j],而索引的时候为 [ i ] [ j ] \color{red}{[i] [j]} [i][j]
  • 会先遍历 j,然后遍历 i
int md[2][3] ='{'{0,1,2},{3,4,5}};
foreach(md[i,j])
    $display("md[%0d][%0d] = %0d", i,j,md[i][j]);

SystemVerilog学习笔记2 ---《多维数组的遍历》_第1张图片

2.2 for循环

int md[2][3] ='{'{0,1,2},{3,4,5}};
for(int i=0;i < $size(md); i++)
    for(int j=0; j < $size(md[i]); j++)
        $display("md[%0d][%0d] = %0d", i,j,md[i][j]);

你可能感兴趣的:(SystemVerilog,sv多维数组,sv中foreach)