How should the CHAN_BOND_WAIT, CHAN_BOND_OFFSET, and CHAN_BOND_LIMIT attributes be set? How do these attributes affect channel-bonding operation?
1. Recommended guidelines:
CHAN_BOND_WAIT = 8
CHAN_BOND_WAIT = CHAN_BOND_OFFSET
CHAN_BOND_LIMIT = 2*CHAN_BOND_WAIT
You should not change this value unless you run a simulation to ensure that your selected value still works with your protocol. Factors that influence channel-bonding are:
- Skew between the master and slave channel-bonding sequence arrival times (in cases of master lags slave or slave lags master). The larger the potential channel separation, the larger the CHAN_BOND_WAIT value must be.
- Arrival time between consecutive channel-bonding sequences. The smaller the separation between consecutive channel-bonding sequences, the smaller the CHAN_BOND_WAIT value must be so that the slave aligns to the intended sequence instead of the following sequence.
2. Allowable channel skew:
CHAN_BOND_WAIT - 3.5 bytes
- If CHAN_BOND_WAIT is 8 bytes, the allowable lag is 4.5 bytes (1/3.125 Gbps * 4.5 bytes * 10 bits/byte = 14.4 ns).
3. Minimum bytes between the heads of consecutive channel-bonding sequences:
CHAN_BOND_WAIT + 9
4. Indicators of successful channel-bonding:
- CHBONDDONE goes High on all lanes.
- RXCLKCORCNT = 101* on the slave MGT (channels are aligned one cycle after RXCLKCORCNT=101).
5. Indicators of unsuccessful channel-bonding:
- CHBONDDONE stays Low.
- RXCLKCORCNT = 101* on the slave MGT.
RXCLKCORCNT is set to 101 when the slave receives a channel-bonding command on CHBONDI.
Causes of unsuccessful channel-bonding:
- The slave sequence lags the master sequence by too long a time. This prevents the slave from detecting the channel-bonding sequence when CHBONDO is asserted.
- The master sequence lags the slave sequence by too long a time. This causes the slave's channel-bonding sequence to exceed the CHAN_BOND_LIMIT and expire.
- Synchronization or alignment problems prevent the slave receiver from recognizing the channel-bonding sequence.
6. Expected output on RXDATA during channel-bonding:
- The master channel operates under typical conditions.
- When the slave sequence lags the master sequence (when CHBONDI is asserted), the slave will skip a few bytes of data and jump to the CHAN_BOND_OFFSET location.
- When the master sequence lags the slave sequence (before CHBONDI is asserted), the slave reads out data normally as they arrive. The slave will probably read past the offset location. When CHBONDI is asserted, the slave will jump back to the offset location. A small portion of the received data will be sent out twice.