Integration of programmable devices and processing systems into integrated circuit packages.
By integrating programmable ICs and processing systems within a single IC package, peripherals are directly connected to the processing system, addressing the inefficiencies of separate IC configurations and reducing space requirements.
Patent Information
- Application Number
- JP2023036854
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2017-09-28
- Filing Date
- 2023-03-09
- Publication Date
- 2024-12-13
- Estimated Expiration
- 2038-09-24
AI Technical Summary
Existing computing systems with programmable ICs and CPUs have a large footprint due to separate ICs and peripherals, requiring multiple boards and expansion ports, which is inefficient and space-consuming.
Integration of programmable devices and processing systems into a single IC package, where the programmable IC is coupled to the processing system through ring wiring, allowing peripherals to communicate directly with the processing system without additional board space.
This integration reduces the physical space required for computing systems by integrating peripherals directly into the IC package, enhancing efficiency and reducing the need for separate boards.
Smart Images

Figure 0007599514000001 
Figure 0007599514000002 
Figure 0007599514000003
Abstract
Description
[Technical field]
[0001] Examples of the present disclosure relate generally to electronic circuits, and in particular to the integration of programmable devices and processing systems into integrated circuit (IC) packages. [Background technology]
[0002] background Modern central processing units (CPUs) are complex system-on-chip (SoC) devices that integrate multiple microprocessor cores, graphics engines, and other fixed functions on a single semiconductor die. The CPU is connected to the Peripheral Component Interconnect Express (PCI). Expansion bus interfaces such as PCI Express (PCIe) interfaces In a typical configuration, an integrated circuit (IC) package with a CPU is mounted on a printed circuit board (PCB). Various peripherals are mounted on the PCB outside the CPU IC package in a fixed or removable manner. The peripherals are coupled to the PCIe interface of the CPU through pins on the PCB and the CPU IC package. Such a configuration has a large footprint requiring at least multiple ICs mounted on the PCB and at worst space for an expansion port into which other PCBs with peripherals can be inserted.
[0003] Programmable integrated circuits (ICs) are often used to implement digital logic operations in response to user-configurable inputs. Exemplary programmable ICs include complex programmable logic devices (CPLDs) and field programmable gate arrays (FPGAs). CPLDs often contain several functional blocks based on a programmable logic array (PLA) architecture with sum-of-products logic. A configurable interconnect matrix routes signals between the functional blocks.
[0004] One type of FPGA includes an array of programmable tiles. The programmable tiles comprise various types of logic blocks, which may include, for example, input / output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAMs), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay-locked loops (DLLs), buses, or network interfaces such as peripheral component interconnect express (PCIe) and Ethernet. Each programmable tile typically includes both programmable wiring and programmable logic. The programmable wiring typically includes multiple interconnect lines of different lengths interconnected by programmable interconnect points (PIPs). The programmable logic implements the logic of a user design using programmable elements, which may include, for example, function generators, registers, arithmetic logic, and the like.
[0005] Programmable ICs can be used to implement peripherals for use by a CPU, such as for use as a hardware accelerator. Hardware acceleration pertains to the use of hardware to perform a function more efficiently than software running on a general purpose CPU. A hardware accelerator is special purpose hardware designed to implement hardware acceleration for some application. Exemplary applications include neural networks, video encoding, decoding, transcoding, etc., network data processing, etc. Such hardware accelerators are typically implemented as PCIe cards that are inserted into a slot on a motherboard. The CPU and programmable ICs are controlled by components on the motherboard. It is desirable to provide a more efficient implementation of a computing system having a programmable IC and a CPU used as a peripheral, the ICs being two separate, physically separated ICs. Summary of the Invention [Means for solving the problem]
[0006] summary The integration of a programmable device and a processing system into an integrated circuit (IC) package is described. In one example, the IC package includes a processing system and a programmable IC disposed on a substrate, the processing system coupled to the programmable IC through wiring of the substrate, the processing system including components coupled to a ring wiring, the components including a processor and an interface controller. The programmable IC includes an interface endpoint coupled to the interface controller through wiring, and at least one peripheral device coupled to the interface endpoint and configured for communication with the ring wiring of the processing system through the interface endpoint and the interface controller.
[0007] In some embodiments, the programmable IC may include a programmable fabric. In one embodiment, a programmable IC may include an embedded processing system coupled to a programmable fabric.
[0008] In one embodiment, at least one peripheral may be programmed into the programmable fabric.
[0009] In an embodiment, the interface controller and the interface endpoint may each include one or more ports configured for communication with at least one streaming interface.
[0010] In an embodiment, the substrate can include a package interface, and the programmable IC can be coupled to the package interface.
[0011] In some embodiments, the IC package may further include a processing system and one or more other ICs coupled to the programmable IC.
[0012] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die, the processing system including components coupled to the ring wiring, the components including a processor and interface circuitry, and the programmable IC including at least one peripheral device coupled to the ring wiring and configured for communication with the ring wiring.
[0013] In some embodiments, the programmable IC may include a programmable fabric. In one embodiment, a programmable IC may include an embedded processing system coupled to a programmable fabric.
[0014] In one embodiment, at least one peripheral may be programmed into the programmable fabric.
[0015] In an embodiment, the processor and the programmable IC may each include one or more ports configured for communication with at least one streaming interface.
[0016] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die, the processing system including components coupled to the ring wiring, the components including a processor, an interface circuit, and a memory, and the programmable IC including at least one peripheral device coupled to the ring wiring and configured for communication with the ring wiring and the at least one memory.
[0017] In some embodiments, at least one memory of a programmable IC may not be coupled to the ring wiring.
[0018] In one embodiment, at least one memory of the programmable IC may be coupled to the ring wiring.
[0019] In an embodiment, the IC package may further include a package interface, and the programmable IC may be coupled to the package interface.
[0020] In some embodiments, the programmable IC may include a programmable fabric. In one embodiment, a programmable IC may include an embedded processing system coupled to a programmable fabric.
[0021] In one embodiment, at least one peripheral may be programmed into the programmable fabric.
[0022] In an embodiment, the processor and the programmable IC may each include one or more ports configured for communication with at least one streaming interface.
[0023] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die, the processing system including components coupled to ring wiring, the ring wiring including a first sub-ring coupled to a second sub-ring through an inter-ring connector, the components including a processor and interface circuitry, and the programmable IC including at least one peripheral device coupled to the first sub-ring and configured for communication with the first sub-ring.
[0024] In an embodiment, the component may further include a graphics processing unit (GPU) coupled to the second sub-ring.
[0025] In some embodiments, the programmable IC may include a programmable fabric. In one embodiment, a programmable IC may include an embedded processing system coupled to a programmable fabric.
[0026] In one embodiment, at least one peripheral may be programmed into the programmable fabric.
[0027] In an embodiment, the processor and the programmable IC may each include one or more ports configured for communication with at least one streaming interface.
[0028] These and other aspects can be understood with reference to the following detailed description. In order that the above-described features may be more fully understood, some exemplary embodiments are illustrated in the accompanying drawings, in which: A more specific description of the above briefly summarized description may be had by reference to the following implementations, however, it should be noted that the accompanying drawings show only typical example implementations and therefore should not be considered as limiting the scope thereof. [Brief description of the drawings]
[0029] [Figure 1] 1 is a block diagram illustrating an integrated circuit (IC) package according to an example. [Diagram 2] 2 is a block diagram illustrating an example of a processing system and a programmable IC in the IC package of FIG. 1. [Diagram 3] FIG. 2 is a block diagram illustrating a peripheral circuit configuration in a programmable IC according to an example. [Figure 4] FIG. 4 is a block diagram illustrating the peripheral circuitry of FIG. 3 in greater detail, according to an example. [Diagram 5] FIG. 1 is a block diagram illustrating a computing system according to an example. [Figure 6] 1 is a block diagram illustrating a programmable IC according to an example. [Figure 7] 1 is a block diagram illustrating a system-on-chip (SoC) implementation of a programmable IC according to an example. [Figure 8] FIG. 2 illustrates a Field Programmable Gate Array (FPGA) implementation of a programmable IC. [Figure 9] 1 is a flow diagram illustrating a method of operating a programmable IC in an IC package according to an example. [Figure 10] FIG. 1 is a block diagram illustrating an IC package according to another example. [Figure 11] FIG. 11 is a block diagram illustrating an example implementation of a processing system in the IC package of FIG. [Figure 12] 11 is a block diagram illustrating yet another exemplary implementation of a processing system in the IC package of FIG. 10. [Figure 13] 11 is a block diagram illustrating yet another exemplary implementation of a processing system in the IC package of FIG. 10. [Figure 14] FIG. 2 is a block diagram illustrating an example implementation of the IC package of FIG. 1 configured for communication using a streaming interface. [Figure 15] FIG. 11 is a block diagram illustrating an example implementation of the IC package of FIG. 10 configured for communication using a streaming interface. [Figure 16] FIG. 2 is a block diagram illustrating peripheral circuitry in greater detail according to an example. [Figure 17] 1 is a flow diagram illustrating a method of operating a programmable IC in a processing system according to an example. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0030] Detailed Description To facilitate understanding, wherever possible, identical reference numbers are used to designate identical elements common to the figures. It is contemplated that, where useful, elements of one example may be incorporated in other examples.
[0031] Various features are described below with reference to the figures. It should be noted that the figures may or may not be drawn to scale, and that elements of similar structure or function are represented by the same reference numerals throughout the figures. It should be noted that the figures are intended only to facilitate the description of features. They are not intended as an exhaustive description of the claimed invention or as a limitation on the scope of the claimed invention. In addition, the illustrated example need not have all the aspects or advantages shown. An aspect or advantage described in connection with a particular example is not necessarily limited to that example, and may be practiced in any other example, even if not so depicted or explicitly described.
[0032] The integration of programmable devices and processing systems into an integrated circuit (IC) package is described. Exemplary techniques described herein include field programmable gate In one example, a programmable fabric, such as a FPGA fabric, is integrated into a high performance processing system having ring wiring. In one example, an IC package includes a processing system and a programmable IC disposed on a substrate. The processing system and the programmable IC are coupled through wiring on the substrate. The processing system includes a processor and an interface controller and includes components coupled to the ring wiring. The programmable IC includes interface endpoints coupled to the interface controller through wiring on the substrate. The programmable IC also includes peripheral devices coupled to the interface endpoints and configured for communication with the ring wiring of the processing system through the wiring endpoints and the interface controller. In one example, the programmable IC is connected to the ring wiring of the processing system through a Peripheral Component Interface Express (PCIe) connection. In an example, the physical layer of the PCIe connection between the programmable IC and the processing system can be optimized based on known characteristics of the substrate wiring between the programmable IC and the processing system. In another example, an optimized version of another chip-to-chip wiring protocol, such as Intel® Quickpath Interconnect (QPI), Omnipath, Infiniband, etc., can be used instead of PCIe. In this manner, peripherals implemented in a programmable IC can be used as accelerators for a processing system without requiring additional board space for an additional board having a programmable IC with a PCIe socket and a PCIe connector.
[0033] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die (as opposed to being disposed in the same package). The processing system includes components (e.g., a processor and interface circuitry) that are coupled to the ring wiring. The programmable IC includes peripherals that are coupled to and configured for communication with the ring wiring.
[0034] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die (as opposed to being disposed in the same package). The processing system includes components (e.g., processor interface circuitry and memory) that are coupled to the ring wiring. The programmable IC includes peripherals that are coupled to the ring wiring and configured for communication with the ring wiring and the memory.
[0035] In another example, an IC package includes a processing system and a programmable IC disposed on a semiconductor die (as opposed to being disposed in the same package). The processing system includes components coupled to a ring wiring. The ring wiring includes a first sub-ring coupled to a second sub-ring through an inter-ring connector. The components include a processor and an interface circuit. The programmable IC includes at least one peripheral device coupled to the first sub-ring and configured for communication with the first sub-ring.
[0036] These and further aspects of the exemplary techniques are described below with reference to the drawings. FIG. 1 is a block diagram illustrating an integrated circuit (IC) package 102 according to an example. The IC package 102 includes a processing system 104 and a programmable IC 106. The processing system 104 is implemented on a semiconductor die and includes one or more central processing units (CPUs) and other fixed functions including a peripheral interface controller (e.g., a peripheral component interconnect express (PCIe) interface controller, etc.). An exemplary implementation of the processing system 104 is described below with reference to FIG. 2. The programmable IC 106 is implemented on another semiconductor die and can be a field programmable gate array (FPGA), a complex programmable logic device (CPLD), a system-on-chip (SoC) with FPGA / CPLD functionality, or other types of programmable devices. The processing system 104 and the programmable IC 106 are electrically and mechanically mounted to a substrate 118, such as an interposer, a package substrate, etc. The substrate 118 is a semiconductor die that includes a programmable logic device (SoC) ... Disposed in a package 102, which may include a lid or some other form of encapsulation thereon that encapsulates the semiconductor die.
[0037] The processing system 104 may be electrically coupled to the programmable IC 106 through traces 112 formed on the substrate 118 or through direct die stacking. As described further below, the processing system 104 may include an interface controller (e.g., a PCIe controller) coupled to an interface endpoint (e.g., a PCIe endpoint) in the programmable IC 106 through the traces 112. The IC package 102 includes a package interface 108. The package interface 108 may include solder balls, solder bumps, metal pins, etc. The package interface 108 is configured to interface with a printed circuit board (PCB), etc., to electrically and mechanically mount the IC package 102. The processing system 104 may include circuitry coupled to the package interface 108 through traces 116 formed on the substrate 118. The programmable IC 106 may include circuitry coupled to the package interface 108 through traces 114 formed on the substrate 118.
[0038] The package interface 108 can be coupled to other circuitry including, for example, random access memory (RAM) 132, non-volatile memory (NVM) 134, peripherals 136, and support circuits 138. The RAM 132 can include dynamic RAM (DRAM) (e.g., double data rate (DDR) RAM, etc.), static RAM (SRAM), etc. The NVM 134 can include read only memory (ROM) (e.g., electronically erasable programmable ROM (EEPROM)), and / or non-volatile RAM (NVRAM) (e.g., flash memory, solid state storage, etc.). The peripherals 136 can include any type of peripheral circuitry used in computing systems known in the art. The support circuits 138 can include power supplies and the like to support the IC package 102. RAM 132, NVM 134, and peripherals 136 may be referred to as “external” RAM, NVM, and / or peripherals to distinguish these circuits from RAM, NVM, and / or peripherals implemented within IC package 102, as described further herein.
[0039] The programmable IC 106 includes peripheral circuitry 110. The peripheral circuitry 110 is configured for communication with the processing system 104 through an interface (e.g., a PCIe interface). The peripheral circuitry 110 includes hardened circuitry, programmed circuitry, or a combination thereof.
[0040] As used herein, a "hardened circuit" is fabricated as part of an IC. Unlike programmable logic, hardened circuitry is not formed by configuration of programmable logic in a programmable IC. Hardened circuitry is generally considered to have, for example, dedicated circuit blocks and wiring that have a particular functionality and are functional without first loading a configuration bitstream into the programmable IC 106. Hardened circuitry can have one or more operating modes that are configurable or selectable depending on parameter settings. The parameter settings can be achieved, for example, by storing values in one or more memory elements (e.g., registers) in the programmable IC 106. The operating modes can be set, for example, by loading a configuration bitstream into the programmable IC 106. Despite this, hardened circuitry is not considered "programmable logic." In contrast to hardened circuits, the programmed circuits are the circuits that are configured into the programmable logic of the programmable IC by loading a configuration bitstream.
[0041] The IC package 102 includes peripheral circuitry 110 for use by the processing system 104. Some of the peripheral circuitry 110 may be programmed circuitry configured in the programmable logic of the programmable IC 106, allowing the specific type and number of peripherals to be dynamically changed over time. Examples of peripheral circuitry 110 are further described below. The peripheral circuitry 110 provides on-chip or internal peripherals to peripherals 136 external to the IC package 102.
[0042] In one example, the IC package 102 can include one or more other ICs 120. Each IC 120 is realized on a semiconductor die that is mechanically and electrically coupled to the substrate 118. The other ICs 120 can be electrically connected to the processing system 104 through wiring 126 on the substrate 118 and / or to the programmable IC 106 through wiring 130 on the substrate 118. The other ICs 120 can include circuitry that is coupled to the package interface 108 through wiring 128 on the substrate 118. In one example, the other ICs 120 can include RAM 122 and / or non-volatile memory (NVM) 124. The RAM 122 can be coupled to the programmable IC 106, the processing system 104, or both the programmable IC 106 and the processing system 104 (e.g., shared memory). Similarly, the NVM 124 can be coupled to the programmable IC 106, the processing system 104, or both the programmable IC 106 and the processing system 104. The RAM 122 and / or the NVM 124 can be coupled to the package interface 108. The RAM 122 and the NVM 124 can be devices similar to the RAM 132 and the NVM 134, respectively.
[0043] In the above examples, the processing system 104 and the programmable IC 106 are implemented using two separate semiconductor dies mounted on the substrate 118 within the IC package 102. In alternative examples, the processing system 104 and the programmable IC 106 are implemented using a single semiconductor die disposed in the IC package 102. In such cases, the single semiconductor die may be mounted on the substrate 118, or the substrate 118 may be omitted. The other ICs 120 may be implemented on one or more dies separate from the processing system 104 and the programmable IC 106. Alternatively, one or more of the other ICs 120 may be implemented on the same die as the processing system 104 and / or the programmable IC 106.
[0044] In operation, the processing system 104 executes software code that may be stored in the RAM 132 and / or the NVM 134. In response to the execution of the software code, the processing system 104 may communicate with the peripheral circuitry 110 in the programmable IC 106. For example, the peripheral circuitry 110 may perform one or more functions in hardware (e.g., a hardware accelerator) on behalf of the processing system 104. When power is provided to the IC package 102, the programmable IC 106 may be configured to implement at least a portion of the peripheral circuitry 110 using configuration data (e.g., a configuration bitstream) stored in the NVM 124 and / or the NVM 134. After an initial configuration, the programmable IC 106 may be dynamically reconfigured (e.g., using partial reconfiguration) to change the functionality of all or a portion of the peripheral circuitry 110. In one example, the processing system 104 executes the software code to reconfigure the programmable IC 106 (e.g., through a PCIe interface).
[0045] 2 is a block diagram illustrating an example of a processing system 104 and a programmable IC 106. The processing system 104 may include one or more CPUs (e.g., multiple CPUs 202 are shown), one or more cache memories (e.g., multiple cache memories 204 are shown), and / or a programmable IC 106. The CPU 202 may include one or more cores and associated circuitry (e.g., cache memory, memory management unit (MMU), interrupt controller, etc.). In an example, the processing system 104 may include additional components such as a graphics processing unit (GPU) 208, application specific circuitry (e.g., machine learning circuitry), etc. The CPU 202, cache memory, interface circuit 206, and other components (e.g., GPU 208, tensor processing unit (TPU) 209, etc.) are coupled to a ring wiring 210. The ring wiring 210 is an on-die bus between the various components coupled to it. Each component includes a local interface to the ring wiring 210. The various components of the processing system 104 can communicate with each other through the ring wiring 210. The interface circuit 206 provides an off-die interface to the other components (e.g., the CPU 202 and the GPU 208) coupled to the ring wiring 210.
[0046] In one example, ring wiring 210 includes a ring-based topology with an interface for each connected component. Ring wiring 210 can be a bidirectional ring with a data bus of a particular width with separate lines for requests, snoops, and acknowledgments. Each of CPUs 202 is a unique component on ring wiring 210. Similarly, GPUs 208 (if present) are unique components on ring wiring 210. Interface circuits 206 can share an interface to ring wiring 210 or each interface component in interface circuitry 206 can include its own interface to ring wiring 210. Ring wiring 210 can include a variety of topologies (e.g., ring, star, mesh, etc.).
[0047] The cache memory 204 may provide a shared last level cache (LLC) that is connected to the ring wiring 210. Each CPU 202 may be assigned a slice of the shared LLC cache. The LLC cache implemented by the cache memory 204 may also be accessible by other components on the ring wiring 210 (e.g., the GPU 208).
[0048] In one example, the interface circuit 206 includes a PCIe controller 214 and one or more other controllers 216. The other controllers 216 may include a memory controller, a display controller, etc., depending on the components coupled to the ring wiring 210. The CPU 202 is coupled to the PCIe controller 214 through the ring wiring 210. The PCIe controller 214 implements a PCIe root complex on behalf of the CPU 202.
[0049] The peripheral circuitry 110 in the programmable IC 106 includes a PCIe endpoint circuit ("PCIe endpoint 218") and one or more peripherals 230. The programmable IC 106 may also include other circuitry 224. The PCIe endpoint 218 is coupled to the PCIe controller 214 through wiring 112. The PCIe endpoint 218 implements a switch that couples the peripherals 230 to the PCIe controller 214. In one example, the peripherals 230 are configured in the programmable logic of the programmable IC 106, and the PCIe endpoint 218 is a hardened circuit within the programmable IC 106. In other examples, at least a portion of the PCIe endpoint 218 can be configured in the programmable logic of the programmable IC 106. In other examples, one or more of the peripherals 230 can be a hardened circuit within the programmable IC 106. The other circuitry 224 may include programmed circuitry configured in the programmable logic of the programmable IC 106, hardened circuitry within the programmable IC 106, or a combination thereof.
[0050] In another example, each peripheral device 230 may be shared among other peripheral devices 230 and may be programmed. In another example, the programmable IC 106 may include multiple PCIe endpoints, each of which is shared among a group of peripherals 230.
[0051] In an example, the PCIe controller 214 includes an interface 220 that is coupled to the package interface 108 of the IC package 102. This allows the processing system 104 to communicate with additional peripherals (e.g., peripherals 136) outside the IC package 102, if desired. In an example, the interface 220 can be omitted and the PCIe controller 214 communicates only with PCIe endpoints in the programmable IC 106. The other controller 216 includes an interface 222 that is coupled to the package interface 108 of the IC package 102 and / or other ICs 120. The interfaces 220 and 222 can be implemented using the wiring 116 between the processing system 104 and the package interface 108. For example, the other controller 216 can include a memory controller for controlling access to the RAM 132 and / or the RAM 122. The other controller 216 can include circuitry for reading from and writing to the NVM 134 and / or the NVM 124.
[0052] In one example, the other circuitry 224 includes an interface 228. The interface 228 can be coupled to the package interface 108 of the IC package 102, to other ICs 120 (e.g., the NVM 124 shown in FIG. 1), or a combination thereof. In an example, the peripheral circuitry 110 includes an interface 226 that is coupled to the package interface 108 of the IC package 102, to other ICs 120 (e.g., the RAM 122 shown in FIG. 1), or a combination thereof. This allows circuits external to the programmable IC 106 to communicate directly with the peripheral circuitry 110. In some examples, the interface 226 can be omitted. The interfaces 226 and 228 can be implemented using the wiring 114 between the programmable IC 106 and the package interface 108 and / or the wiring 130 between the programmable IC 106 and other ICs 120. In one example, the peripheral circuitry 110 includes an interface 229 to the other circuitry 224. The interface 229 can be implemented using dedicated and / or programmable wiring in the programmable IC 106 .
[0053] In the illustrated example, the peripheral circuitry 110 in the programmable IC 106 is coupled to the ring wiring 210 and components thereon through a PCIe interface implemented by a PCIe controller 214 and a PCIe endpoint 218. Other types of interfaces can be used. For example, the PCIe controller 214 and the PCIe endpoint 218 can be replaced with a quick path wiring (QPI) controller and a QPI endpoint. In another example, the PCIe controller 214 and the PCIe endpoint 218 can be replaced with a custom interface controller and a custom interface endpoint that are specifically designed to support communication between the processing system 104 and the programmable IC 106. Those skilled in the art will recognize that various types of interfaces can be used to enable communication between the peripheral circuitry 110 in the programmable IC 106 and components in the processing system 104 on the ring wiring 210.
[0054] 3 is a block diagram illustrating peripheral circuitry 110 according to one example. Peripheral circuitry 110 generally includes a static area 302 and a programmable area 304. Static area 302 includes interface circuitry 306 (e.g., PCIe endpoints 218 shown in FIG. 2). Programmable area 304 may include peripherals 230. In one example, the programmable area 304 may include peripherals 230. The programmable region 304 also includes several interface circuits 306 A. In some examples, the peripheral circuitry 110 can include more than one programmable region 304, each of which is individually configurable using the peripherals 230.
[0055] The static region 302 is "static" in that its circuit configuration remains constant across reconfigurations of the programmable region 304. In one example, the interface circuits 306 include PCIe endpoint circuits, direct memory access (DMA) controllers, wiring, memory controllers, memory interface circuits (e.g., DDR interfaces), decoupler circuits (supporting partial reconfiguration), flash programmers, debug circuits, etc. In some examples, the programmable region 304 does not include any of the interface circuits 306. In other examples, some of the interface circuits described above (e.g., DMA controllers) can be implemented in the programmable region 304 (as interface circuits 306A).
[0056] FIG. 4 is a block diagram illustrating the peripheral circuitry 110 in more detail according to an example. The peripheral circuitry 110 includes an interface circuit 306 and a peripheral 230. In the example, the interface circuitry 306 includes a PCIe endpoint 218, a DMA controller 404, wiring circuitry ("wiring 406"), a memory controller 410, a memory interface 412, and other interfaces 414. The interface circuitry 306 may include other circuits, which are omitted for clarity (e.g., decoupler circuits, debug circuits, etc.). The PCIe endpoint 218 provides a physical interface to the peripheral bus (e.g., to the PCIe controller 214). The PCIe endpoint 218 may include a media configuration access port (MCAP) 402 for controlling the reconfiguration of the programmable logic implementing the peripheral 230. The DMA controller 404 may include a PCIe controller 404 for controlling the reconfiguration of the programmable logic implementing the peripheral 230. Controller 404 facilitates DMA operations between processing system 104 and peripheral circuitry 110 .
[0057] The wiring 406 couples the DMA controller 404, the peripherals 230, the memory controller 410, and the other interfaces 414. The memory controller 410 is coupled to a memory interface 412. The memory interface 412 can be coupled to RAM external to the programmable IC 106 (e.g., RAM 122 and / or RAM 132), RAM internal to the programmable IC 106 (examples described below), or a combination thereof. The other interface 414 can be coupled to other circuitry 224 in the programmable IC 106 (e.g., other hardened circuitry and / or programmed circuitry).
[0058] In the example, the wiring 406 is an ARM® Advanced Microcontroller Bus Architecture (AMBA®) The wiring 406 is implemented using Advanced Extensible Interface (AXI) wiring defined as part of the IEEE 802.11b standard. AXI4, AXI4-Lite, and AXI4-Stream protocols can be supported. The AXI4 protocol defines a high-performance memory-mapped interface. The AXI4-Lite protocol defines a low-throughput memory-mapped interface. The AXI-Stream protocol defines a high-speed streaming interface. The AXI specification defines an interface between a single AXI master and a single AXI slave. Wiring 406 couples the AXI master to the AXI slave. The AXI4 and AXI4-Lite interfaces include five different channels (i.e., read and write address channels, read and write data channels, and a write response channel). The AXI4-Stream protocol defines a single channel for the transmission of streaming data between the master and the slave. Memory-mapped In AXI (e.g., AXI4 or AXI4-write), all transactions involve a target address within memory space and data to be transferred. In streaming AXI (e.g., AXI-stream), the concept of an address does not exist or is not a requirement. The DMA controller 404, peripherals 230, other interfaces 414, and memory controller 410 each include one or more AXI masters and one or more AXI slaves for communication between each other.
[0059] In operation, the processing system 104 accesses the peripheral circuitry 110 through the PCIe endpoint 218. The processing system 104 can move data to and receive data from the peripheral circuitry 110 using DMA transactions handled by the DMA controller 404. The processing system 104 can move data directly to and receive data directly from the peripheral device 230. The processing system 104 can also move data to and receive data from the memory controller 410. For example, rather than sending data directly to and receiving data from the peripheral device 230, the processing system 104 can move data to the memory controller 410 using DMA transactions to store it in RAM. The peripheral device 230 can access and process the data stored in RAM. The processing system 104 can then retrieve the processed data from the RAM using DMA transactions. In other examples, one or more of the memory controllers 410 are not accessible by the processing system 104 but are dedicated to the peripheral device 230.
[0060] The processing system 104 can also move data directly to and receive data directly from the other interfaces 414. Alternatively, rather than directly sending data to and receiving data from the other interfaces 414, the processing system 104 can use DMA transactions to move data to the memory controller 410 for storage in RAM. The other interfaces 414 can access and process the data stored in RAM. The processing system 104 can then use DMA transactions to retrieve the processed data from the RAM. In another example, one or more of the other interfaces 414 are not accessible by the processing system 104 but are dedicated to the peripherals 230.
[0061] FIG. 5 is a block diagram illustrating a computing system 500 according to an example. The computing system 500 includes hardware 504 and software 506 executing on the hardware 504. The hardware 504 includes an IC package 102 having at least a processing system 104 and a programmable ICD 106 (other ICs 120 are omitted from FIG. 5 for clarity). The hardware 504 also includes circuitry coupled to the IC package 102, such as a RAM 132, an NVM 134, support circuits 138, and peripherals 136. The software 506 includes an operating system (OS) 508, a driver stack 510, and applications 512. The processing system 104 is configured to execute the software 506, which may be stored in the RAM 132 or other storage device, to perform one or more operations described herein. In one embodiment, the IC package 102 may include a FIFO buffer disposed between the processing system 104 and the programmable IC 106 (e.g., the FIFO buffer may be disposed in either or both of the processing system 104 and / or the programmable IC 106).
[0062] OS 508 can be any general-purpose operating system known in the art, such as Linux, Microsoft Windows, Mac OS, etc. Driver stack 510 provides an application programming interface (API) to peripheral circuitry 110 for command and control thereof. The applications 512 include drivers and libraries. The applications 512 include software that calls the peripheral circuitry 110 through the driver stack 510 to perform some task. The applications 512 can include neural networks, video processing, network processing, or similar applications that offload some functionality from the processing system 104 to the peripheral circuitry 110. The applications 512 can also control the configuration of the programmable IC 106 to change the functionality of the peripheral circuitry 110.
[0063] The driver stack 510 may include various libraries, drivers, etc., such as a DMA driver, a hardware abstraction layer (HAL) driver, and a runtime library. The runtime library provides an API for use by the application 512. The runtime library provides an interface between the application 512 and the HAL driver. Similarly, the HAL driver includes an API for use by the runtime library. The HAL driver provides an interface between the runtime library and the DMA driver. The DMA driver includes an API for controlling the peripheral circuitry 110. In particular, the DMA driver includes an API for accessing the peripherals 230, the memory controller 410, and / or other interfaces 414 through the DMA controller 404.
[0064] FIG. 6 is a block diagram illustrating a programmable IC 106 according to an example. The programmable IC 106 includes programmable logic 3, configuration logic 25, and configuration memory 26. The programmable logic 3 includes logic cells 30, support circuits 31, and programmable wiring 32. The logic cells 30 are configurable to realize a common logic function of multiple inputs. The support circuits 31 include dedicated circuits such as transceivers, input / output blocks, digital signal processors, memories, etc. The support circuits 31 may include FIFO buffers for input to and output from the logic cells 30. The logic cells and support circuits 31 are interconnectable using programmable wiring 32. Information for programming the logic cells 30, setting parameters of the support circuits 31, and programming the programmable wiring 32 is stored in the configuration memory 26 by the configuration logic 25. The configuration logic 25 can obtain configuration data from a non-volatile memory 27 or any other source (e.g., from a DRAM 28 or other circuitry 29). In one example, the programmable IC 106 includes a processing system 2. The processing system 2 may include a microprocessor, memory, support circuitry, IO circuitry, etc. The processing system 2 is sometimes referred to as an “embedded” processing system to distinguish it from the processing system 104 in the IC package 102.
[0065] FIG. 7 is a block diagram illustrating a system-on-chip (SoC) implementation of a programmable IC 106 according to an example. In the example, the programmable IC 106 includes a processing system 2 and programmable logic 3. The processing system 2 includes various processing units, such as a real-time processing unit (RPU) 4, an application processing unit (APU) 5, a graphics processing unit (GPU) 6, a configuration and security unit (CSU) 12, and a platform management unit (PMU) 122. The processing system 2 also includes various support circuits, such as an on-chip memory (OCM) 14, a transceiver 7, peripherals 8, wiring 16, a DMA circuit 9, a memory controller 10, peripherals 15, and a multiplexed IO (MIO) circuit 13. The processing units and support circuits are interconnected by wiring 16. The PL 3 is also coupled to wiring 16. The transceiver 7 is coupled to an external pin 24. The PL 3 is coupled to an external pin 23. The memory controller 10 is coupled to an external pin 22. The MIO 13 is coupled to an external pin 20. The PS2 is typically coupled to external pins 21. The APU 5 may include a CPU 17, a memory 18, and support circuits 19.
[0066] 7, the peripheral circuitry 110 may be programmed circuitry, hardened circuitry, or a combination thereof disposed in PL3. In another example, some portion of the peripheral circuitry 110 may be implemented using the PS2. In another example, the PS2 may be accessible through another interface 414 of the peripheral circuitry 110. In such an example, the processing system 104 and / or the peripheral device 230 may access the PS2.
[0067] With reference to the PS2, each of the processing units includes one or more CPUs and associated circuitry such as memory, interrupt controllers, DMA controllers, memory management units (MMUs), floating point units (FPUs), etc. Wiring 16 includes various switches, buses, communication links, etc. configured to interconnect the processing units and also to interconnect other components in the PS2 to the processing units.
[0068] The OCM 14 includes one or more RAM modules that can be distributed throughout the PS2. For example, the OCM 14 can include battery backed RAM (BBRAM), tightly coupled memory (TCM), etc. The memory controller 10 can include a DRAM interface for accessing external DRAM. The peripherals 8, 15 can include one or more components that provide an interface to the PS2. For example, the peripherals 136 can include a graphics processing unit (GPU), a display interface (e.g., a display port, a high definition multimedia interface (HDMI) port, etc.), a universal serial bus (USB) port, an Ethernet port, a universal asynchronous receiver / transmitter (UART) port, a serial peripheral interface (SPI) port, a general purpose IO (GPIO) port, a serial advanced technology attachment (SATA) port, a PCIe port, etc. The peripherals 15 can be coupled to the MIO 13. The peripherals 8 can be coupled to the transceiver 7. The transceiver 7 can include serializer / deserializer (SERDES) circuitry, MGTs, etc.
[0069] FIG. 8 shows a field programmable gate array (FPGA) implementation of the programmable IC 106. The PL3 in the SoC implementation of the programmable IC 106 shown in FIG. 7 may also have the structure shown in FIG. 8. The FPGA implementation includes a number of different programmable tiles, including transceivers 37, configuration logic blocks ("CLBs") 33, random access memory blocks ("BRAMs") 34, input / output blocks ("IOBs") 36, configuration and clock generation logic ("CONFIG / CLOCKS") 42, digital signal processing blocks ("DSPs") 35, specialized input / output blocks ("I / Os") 41 (e.g., configuration and clock ports), and other programmable logic 39, such as digital clock managers, analog-to-digital converters, system monitoring logic, etc. The FPGA may also include a PCIe interface 40, an analog-to-digital converter (ADC) 38, etc.
[0070] In one FPGA, each programmable tile may include at least one programmable interconnect element ("INT") 43 with connections to input / output terminals 48 of programmable logic elements within the same tile, as shown in the example included at the top of Figure 8. Each programmable interconnect element 43 may also include connections to wiring segments 49 of adjacent programmable interconnect elements in the same tile or other tiles. Each programmable interconnect element 43 may also include connections to wiring segments 50 of general routing resources between logic blocks (not shown). General routing resources may include logic blocks with tracks of wiring segments (e.g., wiring segments 50) and switch blocks (not shown) for connecting the wiring segments. The general routing resources may include routing channels between logic blocks (not shown). A wiring segment of a general routing resource (e.g., wiring segment 50) may span one or more logic blocks. Together with the general routing resources, programmable interconnect elements 43 implement a programmable wiring structure ("programmable wiring") for the illustrated FPGA.
[0071] In an exemplary implementation, the CLB 33 may include configurable logic elements ("CLEs") 44 that may be programmed to implement user logic plus a single programmable interconnect element ("INT") 43. The BRAM 34 may include BRAM logic elements ("BRLs") 45 in addition to one or more programmable interconnect elements. Typically, the number of interconnect elements included in a tile depends on the height of the tile. In the illustrated example, the BRAM tile has the same height as five CLBs, although other numbers (e.g., four) may also be used. The DSP tile 35 may include DSP logic elements ("DSPLs") 46 in addition to any appropriate number of programmable interconnect elements. The IOB 36 may include, for example, two instances of input / output logic elements ("IOLs") 47 in addition to one instance of the programmable interconnect element 43. As will be apparent to one skilled in the art, for example, the actual I / O pads connected to the I / O logic elements 47 are typically not confined to the area of the I / O logic elements 47.
[0072] In the depicted example, a horizontal area near the center of the die (shown in FIG. 8) is used for configuration, clocks, and other control logic. Vertical columns 51 extending from this horizontal area or column are used to distribute clock and configuration signals across the width of the FPGA.
[0073] Some FPGAs utilizing the architecture shown in Figure 8 include additional logic blocks that interrupt the regular columnar structure that makes up a large portion of the FPGA. The additional logic blocks may be programmable blocks and / or dedicated logic.
[0074] It should be noted that Figure 8 is intended to depict only an exemplary FPGA architecture. For example, the number of logic blocks in a column, the relative widths of the columns, the number and order of columns, the types of logic blocks included in the columns, the relative sizes of the logic blocks, and the interconnect / logic implementation included at the top of Figure 8 are purely exemplary. For example, in an actual FPGA, more than one adjacent column of CLBs will typically be included wherever a CLB appears to facilitate efficient implementation of user logic, although the number of adjacent CLB columns will vary depending on the overall size of the FPGA.
[0075] FIG. 9 is a flow diagram illustrating a method 900 of operating a programmable IC 106 in an IC package 102 according to an example. Aspects of the method 900 can be understood with reference to FIGS. 1-8 above. The method 900 includes three main stages: at block 902, upon power-up of the IC package 102, the programmable IC 106 is configured. At block 908, a device communicates with the programmable IC 106. At block 916, the programmable IC 106 is reconfigured while the IC package 102 is powered on. There are various use cases for each of the three main stages of operating the programmable IC 106.
[0076] Upon powering on the IC package 102, there are several different processes that can be used to configure the programmable IC 106. The configuration logic 25 of the programmable IC 106 includes a number of different configuration modes, which can be categorized as master and slave modes. In master mode, the configuration logic 25 drives the configuration process. Exemplary master modes include master serial peripheral interface (SPI) mode, master byte peripheral interface (BP) mode, and master byte peripheral interface (BPI) mode. I) mode, Master Serial mode, and Master Select Map (SelectMAP) mode In the master SPI mode, the configuration logic 25 loads the configuration bitstream from an NVM using an SPI protocol. The NVM can be internal to the IC package 102 (e.g., NVM 124) or external to the IC package 102 (e.g., NVM 134). The master BPI mode operates similarly but uses a BPI protocol instead of an SPI protocol. The master serial operates similarly but uses a serial protocol. The master select map mode operates similarly but uses a parallel interface rather than a serial interface. In the slave mode, an external device drives the configuration process. Exemplary slave modes include a slave serial mode and a slave select map mode (parallel). In any of these slave modes, the external device can be the processing system 104 or some other microprocessor or microcontroller (e.g., part of another IC 120 in the IC package 102 or support circuitry 138 external to the IC package 102). The external device reads the configuration data from a memory (e.g., NVM 124 or NVM 134) and provides the configuration data to the configuration logic 25.
[0077] At least a portion of the peripheral circuitry 110 is configured in the programmable IC 106 in block 904. If any other circuitry 224 is present, all or a portion of such other circuitry 224 may also be configured in block 904. For example, the static region 302 of the peripheral circuitry 110 may be configured in block 904. Any of the master and slave modes may be used to configure the programmable IC 106 in block 904. The configuration in block 904 is typically hardware driven, i.e., power is applied to the IC package 102, and the configuration process is performed by the configuration logic 25 (master mode) or an external device (slave mode).
[0078] In some cases, only a portion of the peripheral circuitry 110 (e.g., the static region 302) is configured in block 904. In such a case, the remaining portions of the peripheral circuitry 110 may be configured in block 906. The configuration in block 906 may be hardware-driven or software-driven, as described above. In a software-driven process, for example, the programmable IC 106 may be partially reconfigured to implement the peripheral 230 through the MCAP 402 using the processing system 104.
[0079] At block 908, communications with the programmable IC 106 can be divided into three general categories: At block 910, communications occur between the processing system 104 and the peripheral circuitry 110. At block 912, communications occur between external devices (external to the programmable IC 106) and the peripheral circuitry 110. At block 914, communications occur between internal devices (internal to the programmable IC 106) and the peripheral circuitry 110.
[0080] At block 910, the processing system 104 sends data to and / or receives data from the peripheral circuitry 110 via an interface, such as PCIe. The processing system 104 may transfer data to and from the peripheral circuitry 110 via the interface using DMA transactions. Alternatively, the processing system 104 may stream data to the peripheral circuitry 110 via the interface. In some cases, the processing system 104 may provide data to and from the peripheral circuitry 110 indirectly through a shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106.
[0081] At block 912, devices external to the programmable IC 106 communicate with the peripheral circuitry 110. For example, other ICs 120, support circuits 138, or circuitry within the peripherals 136 may communicate directly with the peripheral circuitry 110. Alternatively, such circuitry may communicate indirectly with the peripheral circuitry 110 through shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106.
[0082] At block 914, devices within the programmable IC 106 communicate with the peripheral circuitry 110. For example, circuits in other circuitry 224 may communicate directly with the peripheral circuitry 110. Alternatively, such circuits may communicate indirectly with the peripheral circuitry 110 through a shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106. Such circuits may be programmed circuits in the programmable logic of the programmable IC 106 or hardened circuits in the programmable IC 106 (e.g., an embedded processing system).
[0083] At block 916, the programmable IC 106 may be reconfigured while power is applied to the IC package 102. For example, at block 918, the programmable IC 106 may be fully reconfigured using a process similar to that described in block 902. Alternatively, at block 920, the programmable IC 106 may be partially reconfigured. For example, one or more peripherals 230 of the peripheral circuitry 110 may be reconfigured to achieve different functionality.
[0084] FIG. 10 is a block diagram illustrating an IC package 1002 according to another example. In this example, the IC package 1002 includes a processing system 104 and a programmable IC 106 formed on a single semiconductor die. The programmable IC 106 includes peripheral circuitry 110, as described above. The programmable IC 106 is coupled to other components in the processing system 104 through one or more ring wiring, as described in the following example. The processing system 104 is coupled to a package interface 1008 through wiring 1003 in the IC package 1002. In the example, the IC package 1002 can include one or more other ICs 1020 that are coupled to the processing system 104. Thus, this example differs from FIG. 1 in that the programmable IC 106 is coupled to an internal ring wiring within the processing system 104, rather than through an interface such as PCIe, QPI, etc.
[0085] 11 is a block diagram illustrating an exemplary implementation of the processing system 104 in an IC package 1002. In this example, the processing system 104 includes a CPU 202, a cache memory 204, and an interface circuit 206, each coupled to the ring wiring 210, as described in the previous examples. Specific to this example, the programmable IC 106 is also coupled to the ring wiring 210. The peripheral circuitry 110 can be implemented as hardened circuits in the programmable IC 106, as programmed circuits in the programmable logic of the programmable IC 106, or as a combination thereof. The interface circuit 206 includes a PCIe controller 214 and other controllers 216, as described above. Alternatively, the PCIe controller 214 can be replaced with any other similar interface controller (e.g., a QPI controller). In the example, the processing system 104 can include other components coupled to the ring wiring 210, such as a GPU 208.
[0086] In this example, the programmable IC 106 can communicate with any other components in the processing system 104 (e.g., CPU 202, cache memory 204, interface circuit 206, GPU 208, etc.) that are coupled to the ring wiring 210. The programmable IC 106 can also communicate with a circuit external to the processing system 104 through the interface circuit 206. It is accessible from the road.
[0087] FIG. 12 is a block diagram illustrating another exemplary implementation of the processing system 104 in the IC package 1002. In this example, the programmable IC 106 is coupled to the ring wiring 210 as described above in the example of FIG. 11. In one example, the programmable IC 106 includes dedicated memory such as memory 1202 (e.g., random access memory (RAM)) and / or cache 1204. The dedicated memories 1202, 1204 are not directly accessible through the ring wiring 210. In another example, the memories 1202, 1204 in the programmable IC 106 can be coupled to the ring wiring 210 and are accessible from other components on the ring wiring 210. In either case, the programmable IC 106 can further include an external interface 1206 for access by circuitry external to the processing system 104. This allows the programmable IC 106 to be directly accessible through the external interface 1206 rather than only through the interface circuitry 206. For example, the external interface 1206 may include a configuration interface for configuring the programmable IC 106. The external interface 1206 may use any type of interface, such as PCIe, QPI, etc. For purposes of clarity, the optional GPU 208 is omitted, but may be included in the processing system 104 shown in FIG.
[0088] FIG. 13 is a block diagram illustrating another exemplary implementation of the processing system 104 in the IC package 1002. In this example, the processing system 104 includes two sub-rings 210A and 210B coupled by an inter-ring connector 1302. The inter-ring connector 1302 can be a router, a bridge, or the like. The programmable IC 106 is coupled to the sub-ring 210B along with the CPU 202, the cache memory 204, and the interface circuitry 206. The CPU 202 and the cache memory 204 are coupled to the sub-ring 210A. In one example, other components can be coupled to the sub-rings 210A and / or 210B. For example, the GPU 208 can be coupled to the sub-ring 210A. With the exception of the sub-rings 210A and 210B, the configuration shown in FIG. 13 is similar to that of FIG. 11. This configuration can support a programmable IC 106 with a sufficiently large bandwidth in which case it would be advantageous to split the ring wiring 210 into sub-rings.
[0089] When a processing system is combined with a programmable IC, communication using a streaming interface between the two is a better communication mode in various applications such as real-time data processing. An alternative is direct memory addressing, which is the dominant communication paradigm. In an example, the wiring between the processing system 104 and the programmable IC 106 can support a streaming mode in addition to the memory addressing mode.
[0090] 14 is a block diagram illustrating an example implementation of an IC package 102 configured for communication using a streaming interface. In the example, the PCIe controller 214 and the PCIe endpoint 218 each include one or more ports 1402. In one mode, the ports 1402 can be configured to communicate using memory addressing. In another mode, the ports 1402 can be configured to communicate using a streaming interface. An example streaming interface is an AMBA® AXI4 streaming interface, although other streaming interfaces can be used. In the example, the ports 1402 can support more than one streaming interface.
[0091] FIG. 15 illustrates an IC package configured for communication using a streaming interface. 1 is a block diagram illustrating an example implementation of a package 1002. In the example, each component coupled to the ring wiring 210 may include one or more ports 1402. In one mode, the ports 1402 may be configured to communicate using memory addressing. In another mode, the ports 1402 may be configured to communicate using a streaming interface. An example streaming interface is the AMBA® AXI4 streaming interface, although other streaming interfaces may be used. In the example, the ports 1402 may support more than one streaming interface.
[0092] FIG. 16 is a block diagram illustrating the peripheral circuitry 110 in more detail according to an example. This example of the peripheral circuitry 110 can be used when the programmable IC 106 is disposed on the same IC die as the processing system 104, as described in various embodiments above (e.g., FIGS. 10-15). The peripheral circuitry 110 includes an interface circuit 1603 and peripherals 230. In this example, the interface circuitry 1603 includes a ring interface 1602, a DMA controller 1604, wiring circuitry ("wiring 1606"), a memory controller 1610, a memory interface 1612, and other interfaces 1614. The interface circuitry 1603 can include other circuits, which (e.g., decoupler circuits, debug circuits, etc.) are omitted for clarity. The ring interface circuitry 1602 provides a physical interface to the ring wiring 210. The ring interface circuitry 1602 translates between the protocol of the ring wiring 210 and the protocol of the wiring 1606. The DMA controller 1604 facilitates DMA operations between the processing system 104 and the peripheral circuitry 110. In some examples, the DMA controller 1604 may be omitted and the ring interface circuit 1602 may be coupled to wiring 1606.
[0093] Wiring 1606 couples DMA controller 1604, peripherals 230, memory controller 1610, and other interfaces 1614. Memory controller 410 is coupled to memory interface 1612. Memory interface 1612 can be coupled to RAM external to programmable IC 106, RAM internal to programmable IC 106 (e.g., memory 1202 and / or cache 1204), or a combination thereof. Other interface 1614 can be coupled to other circuitry in programmable IC 106 (e.g., other hardened and / or programmed circuits).
[0094] In an example, the wiring 1606 is implemented using AXI wiring defined as part of the ARM® Advanced Microcontroller Bus Architecture (AMBA®) standard. For example, the wiring 406 can support AXI4, AXI4-write, and AXI4-stream protocols. The DMA controller 1604, the peripherals 230, the other interfaces 1614, and the memory controller 1610 each include one or more AXI masters and one or more AXI slaves for communication between each other.
[0095] In operation, the processing system 104 accesses the peripheral circuitry 110 through the ring interface circuit 1602. The processing system 104 can move data to and receive data from the peripheral circuitry 110 using memory-mapped or streaming transactions. The processing system 104 can move data directly to and receive data from the peripheral device 230. The processing system 104 can also move data to and receive data from the memory controller 1610. For example, rather than sending data directly to and receiving data from the peripheral device 230, the processing system 104 can move data to and receive data from the memory controller 1610 using DMA transactions. and stored in RAM. The peripherals 230 can access and process the data stored in RAM. The processing system 104 can then retrieve the processed data from RAM. In other examples, one or more of the memory controllers 1610 are not accessible by the processing system 104 but are dedicated to the peripherals 230.
[0096] The processing system 104 can also move data directly to and receive data from the other interfaces 1614. Alternatively, rather than sending data directly to and receiving data from the other interfaces 1614, the processing system 104 can move the data to the memory controller 1610 for storage in RAM. The other interfaces 1614 can access and process the data stored in RAM. The processing system 104 can then retrieve the processed data from the RAM. In other examples, one or more of the other interfaces 1614 are not accessible by the processing system 104 but are dedicated to the peripherals 230.
[0097] FIG. 17 is a flow diagram illustrating a method 1700 of operating a programmable IC 106 in a processing system 104 according to an example. Aspects of the method 900 can be understood with reference to FIGS. 10-16 above (i.e., the programmable IC 106 is disposed on the same IC die as the processing system 104). The method 1700 includes three main steps. At block 1702, upon power-up of the processing system 104, the programmable IC 106 is configured. At block 1708, a device communicates with the programmable IC 106. At block 1716, the programmable IC 106 is reconfigured while the IC package 102 is powered on. There are various use cases for each of the three main steps of operating the programmable IC 106.
[0098] There are several different processes that can be used to configure the programmable IC 106 upon powering on the processing system 104. A master configuration mode can be used to configure the programmable IC 106 using an NVM located in the processing system 104 or located external to the processing system 104. A slave configuration mode can be used to configure the programmable IC 106 using a CPU 202 or other device located on the processing system 104 or using a device external to the processing system 104.
[0099] At least a portion of the peripheral circuitry 110 is configured in the programmable IC 106 in block 1704. If any other circuitry is present, all or a portion of such other circuitry may also be configured in block 1704. Any of the master and slave modes may be used to configure the programmable IC 106 in block 1704. The configuration in block 1704 is typically hardware driven, i.e., power is applied to the processing system 104, and the configuration process is performed by the configuration logic 25 (master mode) or an external device (slave mode).
[0100] In some cases, only a portion of the peripheral circuitry 110 is configured in block 1704. In such a case, the remaining portions of the peripheral circuitry 110 may be configured in block 1706. The configuration in block 1706 may be hardware driven or software driven as described above. In a software driven process, for example, the programmable IC 106 may be partially reconfigured to implement the peripherals 230 using the CPU 202 through the internal configuration access port (ICAP) 1616 (FIG. 16).
[0101] Block 1708 divides communication with the programmable IC 106 into three general categories: In block 1710, communication occurs between the CPU 202 and the peripheral circuitry 110. In block 1712, communication occurs between external devices (external to the programmable IC 106) and the peripheral circuitry 110. In block 1714, communication occurs between internal devices (within the programmable IC 106) and the peripheral circuitry 110.
[0102] At block 1710, the CPU 202 sends data to and / or receives data from the peripheral circuitry 110 via the ring wiring 210. The processing system 104 may transfer data to and from the peripheral circuitry 110 via the ring wiring 210 using memory-mapped or streaming transactions. In some cases, the processing system 104 may provide data to and from the peripheral circuitry 110 indirectly through a shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106.
[0103] At block 1712, devices external to the programmable IC 106 communicate with the peripheral circuitry 110. The external devices may be located within the processing system 104 (e.g., on the ring wiring 210) or external to the processing system 104. Alternatively, such circuits may communicate indirectly with the peripheral circuitry 110 through a shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106.
[0104] At block 1714, devices within the programmable IC 106 communicate with the peripheral circuitry 110. For example, programmed or hardened circuitry in the programmable IC 106 may communicate directly with the peripheral circuitry 110. Alternatively, such circuitry may communicate indirectly with the peripheral circuitry 110 through a shared memory, which may be located within the programmable IC 106 or external to the programmable IC 106.
[0105] At block 1716, the programmable IC 106 may be reconfigured while power is applied to the processing system 104. For example, at block 1718, the programmable IC 106 may be fully reconfigured using a process similar to that described at block 1702. Alternatively, at block 1720, the programmable IC 106 may be partially reconfigured. For example, one or more peripherals 230 of the peripheral circuitry 110 may be reconfigured to achieve different functionality.
[0106] While the foregoing is directed to illustrative embodiments, other and further examples may be devised without departing from the basic scope thereof, which scope is defined by the following claims.
Claims
1. 1. An integrated circuit (IC) package comprising: a processing system and a programmable IC disposed on a substrate, the processing system being coupled to the programmable IC through wiring of the substrate; the processing system includes components coupled to a ring interconnect, the components including a processor and an interface controller; The programmable IC includes: an interface endpoint coupled to the interface controller via the wiring; at least one peripheral device coupled to the interface endpoint and configured to transmit data through the interface endpoint and the interface controller to the ring interconnect of the processing system; The interface endpoint is configured to couple the at least one peripheral device to the interface controller using a switch, the IC package.
2. the at least one peripheral device includes hardened circuitry that is functional without first loading a configuration bitstream into the programmable IC; the at least one peripheral device is configured to transmit data using the hardened circuitry to the ring interconnect of the processing system via the interface endpoint and the interface controller; 10. The IC package of claim 1, wherein the programmable IC further includes other circuitry having programmable circuits configured in the programmable logic of the programmable IC.
3. 1. An integrated circuit (IC) package comprising: a processing system and a programmable IC disposed on a semiconductor die; the processing system includes components coupled to a ring interconnect, the components including a processor and an interface circuit; The programmable IC includes: coupled to the ring interconnect; at least one peripheral device configured for communication with said ring interconnect via an interface endpoint; at least one dedicated memory not accessible through said ring interconnect, and at least one memory accessible through said ring interconnect via said at least one peripheral device; the at least one peripheral device includes one or more hard circuits; The interface endpoint is configured to couple the at least one peripheral device to the interface circuitry using a switch.
4. the at least one peripheral device includes hardened circuitry that is functional without first loading a configuration bitstream into the programmable IC; the at least one peripheral device is configured for communication with the ring interconnect using the hardened circuitry; 4. The IC package of claim 3, wherein the programmable IC further includes other circuitry having programmable circuits configured in the programmable logic of the programmable IC.
5. The IC package of any one of claims 1 to 4, wherein the programmable IC includes a programmable fabric.
6. The IC package of claim 5 , wherein the programmable IC includes an embedded processing system coupled to the programmable fabric.
7. The IC package of claim 5 , wherein said at least one peripheral is programmed into said programmable fabric.
8. The IC package of claim 1 , wherein the interface controller and the interface endpoint each include one or more ports configured for communication using at least one streaming interface.
9. The IC package of claim 1 , wherein the substrate includes a package interface, and the programmable IC is coupled to the package interface.
10. The IC package of any one of claims 1 to 4, further comprising one or more other ICs coupled to the processing system and the programmable IC.
11. 1. An integrated circuit (IC) package comprising: a processing system and a programmable IC disposed on a semiconductor die; The processing system includes components coupled to a ring interconnect, the components including a processor, a plurality of interface circuits, and a plurality of memories; The programmable IC includes: coupled to the ring interconnect; a peripheral circuit configured for communication with the ring interconnect and at least one memory via an interface endpoint; the peripheral circuitry includes a static region of the programmable IC and a programmable region of the programmable IC, the static region including an interface circuit configured for communication with the ring interconnect and the at least one memory, the programmable region including at least one peripheral device in communication with the interface circuit; the at least one peripheral device includes one or more hard circuits; The interface endpoint is configured to couple the at least one peripheral device to the interface circuitry using a switch.
12. the at least one peripheral device includes hardened circuitry that is functional without first loading a configuration bitstream into the programmable IC; the at least one peripheral device is configured for communication with the ring interconnect and the at least one memory using the hardened circuitry; 12. The IC package of claim 11, wherein the programmable IC further includes other circuitry having programmable circuits configured in the programmable logic of the programmable IC.
13. The IC package of claim 11 , wherein said at least one memory of said programmable IC is not coupled to said ring interconnect.
14. The IC package of claim 11 , wherein said at least one memory of said programmable IC is coupled to said ring interconnect.
15. The IC package of claim 11 further comprising a package interface, said programmable IC being coupled to said package interface.
16. The IC package of claim 11 , wherein the programmable IC includes a programmable fabric, and the programmable region is disposed within the programmable fabric.
17. 20. The IC package of claim 16, wherein the programmable IC includes an embedded processing system coupled to the programmable fabric.
18. The IC package of claim 11 , wherein the processor and the programmable IC each include one or more ports configured for communication with at least one streaming interface.
Citation Information
Patent Citations
Field programmable gate array
JP1998209281A
Electronic apparatus, data communication system, and information processing method
JP2015061164A
Programmable logic device and computer using the same
JP2015091045A
Information processing device, power control method of information processing device, and program
JP2016042283A
Communication processing device, communication method, and communication system
JP2017069777A
