Hi,
I wantto read register reg_a as zero when I have an execute access (Hprot[0] = 0)
I used as code :
virtual function void add_callbacks();
execution_read_zero_cbs execution_read_zero_cb = execution_read_zero_cbs::type_id::create("execution_read_zero_cb", this);
execution_read_zero_cb.env = this;
regmodel.reg_a.get_fields(reg_a_fields);
foreach (reg_a_fields[i]) begin
uvm_reg_field_cb::add(reg_a_fields[i], wr_ignored_to_sregcr_cb);
uvm_reg_field_cb::add(reg_a_fields[i],execution_read_zero_cb);
end
endfunction : add_callbacks
class execution_read_zero_cbs extends ip_base_callback;
`uvm_object_utils(execution_read_zero_cbs)
bit check_enable;
function new(string name = "execution_read_zero_cbs");
super.new(name);
endfunction: new
virtual task pre_read (uvm_reg_item rw);
bit hexecute_access;
hexecute_access = env.ip_reg_filter.last_access_is_exec;
if (rw.kind == UVM_READ) begin
if(hexecute_access == 1)
begin
foreach(rw.value[i]) rw.value[i] = 0;
end
end
endtask: pre_read
endclass: execution_read_zero_cbs
but it does not work, could you please tell me if sthg is wrong or missing ?
best regards