# US 12,111,784 B2 · NoC buffer management for virtual channels

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,111,784 B2
- Document ID: US12111784B2
- Status: Granted
- Kind: B2
- Application number: 17/959,903
- Filed: 2022-10-04
- Published: 2024-04-04
- Granted: 2024-10-08
- Earliest claimed: 2022-10-04
- Assignees: Xilinx, Inc.
- Applicants: Xilinx, Inc.
- Inventors: Krishnan Srinivasan; Abbas Morshed; Sagheer Ahmad
- Web page: https://patentgrep.com/patent/US12111784B2

## CPC

- G06F 13/4059: {where the synchronisation uses buffers, e.g. for speed matching between buses}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments herein describe a NoC where its internal switches have buffers with pods that can be assigned to different virtual channels. A subset of the pods in a buffer can be grouped together to form a VC. In this manner, different pod groups in a buffer can be assigned to different VCs (or to different types of NoC data units), where VCs that transmit wider data units can be assigned more pods than VCs that transmit narrower data units.

## Claims

### Claim 1

An integrated circuit, comprising:
a first hardware circuit;
a second hardware circuit; and
a network on a chip (NoC) communicatively coupling the first hardware circuit and the second hardware circuit, the NoC comprising:
a plurality of switches, each switch comprising a plurality of ports, each port comprising a buffer,
wherein the buffer comprises a plurality of pods divided into multiple pod groups, at least a subset of the pod groups configured to be a different size, and each pod group assigned to a different virtual channel of a plurality of virtual channels based on a width of each of the plurality of virtual channels.

### Claim 2 (depends on 1)

The integrated circuit of claim 1, wherein different types of NoC data units transmitted between the plurality of switches are assigned to different ones of the virtual channels.

### Claim 3 (depends on 2)

The integrated circuit of claim 2, wherein the different types of NoC data units have different widths.

### Claim 4 (depends on 3)

The integrated circuit of claim 3, wherein a size of each of the plurality of pods is set based on the type of the NoC data units with a smallest width.

### Claim 5 (depends on 1)

The integrated circuit of claim 1, wherein wider virtual channels of the plurality of virtual channels are assigned to pod groups of the multiple pod groups having a larger number of pods.

### Claim 6 (depends on 1)

The integrated circuit of claim 1, wherein the plurality of switches maintain a pointer for each of the multiple pod groups to determine when the multiple pod groups are full.

### Claim 7 (depends on 1)

The integrated circuit of claim 1, wherein the buffer is non-blocking such that when a first pod group of the multiple pod groups for a first virtual channel is full a second pod group of the multiple pod groups for a second virtual channel that is not full can continue to store NoC data units.

### Claim 8 (depends on 1)

The integrated circuit of claim 1, wherein the plurality of pods comprises a redundant pod that is not assigned to one of the pod groups until after a defective pod is detected.

### Claim 9

A method, comprising:
receiving a network on a chip (NoC) data unit at a port of a switch in a NoC;
identifying a virtual channel corresponding to the NoC data unit;
storing, in a buffer in the switch, the NoC data unit in a pod group assigned to the virtual channel, wherein the buffer comprises a plurality of pods divided into multiple pod groups, at least a subset of the pod groups configured to be a different size, and each pod group assigned to a different virtual channel of a plurality of virtual channels based on a width of each of the plurality of virtual channels; and
updating a pointer for the pod group based on storing the NoC data unit in the pod group.

### Claim 10 (depends on 9)

The method of claim 9, wherein different types of NoC data units transmitted between the plurality of switches are assigned to different ones of the virtual channels.

### Claim 11 (depends on 10)

The method of claim 10, wherein the different types of NoC data units have different widths.

### Claim 12 (depends on 11)

The method of claim 11, wherein a size of each of the plurality of pods is set based on a type of the NoC data units with a smallest width.

### Claim 13 (depends on 9)

The method of claim 9, wherein wider virtual channels of the plurality of virtual channels are assigned to pod groups of the multiple pod groups having a larger number of pods.

### Claim 14 (depends on 9)

The method of claim 9, wherein the switch maintain the pointer to determine when multiple pod group is full.

### Claim 15 (depends on 9)

The method of claim 9, wherein the buffer is non-blocking such that when a first pod group of the multiple pod groups for a first virtual channel is full a second pod group of the multiple pod groups for a second virtual channel that is not full can continue to store NoC data units in the buffer.

### Claim 16 (depends on 9)

The method of claim 9, further comprising:
detecting a defective pod in one of the multiple pod groups; and
assigning a redundant pod to replace the defective pod, wherein the redundant pod was not assigned to one of the multiple pod groups before the defective pod was detected.

### Claim 17

An integrated circuit, comprising:
a first hardware circuit;
a second hardware circuit; and
a network on a chip (NoC) communicatively coupling the first hardware circuit and the second hardware circuit, the NoC comprising:
a plurality of switches, each switch comprising a plurality of ports, each port having a buffer,
wherein the buffer comprises a plurality of pods divided into multiple pod groups assigned to different types of NoC data units, at least a subset of the pod groups configured to be a different size, and each pod group assigned to a different virtual channel of a plurality of virtual channels based on a width of each of the plurality of virtual channels.

### Claim 18 (depends on 17)

The integrated circuit of claim 17, wherein wider virtual channels of the plurality of virtual channels are assigned to pod groups of the multiple pod groups having a larger number of pods.

### Claim 19 (depends on 17)

The integrated circuit of claim 17, wherein narrower virtual channels of the plurality of virtual channels are assigned to pod groups of the multiple pod groups having a smaller number of pods.

### Claim 20 (depends on 17)

The integrated circuit of claim 17, wherein a size of each of the plurality of pods is set based on the type of the NoC data units with a smallest width.
