system verilog1 数组,for,foreach

代码



`timescale 1ns/1ps

module tb;
  int array1[0:7][0:3];
  int array2[8][4];
  initial begin
    for(int i=0;i<$size(array1);i++)
      for(int j=0;j<$size(array1[0]);j++)
        array1[i][j]=2*i+j;
    array2=array1;
    foreach(array1[i])
      foreach(array1[i][j])begin
        $display("\narray1[%d][%d]=%d",i,j,array1[i][j]);
        $display("\narray2[%d][%d]=%d",i,j,array2[i][j]);     
      end
  end
endmodule

terminal中的命令

vcs -R -sverilog type2.sv 

-sverilog vcs中的指令,以system verilog编译 -R 运行和编译指令

结果

array1[          0][          0]=          0

array2[          0][          0]=          0

array1[          0][          1]=          1

array2[          0][          1]=          1

array1[          0][          2]=          2

array2[          0][          2]=          2

array1[          0][          3]=          3

array2[          0][          3]=          3

将%d改为%0d

`timescale 1ns/1ps

module tb;
  int array1[0:7][0:3];
  int array2[8][4];
  initial begin
    for(int i=0;i<$size(array1);i++)
      for(int j=0;j<$size(array1[0]);j++)
        array1[i][j]=2*i+j;
    array2=array1;
    foreach(array1[i])
      foreach(array1[i][j])begin
        $display("\narray1[%0d][%0d]=%0d",i,j,array1[i][j]);
        $display("\narray2[%0d][%0d]=%0d",i,j,array2[i][j]);     
      end
  end
endmodule

array1[0][0]=0

array2[0][0]=0

array1[0][1]=1

array2[0][1]=1

array1[0][2]=2

array2[0][2]=2

array1[0][3]=3

array2[0][3]=3

 

你可能感兴趣的:(fpga,IC)