如果没有它在systemverilog中进行初始化,变量如何决定它的价值?

时间:2017-11-30 08:36:50

标签: system-verilog

现在我试图挖掘systemverilog,如下所示

denaliCdn_ahbTransaction burst1;

task sendTransfers;
      
burst1= new;       
burst1.Direction = DENALI_CDN_AHB_DIRECTION_WRITE;
burst1.FirstAddress = 32'h4020;//16416 M3 and M0 to S1
burst1.Kind = DENALI_CDN_AHB_BURSTKIND_INCR4;
burst1.Size = DENALI_CDN_AHB_TRANSFERSIZE_HALFWORD;
burst1.Data = new [8];

foreach (burst1.Data[ii])
burst1.Data[ii] = ii;

void'(activeMaster1.transAdd(burst1,0));
....
endtask

特别是,从这里开始,如何在没有初始化的情况下决定它的价值?

foreach (burst1.Data[ii])
burst1.Data[ii] = ii;

如果没有它在systemverilog中进行初始化,如何确定变量的值?

1 个答案:

答案 0 :(得分:2)

您的问题有一般性答案和具体答案。

一般的答案是System-Verilog中的所有类型都初始化为特定值:

int    0
real   0.0
string ""
logic  1'bx

但是,您问题的具体答案是您明确指出的代码

foreach (burst1.Data[ii])
  burst1.Data[ii] = ii;

实际上是在进行初始化而不是依赖它。动态数组burst1.data由行

中的8个元素构成
burst1.Data = new [8];

该行

foreach (burst1.Data[ii])

迭代该数组,循环8次,每个元素一次。变量ii获取数组中每个元素的索引值,即0到7.行

  burst1.Data[ii] = ii;

将数组的元素ii设置为值ii,因此初始化数组。