Read Completion Boundary - 4.4 English

UltraScale Devices Gen3 Integrated Block for PCI Express LogiCORE IP Product Guide (PG156)

Document ID
PG156
Release Date
2023-11-24
Version
4.4 English

A memory read can be answered with multiple completions, which when put together return all requested data. To make room for packet-header overhead, the user application must allocate enough space for the maximum number of completions that might be returned.

T o ma k e t h i s p r oce s s e a sie r , t h e PC I Exp r es s Ba s e S pecificatio n q u antiz e s th e len g t h o f all completio n p ac k e t s suc h tha t eac h completion mu s t s t a r t a n d en d o n a nat u rall y aligne d r e a d completio n bo u nda r y ( R CB) , unle s s, i t se r v ic e s th e s t a r tin g o r en d in g a dd r e s s o f th e original r e que s t . Requests which cross the address boundaries at integer multiples of RCB byte s can b e completed using more than one completion, but the returne d data must not be fragmented except along the following address boundaries:

The first completion must start with the address specified in the request, and must end at one of the following:

° The address specified in the request plus the length specified by the request (for example, the entire request).

° An address boundary between the start and end of the request at an integer multiple of RCB bytes.

The final completion must end with the address specified in the request plus the length specified by the request.

All completions between, but not including, the first and final completions must be an integer multiple of RCB bytes in length.

Th e programmed v alu e o f R C B i s provided on cfg_rcb_status[1:0] . Here cfg_rcb_status[0] and cfg_rcb_status[1] are associated with physical functions 0 and 1 respectively (Per Function Link Control register [3]). I f t h e u s e r a p plicatio n doe s no t r e a d th e R C B v alue , i t mu s t us e th e default v alu e o f 6 4 b y t e s.

Table C-3: Read Completion Boundary Settings

c f g_rcb_status[0] or

cfg_rcb_status[1]

Read Completion Boundary

Bytes

DW

QW

Credits

0

64

16

8

4

1

128

32

16

8

When calculating the number of completion credits a non-posted request requires, you must determine how many RCB-bounded blocks the completion response might be required, which is the same as the number of completion header credits required.