【发布时间】:2014-01-01 17:21:12
【问题描述】:
我正在尝试将logic l_data[31:0]; 分配给byte data[];。
data = l_data; 不是合法的 SystemVerilog 分配。怎么办?
【问题讨论】:
-
数据为 8 位 l_data 为 32 位宽。您想将 l_data 的哪些位分配给数据?
标签: system-verilog
我正在尝试将logic l_data[31:0]; 分配给byte data[];。
data = l_data; 不是合法的 SystemVerilog 分配。怎么办?
【问题讨论】:
标签: system-verilog
使用比特流转换(IEEE Std 1800-2012 LRM 的第 6.24.3 节)。您将需要为强制转换创建一个 typedef,但无论如何最好为所有变量声明使用 typedef。
typedef byte unsigned dynamic_byte_array_t[];
typedef logic fixed_logic_array_t[31:0];
dynamic_byte_array_t data;
fixed_logic_array_t l_data;
data = dynamic_byte_array_t'(l_data);
几个注意事项:
byte,默认是签名的。_t 后缀,【讨论】: