UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Scholar muravin
Scholar
5,335 Views
Registered: ‎11-21-2013

DDR3 read data corruption on the PS to PL interface

Jump to solution

Dear All,

 

Our project is on the VIVADO 2016.2, x64, part xa7z020clg484-1Q

 

We are using 32-bit DDR3-1066 for our system, which is proprietary video processing.

 

We believe that there is a data corruption somewhere on the DDR3 read data path before it makes it to the PL. The cache is dsiabled, and we have no idea what could cause it.

 

Basically, we have a design with DMA/VDMA cores (our own, not Xilinx), and they all connect to the corresponding HP ports through the Xilinx AXI Interconnect.

 

Furthermore, we pre-initialize the DDR3 memory with a known pattern and we are reading from this memory. We hooked a chipscope on the very AXI HP interface between the PL (Xilinx AXI Interconnect) and the PS, and we observe data corruption during read. The AXI bursts seem ok as far as the AXI protocol is concerned.

 

We are reading a big chunk of data of 33,177,600 (0x1FA4000) bytes beginning at the address space 0x05100000, and the data corruption happens already after a few AXI bursts on the HP port (first one is about 6k-7k bytes).

 

The way the data corrupted is somewhat consistent, i.e. it is the same corrupted value most of the time, but the locations at which the corruption occurs, they are random.

 

Any help on this is very much appreciated.

 

Thank you very much

Vlad

Vladislav Muravin
0 Kudos
1 Solution

Accepted Solutions
Scholar muravin
Scholar
9,952 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

This topic has been picked by Xilinx and it is resolved.

Vladislav Muravin
0 Kudos
10 Replies
Teacher muzaffer
Teacher
5,319 Views
Registered: ‎03-31-2012

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution
Assuming your design passes sdk memory tests multiple times (under different temperatures etc) and your eye is pretty open:
are you initializing the memory from ps or pl ? If ps, I'd suggest that's the biggest suspect even though the caches are disabled. I'd also suggest the initialization done by the PL master and/or a loopback using the PL master/slave to check the write/read path.
If your memory tests are good and PL master is initializing the memory, I have no suggestions other than better/longer memory tests.
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Scholar muravin
Scholar
5,315 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

Hi Muzaffer,

Thank you for prompt response.

We are initializing the memory through our application utilizing Ethernet -> PS MAC -> PL -> PS DDR3.

 

However, we can also initialize it through PS. The results are the same.

 

Note also, that we are reading the CORRECT memory contents if we are using Zynq's console. But it is a different access, i.e. reading a block of data through the console means multiple single data beat access while DMA is using 16-data beat bursts. So we suspect that the issue is somewhere between the DDR3 and the PS to PL boundary, within the PS area.

 

Any other suggestions? Xilinx.... ?

 

Thanks again and BR

Vlad

Vladislav Muravin
0 Kudos
Scholar muravin
Scholar
9,953 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

This topic has been picked by Xilinx and it is resolved.

Vladislav Muravin
0 Kudos
Teacher muzaffer
Teacher
5,143 Views
Registered: ‎03-31-2012

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

@muravin so what was the resolution? 

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Scholar muravin
Scholar
5,091 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution
Well, it seems that the cache was enabled after all as part of another application. Overall, we have a workaround; however, it is still unclear to me as to why DMA read accesses through HP ports have those issues in the first place.
BR
Vlad
Vladislav Muravin
0 Kudos
3,868 Views
Registered: ‎01-13-2017

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

Hi all,

 

Actually I have same problem with my zedboard, I didn't understand how did you solve the problem?!

 

I am writing audio samples received from onboard audio codec to the DDR3 through the AXI-DMA and PS. Up to now, every thing works well and I can see that the data are correctly writen in the memory, I check them by mrd command in xmd console.

 

But as soon as I read the data during the C program in SDK, the data are corrupted!!! would you please let me know how can I resolve this issue?

 

Best Regards

Mehdi

0 Kudos
Newbie aricent@1
Newbie
81 Views
Registered: ‎10-26-2018

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

Hi,

This is the exact issue we are facing now in our design which uses a Zynq7000 device

The DDR3 access is from PS and when we do a ChipScope on the AXI4 Bus of PS-PL interface and see that some data within a burst (256 words in this case) is getting corrupted. The address increment for each burst is fine, but within the burst of 256 words what we read is data from a different address.

 Could you please provide me additional details as how this issue was resolved?

0 Kudos
Scholar muravin
Scholar
65 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

It's been a while but I believe that the reason was that the cache was enabled. Disable the cache in the SW

Vladislav Muravin
0 Kudos
Newbie aricent@1
Newbie
57 Views
Registered: ‎10-26-2018

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

Hi Vladislav Muravin,

Thank you for your quick response.

Could you please tell me where we can disable the cache in SW.

Because we checked this option in petalinux but we couldn't find it.

Regards

Kishore 

0 Kudos
Scholar muravin
Scholar
51 Views
Registered: ‎11-21-2013

Re: DDR3 read data corruption on the PS to PL interface

Jump to solution

There has to be a setting somewhere in your SW. I honestly don't know where as this has been done by one of my SW peers

Vladislav Muravin
0 Kudos