Different RESET Type on UVM register model

Dear All,

I’m trying to make a UVM RAL Model( register map) which is resetted by multiple reset type signal.

For example
There are 3 registers A, B, C. and each Register is reseted by other reset signal.

If I want make a register model with 3 registers, Should I have to make each of them by separately? then do I need to combine it into one UVM register model? Or doesn’t it need to care of reset type?

I’m not familiar with this, Could you please guide this ?

In reply to UVM_LOVE:

The register reset is defined on register maps and registers.
You can execute get_regsiters and store all registers in a queue. Then you can run a loop to reset the single registers with the exception of the excluded registers.

In reply to chr_sue:

In reply to UVM_LOVE:
The register reset is defined on register maps and registers.
You can execute get_regsiters and store all registers in a queue. Then you can run a loop to reset the single registers with the exception of the excluded registers.

I found the usage of “set_reset” in UVM Register Model Example


class ral_cfg_timer extends uvm_reg;
	uvm_reg_field timer;     // Time for which it blinks

	`uvm_object_utils(ral_cfg_timer)
	function new(string name = "traffic_cfg_timer");
		super.new(name, 32,build_coverage(UVM_NO_COVERAGE));
	endfunction

  virtual function void build();
     this.timer = uvm_reg_field::type_id::create("timer",,get_full_name());

    // configure(parent, size, lsb_pos, access, volatile, reset, has_reset, is_rand, individually_accessible); 
     this.timer.configure(this, 32, 0, "RW", 0, 32'hCAFE1234, 1, 0, 1);
     this.timer.set_reset('h0, "SOFT");
  endfunction
endclass

I want to know the usage of “SOFT” from this.timer.set_reset('h0, “SOFT”); Especially, Whatdoes “SOFT” mean ? Could you give me the usage?

Some explains that from
Your text to link here…
as the below,

set_reset
virtual function void set_reset( uvm_reg_data_t value,
string kind = “HARD” )
Specify or modify the reset value for this field

I have 2 Questions

  1. Here used with HARD NOT SOFT?, does this mean that can I declare User-Defined reset signal?
  2. What IF SOFT, HARD are implemented in set_reset method, How do I excute SOFT, HARD reset and User-Defined Reset?
    Thank you in advance

In reply to UVM_LOVE:

set_reset allows you to modify the reset method defined in the register model.
There are at least 2 options, setting ‘HARD’ which is the default and another value ‘SOFT’. Nothing is specified what should happen in this case. You might use it from the software side (one suggestion).

let’s say my reg_blk.fo.reset(.kind(“HARD”); and my configure field of fo reg has has_reset value = 1, then fo will be resetted and if has_reset value = 0, then fo will remain same i.e., it’s previous value.

Now, if my reg_blk.fo.reset(.kind(“SOFT”); and my configure field of fo reg has has_reset value = 1, then fo will not be resetted, fo will remain same and if has_reset value = 0, then also fo will remain same i.e., it’s previous value.

As per my observation SOFT is not making any difference, it just returns the previously stored desirted and mirrored value & using HARD it just resets the fo reg when has_reset = 1. So, is this true?

What i thought HARD and SOFT will work like HARD will not be dependent on has_reset value i.e., in configure field of for register and SOFT should be dependent on has_reset value.
But the observed output is different. so what the corrected information?