Hello everyone!
Practising uvm with i2c device. It has registers like this:
i2c_reg_map.add_reg ( I2C_PRERlo_reg , 3’b000 , “RW” );
i2c_reg_map.add_reg ( I2C_PRERhi_reg , 3’b001 , “RW” );
i2c_reg_map.add_reg ( I2C_CTR_reg , 3’b010 , “RW” );
i2c_reg_map.add_reg ( I2C_TXR_reg , 3’b011 , “WO” );
i2c_reg_map.add_reg ( I2C_RXR_reg , 3’b011 , “RO” );
i2c_reg_map.add_reg ( I2C_CR_reg , 3’b100 , “WO” );
i2c_reg_map.add_reg ( I2C_SR_reg , 3’b100 , “RO” );
2 registers have same address but changes its values if you write or read to/from them
So, i try predefine sequense uvm_reg_hw_reset_seq and in log i see:
%I-( uvm_reg_hw_reset_seq.svh: 115) [uvm_reg_hw_reset_seq] { 9500} Verifying reset value of register reg_model.I2C_TXR_reg in map “reg_model.i2c_reg_map”…
%E-(_______uvm_reg_cbs.svh:482)[UVM/REG/WRTEONLY]{________________9500} reg_model.I2C_TXR_reg is write-only. Cannot call read() method.
%E-(_uvm_reg_hw_reset_seq.svh:_122)[uvm_reg_hw_reset_seq]{________________9500} Status was UVM_NOT_OK when reading reset value of register “reg_model.I2C_TXR_reg” through map “reg_model.i2c_reg_map”.
Sequence try to read from WO register, but it shouldn’t do it.
How to solve this error?