天天看點

SV結構體

  • 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
           
SV結構體
  • 填充結構體可以通過變量名或部分矢量選擇來使用結構體中的變量
data_word.tag = 8'hf0;
data_word [39:32] = 8'hf0;
data_word = '{1,8'hff,1024};//指派操作
           

繼續閱讀