# US 11,113,223 B1 · Dual mode interconnect

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

- Number: US 11,113,223 B1
- Document ID: US11113223B1
- Status: Granted
- Kind: B1
- Application number: 15/944,490
- Filed: 2018-04-03
- Granted: 2021-09-07
- Earliest claimed: 2018-04-03
- Assignees: Xilinx, Inc.
- Applicants: Xilinx, Inc.
- Inventors: Peter McColgan; Goran H K Bilski; Juan J. Noguera Serra; Jan Langer; Baris Ozgul; David Clarke
- Web page: https://patentgrep.com/patent/US11113223B1

## CPC

- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- A47K 11/02: Dry closets, e.g. incinerator closets
- E04H 1/1216: {Public W.C.s}
- E04H 15/38: expansible, e.g. extensible {in a fan type manner}
- G06F 15/17337: {Direct connection machines, e.g. completely connected computers, point to point communication networks (coupling between buses G06F13/4004)}
- H04L 12/56: {Packet switching systems}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/123: {received data contents, e.g. message integrity}
- H04L 67/1051: {Group master selection mechanisms}
- G06F 9/3877: {using a secondary processor, e.g. coprocessor (peripheral processor G06F13/12)}
- G06F 15/7807: {System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package}
- G06F 2213/0038: System on Chip
- Y02A 50/30: Against vector-borne diseases, e.g. mosquito-borne, fly-borne, tick-borne or waterborne diseases whose impact is exacerbated by climate change
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- A47K: SANITARY EQUIPMENT; ACCESSORIES THEREFOR, e.g. TOILET ACCESSORIES
- E04H: BUILDINGS OR LIKE STRUCTURES FOR PARTICULAR PURPOSES; SWIMMING OR SPLASH BATHS OR POOLS; MASTS; FENCING; TENTS OR CANOPIES, IN GENERAL (foundations E02D)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y02A: TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Examples herein describe techniques for communicating between data processing engines in an array of data processing engines. In one embodiment, the array is a 2D array where each of the DPEs includes one or more cores. In addition to the cores, the data processing engines can include streaming interconnects which transmit streaming data using two different modes: circuit switching and packet switching. Circuit switching establishes reserved point-to-point communication paths between endpoints in the interconnect which routes data in a deterministic manner. Packet switching, in contrast, transmits streaming data that includes headers for routing data within the interconnect in a non-deterministic manner. In one embodiment, the streaming interconnects can have one or more ports configured to perform circuit switching and one or more ports configured to perform packet switching.

## Claims

### Claim 1

A system on a chip (SoC), comprising:
a first data processing engine in an array of data processing engines;
a second data processing engine in the array of data processing engines; and
an interconnect configured to transmit streaming data between the first and second data processing engines, wherein the interconnect comprises streaming interconnects, each streaming interconnect of the streaming interconnects comprising ports, wherein, for each streaming interconnect of the streaming interconnects, each port of the ports of the respective streaming interconnect is selectively configurable into a circuit switching mode and a packet switching mode,
wherein, when configured in the circuit switching mode, streaming data routed through the ports is deterministic,
wherein, when configured in the packet switching mode, streaming data routed through the ports is non-deterministic; and
wherein for each streaming interconnect of the streaming interconnects, each port of the ports of the respective streaming interconnect:
when configured in the circuit switching mode, cannot be shared by multiple logical streams; and
when configured in the packet switching mode, is capable of being shared by multiple logical streams.

### Claim 2 (depends on 1)

The SoC of claim 1, wherein, when configured in the circuit switching mode, latency of the streaming data routed through the ports is independent of congestion in the interconnect, wherein, when configured in the packet switching mode, the latency of the streaming data is affected by congestion.

### Claim 3 (depends on 1)

The SoC of claim 1, wherein a first streaming interconnect of the streaming interconnects comprises a slave port and a first master port both configured in the circuit switching mode, wherein a first configuration register corresponding to the first master port stores a value specifying the slave port as a source of streaming data for the first master port.

### Claim 4 (depends on 3)

The SoC of claim 3, wherein the first streaming interconnect comprise a second master port configured in the circuit switching mode, wherein a second configuration register corresponding to the second master port stores a value specifying the slave port as a source of streaming data for the second master port.

### Claim 5 (depends on 4)

The SoC of claim 4, wherein the first master port and the second master port receive data only from the slave port.

### Claim 6 (depends on 1)

The SoC of claim 1, wherein, when configured in the packet switching mode, the streaming data comprises a plurality of packets, each comprising a respective header, wherein the respective header comprises a stream ID assigning a corresponding packet to a logical stream.

### Claim 7 (depends on 6)

The SoC of claim 6, wherein a first streaming interconnect of the streaming interconnects comprises a first slave port, a second slave port, and a master port that are configured in the packet switching mode, wherein the first slave port transmits a first packet with a first value of the stream ID to the master port and the second slave port transmits a second packet with a second value of the stream ID to the master port, wherein the first packet and the second packet are assigned to different logical streams.

### Claim 8 (depends on 7)

The SoC of claim 7, wherein the first streaming interconnect comprises an arbiter assigned to the master port, wherein the arbiter is configured to arbitrate between the first slave port and the second slave port to determine which can transmit data to the master port to prevent a collision.

### Claim 9 (depends on 1)

The SoC of claim 1, wherein a first streaming interconnect of the streaming interconnects comprises a slave port and a master port, wherein the first streaming interconnect is configured to:
identify an arbiter using a packet header of a packet received at the slave port;
select a master select value using the packet header to identify the master port;
identify a masking value for the identified master port; and
routing the packet to the identified master port using the masking value.

### Claim 10 (depends on 9)

The SoC of claim 9, wherein the first streaming interconnect is configured to:
perform arbitration using the arbiter upon determining at least one: (i) there are multiple pending requests from slave ports to transmit data to the master port and (ii) the master port transmits a request for arbitration.

### Claim 11 (depends on 1)

The SoC of claim 1, wherein the circuit switching mode and the packet switching mode are compatible with Advanced Extensible Interface (AXI) streaming.

### Claim 12

A method, comprising:
configuring a first slave port and a first master port in a streaming interconnect in a circuit switching mode, each of the first slave port and the first master port being connected to another respective component exterior to the streaming interconnect, wherein, when configured in the circuit switching mode, first streaming data routed through the first slave port and the first master port is deterministic;
configuring a second slave port and a second master port in the streaming interconnect in a packet switching mode, each of the second slave port and the second master port being connected to another respective component exterior to the streaming interconnect, wherein, when configured in the packet switching mode, second streaming data routed through the second slave port and the second master port is non-deterministic; and
transmitting data between a first data processing engine in an array of data processing engines in a SoC and a second data processing engine in the array of data processing engines using the streaming interconnect;
wherein the first master port and the first slave port cannot be shared by multiple logical streams; and
wherein the second master port and the second slave port are capable of being shared by multiple logical streams.

### Claim 13 (depends on 12)

The method of claim 12, wherein, when configured in the circuit switching mode, latency of the first streaming data routed through the first slave port and the first master port is independent of congestion in an interconnect that includes the streaming interconnect, wherein, when configured in the packet switching mode, the latency of the second streaming data is affected by congestion in the interconnect.

### Claim 14 (depends on 12)

The method of claim 12, further comprising:
configuring a third master port in the streaming interconnect in the circuit switching mode; and
transmitting the first streaming data to the first master port and the third master port in parallel.

### Claim 15 (depends on 14)

The method of claim 14, wherein the first master port and the third master port receive data only from the first slave port.

### Claim 16 (depends on 14)

The method of claim 14, wherein the second streaming data comprises a plurality of packets, each comprising a respective header, wherein the respective header comprises a stream ID assigning a corresponding packet to a logical stream.

### Claim 17 (depends on 16)

The method of claim 16, further comprising:
configuring a third slave port in the streaming interconnect in the packet switching mode;
transmitting a first packet with a first value of the stream ID from the second slave port to the second master port; and
transmitting a second packet with a second value of the stream ID from the third slave port to the second master port, wherein the first packet and the second packet are assigned to different logical streams.

### Claim 18 (depends on 17)

The method of claim 17, further comprising:
arbitrating between the second slave port and the third slave port to determine which can transmit data to the second master port to prevent a collision.

### Claim 19 (depends on 12)

The method of claim 12, further comprising:
identifying an arbiter using a packet header of a packet received at the second slave port;
select a master select value using the packet header to identify the second master port;
identify a masking value for the second master port; and
routing the packet to the second master port using the masking value.

### Claim 20 (depends on 12)

The method of claim 12, further comprising:
reconfiguring the first slave port and the first master port into the packet switching mode; and
reconfiguring the second slave port and the second master port into the circuit switching mode.

### Claim 21

An integrated circuit comprising:
a plurality of data processing engines (DPEs), each DPE of the plurality of DPEs comprising:
a streaming interconnect comprising ports, respective ones of the ports being connected to a port of another streaming interconnect of another DPE of the plurality of DPEs, each port of the ports being programmable based on data written to a configuration register to be coupled to one or more ports of the ports to communicate streaming data selectively in a circuit switching mode and a packet switching mode,
wherein, when programmed to be in the circuit switching mode, streaming data communicated through and between respective ports of the ports in the streaming interconnect is deterministic,
wherein, when programmed to be in the packet switching mode, streaming data communicated through and between respective ports of the ports in the streaming interconnect is non-deterministic, and
wherein for each streaming interconnect of the streaming interconnects, each port of the ports of the respective streaming interconnect:
when programmed to be in the circuit switching mode, cannot be shared by multiple logical streams; and
when programmed to be in the packet switching mode, is capable of being shared by multiple logical streams.

### Claim 22 (depends on 21)

The integrated circuit of claim 21, wherein, when configured in the packet switching mode, the streaming data comprises a plurality of packets, each comprising a respective header, wherein the respective header comprises a stream ID assigning a corresponding packet to a logical stream.

### Claim 23 (depends on 22)

The integrated circuit of claim 22, wherein the streaming interconnect comprises a first slave port, a second slave port, and a master port that are configured in the packet switching mode, wherein the first slave port transmits a first packet with a first value of the stream ID to the master port and the second slave port transmits a second packet with a second value of the stream ID to the master port, wherein the first packet and the second packet are assigned to different logical streams.
