Query on uvm_hdl_read()

I would like to read WREAL port, im using uvm_hdl_read(),however return type of uvm_hdl_data_t is of type logic.

int uvm_hdl_read ( string path,
                   output uvm_hdl_data_t value
                 )

'path" is pointing to a port of type real to virtual interface, I have made hierarchical connection to wreal port via virtual interface using real type variables.
Is there a way I can get real values or any methods to convert from type logic to real.

I did some trails and this is the output I have.

On 1 instance
Value on the port at time 187234.610ns was 1.26, and I got 8315180238380204032.000000
UVM_INFO test_sm_result_reg_res_seq.sv(131) @ 187234.610ns: test_sm_result_reg_res [test_sm_result_reg_res_seq] VREF: 8315180238380204032.000000

on other instance
Value on the port at time 354274.610ns was 8.84, and I got 8315180238380204032.000000
UVM_INFO test_sm_result_reg_res_seq.sv(131) @ 354274.610ns: test_sm_result_reg_res [test_sm_result_reg_res_seq] VREF: 8315180238380204032.000000

How can I fetch real numbers.

In reply to harshavs:

You can use $bitstoreal if the register’s binary value is formatesd in IEEE 754 double precision floating-point numbers. Any other format and you will have to write a conversion function yourself.

In reply to dave_59:

In reply to harshavs:
You can use $bitstoreal if the register’s binary value is formatesd in IEEE 754 double precision floating-point numbers. Any other format and you will have to write a conversion function yourself.

I tried, at the time stamps which I mentioned, I notice different values on the waveform, and recorded values by uvm_hdl_data_t are identical, after conversion result is different.