上期答案
int myvalues [] = '{9,1,8,3,2,4,6},
int match_q[$];
match_q = myvalues.find with (item > 3);
struct表示不同数据类型的集合。例如:在下面的示例中,我们定义了一个名为instruction_s的struct,该struct由24位地址和8位操作码构成。
typedef struct {
bit [7:0] opcode;
bit [23:0] addr;
} instruction_s;
instruction_s current_instruction;
current_instruction.addr='h100;
可以直接引用instruction_s,也可以单独引用成员。存储struct所需的内存空间为成员之和,例如instruction_s需要32bit的空间。
union是一种数据类型,可以使用有且只有一种命名成员数据类型来访问它。与struct不同,不能访问所有成员数据类型。分配给union的内存将是成员数据类型所需的最大内存。如果要对诸如寄存器之类的硬件资源建模,该寄存器可以存储不同类型的值,则union很有用。例如:如果寄存器可以存储整数和实数值,则可以按以下方式定义union:
typedef union {
int data;
real f_data;
}state_u;
state_u reg_state;
reg_state.f_data = 'hFFFF_FFFF_FFFF_FFFF;
$display(" int_data =%h", reg_state.data);
在此示例中,state_u可以保存32位整数数据,也可以保存64位实数数据。因此,为reg_state分配的内存将为64bit(两种数据类型中的较大者)。由于所有成员数据类型都有共享内存,因此在上面的示例中,如果我们将64位值分配给reg_state.f_data,则我们也可以使用其他数据类型引用相同的32位。
你答对了吗
欢迎在留言区给出你的答案,正确答案将在下一期公布,或者到下面的文章获取答案