Hi,
I have to write values to a set of registers in the ral model.
How i am doing is :
I hope, i am giving all the sufficient info for the question,
/////////////// working code
///////////
uvm_reg reg_name, regs[$];
ral_model_handel regmodel;
string reg_name_s;
///// getting all the registers
regmodel.get_registers(regs);
for(int ii=0;ii<7;ii++) begin
reg_name_s = $psprintf("required_reg_%0d_i%0d",channel_num,ii);
//// this kk loops over all the registers and write and read from required register.
for(int unsigned kk=0; kk<regs.size();kk++)begin
$display("regs[kk].get_name = %0s",regs[kk].get_name());
if(reg_name_s == regs[kk].get_name()) begin
`uvm_info("\n writing to this register",regs[kk].get_full_name(),UVM_LOW)
reg_data = (vector >> vector_index) & 'hffff_ffff;
$display("reg_data=%0h , vector=%0h",reg_data,vector);
regs[kk].write(reg_status,reg_data);
regs[kk].read(reg_status,value_r);
vector_index = vector_index + 32;
end //// to if
end //// for kk loop, loops over all the register in model
end// for ii loop
////////////////////////////
///////////////////////
following is the doubt
////////////
The way i am trying is,
for(int ii=0;ii<7;ii++) begin
reg_name_s = $psprintf("required_reg_tx_pr_enb%0d_i%0d",channel_num,ii);
reg_data = (vector >> vector_index) & 'hffff_ffff;
$psprintf("regmodel.%0s.write(reg_status,reg_data)",reg_name_s); ////// this way i want to do
if i directly do regmodel.reg_name_s .write(reg_status,reg_data); it gives compilation issue saying reg_name_s is not a class item. so i am trying with $psprintf but it will only prints the reg_name_s but it wont write value to the register.
How can i do in this way replacing and executing reg_name, register write operation.
Many thanks.