cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
437 Views
Registered: ‎06-30-2017

kintex-7 KC705 XDMA Engine problem (repeat Tag request)

Hi, Xilinx:

  I use the kc705 board, vivado 2018.2,XDMA (pcie2.0*4, 128bit). 

I use the xdma for my nic card dma engine, i found it's always hang in H2C channel, so i use chipscope to debug it. i think i found the prblem, pls let me explain detail:

First, below pic is a normal request(no problem):

A: Descriptor data request, you can found request tag =6, data=8 dwords

B: Descriptor data returned, cpld tag = 6, data=8 dwords

C: DMA data request, they are splited three request:

 1: Tag = 7, len = 128 dwords
2: Tag = 8, len = 128 dwords
3: Tag = 9, len = 123 dwords

Normal requestNormal request

D: dma data returned cpld ,correspond before three request, they are:

1: Tag = 7, len = 510 bytes
2: Tag = 8, len = 512 bytes
3: Tag = 9, len = 492 bytes

below pic is the ila cpld data:

Normal data CPLDNormal data CPLD

 

Second, below pic is a problematic request:

A: Descriptor data request, you can found request tag =4, data=8 dwords

B: Descriptor data returned, cpld tag = 4, data=8 dwords

C: DMA data request, they are splited three request:

 1: Tag = 0f, len = 128 dwords
2: Tag = 06, len = 128 dwords
3: Tag = 0f, len = 123 dwords

The request 3, it's a bad request: because in the request 1, use the Tag 0f, but in this time, it have not cpld returned
in the other words: the Tag 0f have not release. so, the 0f Tag cannot use in request 3.

the tag is assignment by the dma engine,so the bug is come from the encryption hdl code, i cannot to change it.

problematic reauestproblematic reauest

D: dma data returned cpld ,correspond before three request, they are:

1: Tag = 0f, len = 510 bytes
2: Tag = 06, len = 512 bytes
3: Tag = 0f, len = 492 bytes

This cpld data come from the pcie ip(128 bit), in this state, the dma engine become hang, in the other words: the h2c engine do not return the data from the cpld, i guess, it's dead, because the duplicate Tag(0f).

problematic data cpldproblematic data cpld

The problem often start at a little data, and then a big data, then the h2c hang. for example, in my network card:

ping 192.168.4.1 (little data,about 68 bytes?)

ping -s 1492 192.168.4.1 (big data, about 1514 bytes)

Then the dma H2C channel hang.

 

The attach file is the problematic ila data, it can be loaded from the vivado to check.

0 Kudos
2 Replies
Highlighted
179 Views
Registered: ‎06-30-2017

Hi, xilinx:

this bug had been bothering me for a long time,pls check and help.

The ila file can be opened by vivado (i used vivado2018.2).

open vivado, the goto hardware manager, and in tcl console, type:

display_hw_ila_data [read_hw_ila_data hang.ila]

the you can check the debug signal, thanks!!!

0 Kudos
Highlighted
170 Views
Registered: ‎06-30-2017

I found, the problem is the read requset tag bug:

pls see the problem ila file, from the first desc read requset, it's tag is 04

i gusess the follow read request(data request) must be 05, 06, 07 and then 08, but in fact, the engine send request is 0f, 06, 0f, 08。

That's the key point!!!