What is virtual register and what is need of using virtual register in RAL?
A virtual register is a way to interpret a memory region as a register. Instead of the register occupying a standalone location within the DUT, it is located within a memory, and accessed using memory reads and writes.
You can read more about it here: Virtual Registers
I have never seen a virtual register used in a real-world design, so I have no experience using this feature.