我正在尝试将logic l_data[31:0];
分配给byte data[];
。
data = l_data;
不是合法的SystemVerilog分配。怎么办呢?
答案 0 :(得分:5)
使用比特流强制转换(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
后缀