在Verilog中创建可以存储实际值的数组

sit*_*ith 0 arrays verilog system-verilog

谁能告诉我如何创建一个可以real在 Verilog 中存储值的数组?我尝试了以下方法,但没有成功:

real [31:0] in1_table [0:256];

too*_*lic 5

一种方法是使用解包数组。改变:

real [31:0] in1_table [0:256];
Run Code Online (Sandbox Code Playgroud)

到:

real in1_table [31:0] [0:256];
Run Code Online (Sandbox Code Playgroud)

这对我来说适用于两个不同的模拟器:

module tb;

real in1_table [31:0] [0:256];

initial begin
    in1_table[0][0] = 5.666;
    in1_table[0][1] = 16.67;
    $display(in1_table[0][0]);
    $display(in1_table[0][1]);
end

endmodule
Run Code Online (Sandbox Code Playgroud)

输出:

5.666
16.67
Run Code Online (Sandbox Code Playgroud)

请参阅 IEEE Std 1800-2012,第 7.4 节“打包和非打包数组”。

来自“7.4.1 压缩数组”

压缩数组只能由单位数据类型(bit、logic、reg)、枚举类型以及递归的其他压缩数组和压缩结构组成。

我将此解释为real不允许使用压缩类型的数组。

这假设您想要一个多维实数数组(32x257 实数)。