3.0 Client Interface
(Continued)
Workarounds for No-Stall Bug
There are three alternatives available to work around the
no-stall bug: (1) Release RxSTALL for one clock cycle only
when RxT
[ ]
takes on a non-null value, leaving RxSTALL
asserted at all other times; (2) build a client system that is
guaranteed not to require that any symbol remain on RxS
[ ]
for more than two clock cycles; or (3) provide an external
latch to save symbols that might have been lost due to entry
to row 10, and stall the next symbol in row 7 or 11 until the
external latch can be read.
Alternative
Y
1.
Leave RxSTALL normally asserted. This is
the easiest method. It restricts the Receive port to rows, 1,
2, 5, 6, and 9. RxSTALL is released only to enter rows 1 and
2. This is easily accomplished by releasing RxSTALL in re-
sponse to each non-null value, but only when that value is
no longer needed at RxS
[ ]
. RxT
[ ]
will remain non-null for
only one clock cycle, and this event will have to be remem-
bered by the client state machine. Unfortunately, because
the next state result of row 9 does not update RxT
[ ]
, the
fastest that a client may receive data is once every other
clock cycle. If there is always another symbol ready in the
pipeline, then the Receive Port will toggle between rows 9
and 2, and RxS
[ ]
will be updated only on the exit from row
9.
TL/F/11928–32
Alternative
Y
2.
Design a client system that can always
consume a received symbol within two clocks. This may be
impractical, but if the client system fits this description, then
there is no problem. This is because the next state of row
10 is entered in order to stall a symbol that just appeared
upon the exit from row 3, and row 10 preserves the symbol
for exactly one more clock cycle. Every next-case row out of
row 10 will advance RxS
[ ]
to the next symbol, so the un-
stallable symbol always appears at RxS
[ ]
for exactly two
clock cycles.
Alternative
Y
3.
Provide external storage for the volatile
symbol, and stall the next symbol at RxS
[ ]
until the saved
copy can be used. The only entrance to row 10 is from row
3. External logic must monitor the interface for the transition
from row 3 to row 10 or 11, and must both save the unstalla-
ble symbol and hold RxSTALL asserted until the external
copy can be used. This solution requires that external logic
emulate the QR0001 Receive Port state machine. Although
the T’
[ ]
input variable and the Nullout and Stalled state
variables are not observable on output pins of the chip, it is
possible to compute them externally. An external state ma-
chine can deterministically compute the previous state and
the value input T’
[ ]
that helped cause it. Although this infor-
mation is available one cycle late, there is time to stall the
next symbol until the no-stall symbol register is being freed
up.
The advantage of alternative 1 is its simplicity, if it is not
necessary to receive symbols more often than once every
other clock cycle. The advantage of alternative 2 is that, if it
happens to describe your system (if it’s free), then you will
not encounter the no-stall bug. The advantage of alternative
3 is that the client can keep up with high-bandwidth received
streams that deliver symbols on every clock cycle.
3.6 Client Interface Field Definitions
Table 3.1 shows the symbol field definitions for the Tx and
Rx ports. Refer to Section 3.13 for details.
TABLE 3.1. Tx and Rx Port Symbol Field Definitions
Field
Descriptions
Type
[
1:0
]
At the client ports, distinguishes head,
data, frame, and null.
CONN
[
1:0
]
The connection code (CON
[
1:0
]
) provides
two types of transmission, normal and low
bandwidth. Low-bandwidth streams are
transmitted with higher priority.
TRGT
[
3:0
]
The target field contains the node ID of the
target of the associated payload.
SRCE
[
3:0
]
The source field contains the node ID of
the source of the associated payload.
HOP1
[
3:0
]
HOP2
[
3:0
]
HOP3
[
3:0
]
HOP4
[
3:0
]
HOP5
[
3:0
]
They distinguish between unique streams
whose source-to-target routes are
identical. In a multiple-ring topology, they
supplement source and target ID fields to
route streams as they hop from ring to ring
(See section on Ring of Rings).
At the client ports ACCess field should be
[
00
]
. The ACC
field is valid only in the ring ports. Refer to Sections 4.7 and
4.13 for more details.
Table 3.2 shows the values of the connection field
(CONN
[
1:0
]
). If a LB connection is requested, QuickRing
parcels the data or frame symbols presented at the Tx Port
and transmits every payload in 2 symbol ring packets, 1
head and 1 payload.
TABLE 3.2. Connection Field Definitions
CONN
[
1:0
]
Name
Description
0
Normal
Queue and accumulate
symbols from the same
stream at will, to maximize
system efficiency and
minimize system load.
1
Low Band-
width (LB)
Do not concatenate with
other data symbols from the
same stream. Results in two
symbol packets, head and
payload.
2
N/A
Reserved
3
N/A
Reserved
3.7 Client Type Fields
The TxT
[
1:0
]
and RxT
[
1:0
]
fields are the type fields at the
transmit and receive ports, respectively. They are encoded
as shown in Table 3.3. Each 32-bit symbol written or read
from the client ports is associated with one type field.
13