Arrays 在verilog中创建可存储实际值的数组

Arrays 在verilog中创建可存储实际值的数组,arrays,verilog,Arrays,Verilog,谁能告诉我如何创建一个数组,它可以在verilog中存储实际值? 我尝试了以下方法,但无效: real[31:0]在1_表[0:256]中一种方法是使用未打包的数组。更改: real [31:0] in1_table [0:256]; 致: 这对我来说适用于两种不同的模拟器: module tb; real in1_table [31:0] [0:256]; initial begin in1_table[0][0] = 5.666; in1_table[0][1] = 1

谁能告诉我如何创建一个数组,它可以在
verilog
中存储实际值? 我尝试了以下方法,但无效:


real[31:0]在1_表[0:256]中

一种方法是使用未打包的数组。更改:

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

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

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

/*

Output:

5.666
16.67

*/
参考IEEE标准1800-2012第7.4节“封装和非封装阵列”

来自“7.4.1压缩阵列”

压缩阵列只能由单位数据类型(位、, 逻辑、reg)、枚举类型和递归其他压缩数组和 填充结构

我认为这意味着不允许使用
real
类型的压缩数组


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

如果您想要一个32位实数,则需要使用shortreal,否则real为64位。对于实数,这是你仅有的两个选择。您编写的范围
[31:0]
被视为压缩数组范围,它仅对整数类型有效

仅仅说“它不工作”是没有帮助的。你收到错误消息了吗?那是什么?你有没有得到意想不到的结果?那是什么?
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

/*

Output:

5.666
16.67

*/