I am Performing a write to memory location 0x00 but the write goes to 0x02. And when I read the data from 0x00 it is read out from 0x02. How can I catch such bug with system verilog constructs.
Hi,
I am Performing a write to memory location 0x00 but the write goes to 0x02. And when I read the data from 0x00 it is read out from 0x02. How can I catch such bug with system verilog constructs.
Your question needs further clarifications on your part:
Title suggests that the problem is with multiple drivers (not clear as to why)in that the requested address of 0 is somehow modified to 2 for both, writes and reads.
What do you think is the issue?
Do you have access to the sent address, prior to the tri-state divers? If so, you can use an assertion to verify that the address at the tri-state lines is the same as the one initiated at its source. That would be for a write assertion and a read assertion
If your driver is working perfectly then you could catch this bug by backdoor access to the memory:
write into the location 0x0 then the memory will be updated to location 0x2 then perform the backdoor read to all the locations in the memory then you could catch the bug.