Broadcast register read/write with RAL

Hi all,
recently I had to deal with following broadcast scenario.
I have one register block tx_reg_block and one rx_reg_block.
In top_tx_block I have 4 instances of tx_reg_block and in top_rx_block I have 4 instances of rx_reg_block.
Moreover in top_tx/rx_block I have a broadcast tx/rx space in the map. That means :
If I write to a reg in broadcast tx space the 4 corresponding regs in each tx_reg_block will be written as well. The same for rx.
If I read to a reg in broadcast tx/rx space the value returned is the ored read data of the 4 corresponding regs in each tx/rx_reg_block

For the write It was quite easy, considering registers were aliased and using callbacks.
But for the read do you have a simple solution ? Because the one I have is a bit complicated.

Thanks,
Victor

In reply to Vperrin:

Hi Victor,

I would have created one register block, say broad_tx_reg_block for covering broadcast read operation for top_tx_block.

Let us consider a register write was done to tx_reg_block[0].reg_0. Before performing broadcast read on broad_tx_reg_block.reg_0, I shall update its mirrored value to the OR of mirror values of reg_0 of all 4 tx register blocks. Thereafter, broad_tx_reg_block.reg_0.mirror() shall help you check if the broadcast read value is correct.

Is this solution complicated?

Thanks,
Vishal