- struct是有一组变量或常数组成的集合,可以作为一个整体进行操作,也可以操作其中一部分
- 将逻辑上相关的信号放在一起,比如总线协议
struct{
int a,b;
logic [7:0] opcode;
logic [23:0] address;
bit error;
}Instruction_Word
- 使用结构体的名字操作整个变量
<structure_name>.<variable_name>
Instruction_Word.address = 24'hF00000;
- 结构体默认是非填充的,使用关键字packed可以将结构体声明成填充的结构体,填充结构体将所有的数据元素存储在连续的单元内,结构体的第一个元素是矢量的最左侧域
//并行改串行,非填充改为填充
struct packed{
logic valid;
logic [7:0] tag;
logic [31:0] data;
}data_word
- 填充结构体可以通过变量名或部分矢量选择来使用结构体中的变量
data_word.tag = 8'hf0;
data_word [39:32] = 8'hf0;
data_word = '{1,8'hff,1024};//赋值操作