How to find debug

How will you debug memory swap issue I.e. I am writing some data to addr 0x20 but due to some bug it is being written at location 0x40. Similarly, when I try to read from 0x40, I am getting the data written at addr 0x20.

In reply to Lakshman07:
There could be a shift in your code.
40 = 101000
20 = 010100

Thank You @chr_sure

can you elaborate more, it will helpful to me

Using RAL backdoor access(write & read) we can find out this bug.

write data using backdoor & read data using backdoor, compare writedata & readdata

In reply to Lakshman07:

Thank You @chr_sure
can you elaborate more, it will helpful to me

There could be a wrong connection wrt to the address.

Thanks shanthi mam & chr_sure

Why we can’t find the bug using assertions

In reply to Lakshman07:

With assertions you could check if address and data are provided with the right timing. But assertions will not check and compare the values.

In reply to Lakshman07:

Good interview question: address 0x40 has been swapped with 0x20 for decades.

This is only detectable in simulation if there are multiple ways of accessing the same data. For example, if you have separate read and write address ports, or scan chains.

Hi Dave_59,

Is there any other solution without using RAL concept.

In reply to Lakshman07:

Of course, use other addresses like 41, 21 and check your code, especially the connection between the TB and the DUT, but also the addr lines inside the DUT or the TB.