For every cycle, each output port performs Least Recently Used (LRU) arbitration on all virtual channels of the three input ports. High priority requests always take precedence over low priority requests, however a virtual channel must meet the following conditions to be eligible for arbitration:
- Each request must be valid.
- The output port must have credit to send a packet on to the next NPS.
- There must be no blocking from the same virtual channel of another input
port:
- Each multi-data transaction in the output-port-arbiter is hard-locked. When one of the three input ports has granted access to a virtual channel, the whole transaction must complete before switching to the same virtual channel on another input port. This process ensures that write transactions are not interleaved.
- A virtual channel token must be available:
- Each output port contains one token for each input port, therefore each
output port contains 24 tokens (three ports × eight virtual channels). Each
time the arbiter issues a grant to a virtual channel, its corresponding
token is decremented. NPI programmed registers load the tokens
proportionally to their relative QoS bandwidth to other channels when both
of the following conditions are true:
- At least one virtual channel is requesting with zero tokens.
- There are no other pending request with one or more tokens.
- Do not program NPI token registers to zero. This causes blocking of the corresponding virtual channel. You can re-program NPI token registers at any time with the new value taking effect when the next token reload occurs.
- Each output port contains one token for each input port, therefore each
output port contains 24 tokens (three ports × eight virtual channels). Each
time the arbiter issues a grant to a virtual channel, its corresponding
token is decremented. NPI programmed registers load the tokens
proportionally to their relative QoS bandwidth to other channels when both
of the following conditions are true:
- There are no higher priority virtual channel requests.