我正在寫一組使用uvm_reg類的註冊模型。單獨的寄存器大小是8位。創建寄存器塊來包含那些寄存器:註冊抽象層差異訪問類型
class my_reg_block extends uvm_reg_block;
my_byte_reg reg_00;
my_byte_reg reg_01;
my_byte_reg reg_10;
my_byte_reg reg_11;
...
// build()
my_map.add_reg(reg_00, 32'h0000 /*offset*/, ""RW");
my_map.add_reg(reg_01, 32'h0001 /*offset*/, ""RW");
my_map.add_reg(reg_10, 32'h0002 /*offset*/, ""RW");
my_map.add_reg(reg_11, 32'h0003 /*offset*/, ""RW");
...
我有一個註冊適配器,將讀/寫轉換爲總線事務。 所以,我能夠做到這一點我的序列中:
reg_00.write(status, 'hff, .parent(this));
總線事務會做寫入到特定的寄存器:reg_00
。
我的問題是總線有byte_enable
,它允許它在雙字訪問中跨4個寄存器寫入。使用上面的現有寄存器模型,是否可以同時寫入/讀入4個寄存器?還是需要創建另一組寄存器(32位大小)? 這將是這樣的僞代碼:
{reg_11,reg_10,reg_01,reg_00}.write(status, 'hffffffff, .parent(this));
什麼建議嗎?
好像你正在尋找突發傳輸。可能[此鏈接](http://stackoverflow.com/questions/23143815/using-burst-read-write-with-register-model)可以幫助。 – sharvil111