Systemverilog赋值 - 逻辑数组到字节数组

adi*_*dir 1 system-verilog

我正在尝试分配logic l_data[31:0];byte data[];.

data = l_data;是不合法的SystemVerilog任务.怎么做到呢?

dav*_*_59 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);
Run Code Online (Sandbox Code Playgroud)

几个笔记:

  1. 小心使用byte,默认签名.
  2. _t为所有类型的基本名称添加了一个后缀,
  3. 我建议使用比我在这里使用的更有意义的类型名称.
  4. 比特流强制转换有一个特定的顺序来从左到右移动位.如果需要更复杂的位排序,请使用流操作符(第11.4.14节)