The present disclosure relates generally to integrated circuit devices. More particularly, the present disclosure relates to a programmable routing bridge for flexible die-to-die communication to achieve high-capacity integrated circuits, such as high-capacity field programmable gate arrays (FPGAs).
This section is intended to introduce the reader to various aspects of art that may be related to various aspects of the present disclosure, which are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present disclosure. Accordingly, it may be understood that these statements are to be read in this light, and not as admissions of prior art.
Integrated circuit devices are found in numerous electronic devices, from handheld devices, computers, gaming systems, robotic devices, automobiles, and more. Many integrated circuit devices are constructed by assembling multiple dies on a package connected by a fixed interconnect (e.g., interposer or bridge) for signal transfer between the multiple dies. However, the use of a fixed interconnect may limit bandwidth and increases latency of die-to-die communication on the package. As such, the integrated circuit device may have limited bandwidth and increased latency for die-to-die communication as compared to intra-die communication. Moreover, the fixed interconnect generally may only provide fixed point-to-point communication from one location on a die to another location on another die. The behavior of certain integrated circuit devices in the field, such as programmable logic devices, however, may not be known by a manufacturer of the fixed interconnect. As such, the fixed interconnect may provide suboptimal routing between dies. This may further increase latency as the fixed interconnect may serve as a bottleneck or as signals may be further communicated through additional intra-die routing.
Various aspects of this disclosure may be better understood upon reading the following detailed description and upon reference to the drawings in which:
One or more specific embodiments will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
When introducing elements of various embodiments of the present disclosure, the articles “a,” “an,” and “the” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements. Additionally, it should be understood that references to “one embodiment” or “an embodiment” of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features.
Generally, programmable devices (e.g., FPGAs) may be initially unconfigured when manufactured. Subsequently, the programmable devices may be configured and even reconfigured to realize a circuit design via configuration data describing the circuit design. Additionally or alternatively, the programmable device may be partially reconfigured to change a portion of the circuit design (e.g., to switch circuit design personas). The term “program” may include the initial configuration of the programmable device and/or the partial configuration of a target partition(s) of the programmable device. Further, the term “reprogram” may include the reconfiguration of the programmable device and/or the partial reconfiguration of the target partition(s) of the programmable device once the programmable device has already been programmed.
The present disclosure describes systems and methods relating to a programmable routing bridge for flexible die-to-die communication to achieve high-capacity integrated circuits, such as field programmable gate arrays (FPGAs). To provide high-bandwidth, low-latency communication between multiple dies of an integrated circuit system, a programmable routing bridge may provide efficient point-to-point communication across dies, such as die-to-die communication. In one particular example, the integrated circuit system may include four dies mounted on a substrate and communicatively coupled by the programmable routing bridge. The programmable routing bridge may be an integrated circuit die (e.g., chip) embedded within the substrate or, in some cases, an interposer on which multiple dies are disposed. Indeed, while this disclosure refers to a programmable routing bridge, the systems and methods of this disclosure may also be used in an interposer. A surface of the programmable routing bridge may connect to (e.g., interface with) a surface of each of the four dies with any suitable interconnect structure (e.g., microbumps). Thus, the dies may mount to microbumps of the programmable routing bridge, creating the integrated circuit system.
Signals or data may be routed by the programmable routing bridge between the dies of the integrated circuit system using programmable routing of the type found in field programmable gate arrays (FPGAs) (e.g., an FPGA by Intel Corporation) or structured application specific integrated circuits (ASICs) (e.g., a structured ASIC such as eASIC™ by Intel Corporation). This stands in contrast to systems that use fixed die-to-die communication circuitry (e.g., an interposer, bridge, die-to-die interconnect) that provide fixed communication channels. In those systems, data destined from a first die to a third die may sometimes be routed from the first die to a second die before being passed on to the third die. Each hop between dies may introduce a latency (e.g., of approximately 1 nanosecond (ns)) while rerouting logic on the intervening dies may introduce additional latency (e.g., between 10 to 15 ns). Thus, a two-hop design from the first die to the second die to the third die may result in ten-fold or more increase in latency. The programmable routing bridge of this disclosure may reduce the number of hops within the integrated circuit device. For example, with the programmable routing bridge, the signals and/or data may be directed routed from the first die to the third die through the programmable routing bridge. That is, the programmable routing bridge may allow for one-to-one die communication to decrease die-to-die hops within the integrated circuit system. Indeed, the programmable routing bridge enables routing data in a one-hop design.
The programmable routing bridge may also implement mapping functions to reduce die-to-die hops within the integrated circuit system. Indeed, the mapping functions may define a configuration bitstream that may be separate from or part of a configuration bitstream storing the circuit design program (when the programmable routing bridge has FPGA-type routing circuitry) or a permanent programmable design (when the programmable routing bridge has structured ASIC circuitry). For example, a designer may program the programmable routing bridge with routing pathways (e.g., pathways based on the mapping functions) to route data between the first die and the third die or vice versa. As such, data may be routed directly from the first die to the third die. In another example, the designer may configure the routing pathway to route data between the fourth die and the second die or vice versa. In this way, the programmable routing bridge may be configurable to switch the routing pathway in different directions and allow for flexible die-to-die connection between the dies of the integrated circuit system. Accordingly, employing the programmable routing bridge between multiple dies of the integrated circuit system, one-to-one die connections may be created, which may improve bandwidth and latency of the system.
The dies may be communicatively coupled to one or more tiles for off-package data transfer. As used herein, a tile is a term for a die that has a specific purpose, usually to support another die (e.g., a tile may be a daughter die that provides input/output (I/O) circuitry or high speed serial interconnect (HSSI) circuitry to a mother die). For example, some tiles may be coupled to one or more edges of the die along a periphery of a package and may include transceivers to send or receive off-package data. As an aside, some tiles may be designed for die-to-die communication according to certain interfaces specific to certain dies. The programmable routing bridge may allow even dies designed for a one particular die-to-die interface to communicate with dies having different die-to-die interfaces by using programmable routing to connect to the die-to-die interfaces as appropriate. In some cases, this may allow dies to be connected to other dies (including tiles) in any manner. Thus, many dies may use the same die-to-die interface, allowing a first die and a second die that are to be placed in a different orientation to be identical (or nearly identical) dies that may be manufactured at the same time. Accordingly, the integrated circuit system may be created with identical dies communicatively coupled with the programmable routing bridge, which may involve fewer steps in the manufacturing process and may be more efficient. Likewise, this may also allow tiles supporting the first die or second die to be manufactured to be identical (or nearly identical).
In some examples, the programmable routing bridge may be a structured application specific integrated circuit (e.g., a structured ASIC such as eASIC™ by Intel Corporation). To manufacture the integrated circuit system, the manufacturer may pattern a first number of layers with a first set of masks. The manufacturer may use other masks to pattern one or more vias. The pattern of vias may effectively “program” the circuitry of the programmable routing bridge. In this way, the manufacturer may produce a routing bridge that allows the integrated circuit system to route data between the dies in a certain manner according to particular mapping functions. For example, the manufacturer may want data routed between a first die and a third die, without routing data through a second die. As such, the manufacturer may configure one or more via layers between metal layers to route data between the first die and third die. Connecting certain vias may have a similar effect on other circuit layers of the structured ASIC as storing configuration bits for routing data in an FPGA. As such, the manufacturer may implement the routing pathway by choosing whether to pattern or not to pattern different vias of the one or more via layers.
The integrated circuit system according to this disclosure may take any suitable form. One example is that of a programmable logic device that includes programmable logic circuitry (e.g., programmable logic fabric, FPGA).
The integrated circuit system 12 may include any programmable logic device, such as a field programmable array (FPGA) 40, as shown in
In the example of
To program the sectors 48, the configuration data associated with the circuit design may be stored in the configuration memory 52 of the appropriate programmable logic elements 50. As such, the sectors 48 and logic elements 50 may include additional logic elements to facilitate the storage of configuration data, such as wires, gates, and registers. For example, during programming, the configuration data may be loaded into data registers and subsequently into the configuration memory 52 using pins and input/output circuitry. Additionally or alternatively, a power supply may provide a source of voltage and current to a power distribution network (PDN) that distributes electrical power to the various components of the FPGA 40. Operating the circuitry of the FPGA 40 causes power to be drawn from the power distribution network.
There may be any suitable number of programmable logic sectors 48 on the FPGA 40. Indeed, while 29 programmable logic sectors 48 are shown here, it should be appreciated that more or fewer may appear in an actual implementation (e.g., in some cases, on the order of 1, 5, 10, 50, 100, 500, 1000, 5000, 10,000, 50,000, or 100,000 sectors or more). Different programmable logic sectors 48 may include a sector controller (SC) 58 that controls the operation of the programmable logic sectors 48. Each sector controller 58 may be in communication with a device controller (DC) 60. Each sector controller 58 may accept commands and data from the device controller 60 and may read data from and write data into its configuration memory 52 based on control signals from the device controller 60. In addition to these operations, the sector controller 58 may be augmented with numerous additional capabilities. For example, such capabilities may include locally sequencing reads and writes to implement error detection and correction on the configuration memory 52 and sequencing test control signals to effect various test modes.
The sector controllers 58 and the device controller 60 may be implemented as state machines and/or processors. For example, each operation of the sector controllers 58 or the device controller 60 may be implemented as a separate routine in a memory containing a control program. This control program memory may be fixed in a read-only memory (ROM) or stored in a writable memory, such as random-access memory (RAM). The ROM may have a size larger than would be used to store only one copy of each routine. This may allow each routine to have multiple variants depending on “modes” the local controller may be placed into. When the control program memory is implemented as random access memory (RAM), the RAM may be written with new routines to implement new operations and functionality into the programmable logic sectors 48. This may provide usable extensibility in an efficient and easily understood way. This may be useful because new commands could bring about large amounts of local activity within the sector at the expense of only a small amount of communication between the device controller 60 and the sector controllers 58.
Each sector controller 58 thus may communicate with the device controller 60, which may coordinate the operations of the sector controllers 58 and convey commands initiated from outside the FPGA device 40. To support this communication, the interconnection resources 46 may act as a network between the device controller 60 and each sector controller 58. The interconnection resources may support a wide variety of signals between the device controller 60 and each sector controller 58. In one example, these signals may be transmitted as communication packets.
The FPGA 40 may be electrically programmed. With electrical programming arrangements, the programmable elements 50 may include one or more logic elements (wires, gates, registers, etc.). For example, during programming, configuration data (e.g., mapping function) is loaded into the configuration memory 52 using pins and input/output circuitry. In one example, the configuration memory 52 may be implemented as configuration random-access-memory (CRAM) cells. As discussed below, in some embodiments, the configuration data may be loaded into the FPGA 40 using an update to microcode of the processor in which the FPGA 40 is embedded. The use of configuration memory 52 based on RAM technology is described herein is intended to be only one example. Moreover, configuration memory 52 may be distributed (e.g., as RAM cells) throughout the various programmable logic sectors 48 the FPGA 40. The configuration memory 52 may provide a corresponding static control output signal that controls the state of an associated programmable logic element 50 or programmable component of the interconnection resources 46. The output signals of the configuration memory 52 may be applied to the gates of metal-oxide-semiconductor (MOS) transistors that control the states of the programmable logic elements 50, or programmable components of the interconnection resources 46.
The programmable elements 50 of the FPGA 40 may also include some communication wires to transfer a signal. In an embodiment, the programmable logic sectors 48 may be provided in the form of vertical routing channels (e.g., interconnects formed along a y-axis of the FPGA 40) and horizontal routing channels (e.g., interconnects formed along an x-axis of the FPGA 40). The FPGA 40 may include one or more function blocks 76, which may be partial reconfiguration regions of the programmable logic elements 50 of the FPGA 40 that may be modified (i.e. partially reconfigured) to implement new logic. The function blocks may implement logic that performs a particular task, such as routing data, which may be user-defined. Data, such as communication packets, may be transferred between the function blocks and/or the interconnection resources 46 of the FPGA 40. Further, the interconnection resources 46 may enable data to be transmitted and received by the FPGA 40. As further described herein, data may be communicated between dies of the integrated circuit system 12.
For example,
The programmable routing bridge 84 may be an embedded integrated circuit having FPGA routing circuitry in the manner of the FPGA 40 described in
In the illustrated example,
In the example shown in
When the programmable routing bridge 84 uses FPGA routing circuitry to route data, the programmable routing bridge may be reprogrammed (e.g., reconfigured or partially reconfigured) based on other mapping functions. In one example, the programmable routing bridge 84 may be reprogrammed according to another mapping function that may define a routing pathway 144 to transfer data from the first microbump 122a to the third microbump 122c or vice versa. In another example, the programmable routing bridge 84 may be reprogrammed according to another mapping function that may define a routing pathway 146 to transfer data from the first microbump 122a to the fourth microbump 122d or vice versa. The programmable routing bridge 84 may be programmed or reprogrammed based on configuration data. The configuration data may be a set of configuration data that is specific to the mapping function of the programmable routing bridge 84 or that is part of configuration data for a system design of the integrated circuit system 12.
The programmable routing bridge 84 may include ingress/egress circuitry 150 and configurable routing switches 152 connected to one another by routing wires 154 (e.g., as shown connecting two switches 152a and 152b). The ingress/egress circuitry 150 is connected to respective microbumps of the programmable routing bridge 84 and may include any suitable driver and/or receiver circuitry to receive or send data over the microbumps. The ingress/egress circuitry 150 may be configurable to pass data to or receive data from a particular configurable routing switch 152. Indeed, the values programmed into the CRAM of the programmable routing bridge 84 may define the routing behavior of the ingress/egress circuitry 150 and the configurable routing switches 152 to transmit the data in a certain direction (e.g., up, down, left, right) based on the configuration data. By programming CRAM associated with different configurable routing switches 152 with certain configuration data, routing paths through the configurable routing switches 152 and routing wires 154 may be defined across the programmable routing bridge 84. Although not expressly shown, the programmable routing bridge 84 may or may not include logic block circuitry (e.g., adaptive logic modules (ALMs), configurable logic blocks (CLBs)). Moreover, there may be more or fewer ingress/egress circuitry 150 blocks and configurable routing switches 152. Furthermore,
Using the programmable routing bridge 84, the integrated circuit system 12 may have a flexible die-to-die connection that can be programmed to support a particular application of the integrated circuit system 12. For example,
Returning to the example of
Because the programmable routing bridge 84 is programmable, a different application (e.g., configuration program, use case) of the integrated circuit system 12 may use the programmable routing bridge 84 with a different configuration with a different mapping function. Likewise, a different integrated circuit system 12 having different dies 80a, 80b, 80c, and 80d may also use the programmable routing bridge 84 with a different configuration with a different mapping function. Thus, in an example shown in
In addition, in
For example,
The first die 80a and the second die 80b may be mounted to any location of the programmable routing bridge 84. During manufacturing, the manufacturer may create the first die 80a and the second die 80b at the same time. The manufacturer may rotate the first die 80a by 180 degrees to create the second die 80b. In other words, the first die 80a and the second die 80b may be identical (or nearly identical) dies. Further, the manufacturer may mount the first die 80a and the second die 80b to any location of the programmable routing bridge 84, thereby reducing the number of manufacturing steps involved in creating the integrated circuit system 12.
In the example of
Thus, in some cases, the first die 80a may be identical or nearly identical to the third die 80c. When creating the integrated circuit system 12, the manufacturer may rotate the first die 80a by 180 degrees to get the third die 80c. As such, the manufacturer may avoid manufacturing separate right-handed and left-handed dies to accommodate a fixed interconnect bridge. Accordingly, the programmable routing bridge 84 may decrease manufacturing complexity and increase cost-efficiency by allowing the dies to communicatively couple at any location.
In another example of
In the illustrative example of
The integrated circuit system 12 may also use a programmable routing bridge 84 to couple to a tile 44.
The method 170 includes various steps represented by blocks. Although the flow chart illustrates the steps in a certain sequence, it should be understood that the steps may be performed in any suitable order and certain steps may be carried out simultaneously, where appropriate. Further, certain steps or portions of the method 170 may be performed by separate systems or devices.
For example, the first and second sets of layers may include structured logic circuit layers with via possible via locations that may be filled or unfilled in specified locations. The first and second sets of layers may be patterned using sets of masks that are reused for a variety of end products. The sets of masks to pattern the via layers, however, may be customized based on a desired mapping function. This greatly reduces the total number of masks involved in manufacturing the programmable routing bridge as a structured ASIC. Depending on which via locations are selectively filled with metal, the underlying circuitry (e.g., connection components) may change the manner in which data is routed through the programmable routing bridge. For example, the behavior of configurable routing switches formed in the first set of layers and/or the second set of layers may be defined by which via locations are filled. In this way, filling via locations may be comparable to programming CRAM.
The method 220 includes various actions represented by blocks. Although the flow chart illustrates the actions in a certain sequence, the actions may be performed in any suitable order and certain actions may be carried out simultaneously, where appropriate. Further, certain actions or portions of the method 220 may be performed by separate systems or devices.
Bearing the foregoing in mind, the integrated circuit system 12 may be a component included in a data processing system, such as a data processing system 500, shown in
The data processing system 500 may be part of a data center that processes a variety of different requests. For instance, the data processing system 500 may receive a data processing request via the network interface 506 to perform encryption, decryption, machine learning, video processing, voice recognition, image recognition, data compression, database search ranking, bioinformatics, network security pattern identification, spatial navigation, digital signal processing, or other specialized tasks.
The techniques and methods described herein may be applied with other types of integrated circuit systems. For example, the programmable routing bridge described herein may be used with central processing units (CPUs), graphics cards, hard drives, or other components.
While the embodiments set forth in the present disclosure may be susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and have been described in detail herein. However, the disclosure is not intended to be limited to the particular forms disclosed. The disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the following appended claims.
The techniques presented and claimed herein are referenced and applied to material objects and concrete examples of a practical nature that demonstrably improve the present technical field and, as such, are not abstract, intangible or purely theoretical. Further, if any claims appended to the end of this specification contain one or more elements designated as “means for [perform]ing [a function] . . . ” or “step for [perform]ing [a function] . . . ”, it is intended that such elements are to be interpreted under 35 U.S.C. 112(f). However, for any claims containing elements designated in any other manner, it is intended that such elements are not to be interpreted under 35 U.S.C. 112(f).
EXAMPLE EMBODIMENT 1. An integrated circuit system comprising: a first die on a substrate; a second die on the substrate; and a programmable routing bridge embedded in the substrate, wherein the programmable routing bridge is mounted to the first die and the second die, and wherein the programmable routing bridge is configurable to transfer data between selectable points of the first die and selectable points of the second die.
EXAMPLE EMBODIMENT 2. The integrated circuit system of example embodiment 1, wherein the programmable routing bridge comprises a microbump array to communicatively couple to a first interface of the first die and a second interface of the second die.
EXAMPLE EMBODIMENT 3. The integrated circuit system of example embodiment 2, wherein the first interface and the second interface comprise advanced interface bus (AIB) circuitry, universal interface bus (UIB) circuitry, or advanced extensible interface (AXI) circuitry to transfer data to and receive data from the microbump array of the programmable routing bridge.
EXAMPLE EMBODIMENT 4. The integrated circuit system of example embodiment 1, comprising a third die on the substrate, wherein the programmable routing bridge is mounted to the third die, and wherein the programmable routing bridge is configurable to transfer data between selectable points of the third die to selectable points of the first die or selectable points of the second die.
EXAMPLE EMBODIMENT 5. The integrated circuit system of example embodiment 4, wherein the first die, the second die, and the third die are disposed in a 3×1 or 1×3 arrangement on the substrate, and wherein the integrated circuit system comprises: another programmable routing bridge embedded in the substrate, wherein the other programmable routing bridge is mounted to the second die and the third die, and wherein the other programmable routing bridge is configurable to transfer data between selectable points of the second die and selectable points of the third die.
EXAMPLE EMBODIMENT 6. The integrated circuit system of example embodiment 4, comprising a fourth die on the substrate, wherein the first die, the second die, the third die, and the fourth die are disposed in a 2×2 arrangement on the substrate, and wherein the programmable routing bridge is configurable to transfer data between selectable points of the first die, selectable points of the second die, selectable points of the third die, and selectable points of the fourth die.
EXAMPLE EMBODIMENT 7. The integrated circuit system of example embodiment 6, wherein the programmable routing bridge is communicatively coupled to a first interface of the first die, a second interface of the second die, a third interface of the third die, and a fourth interface of the fourth die.
EXAMPLE EMBODIMENT 8. The integrated circuit system of example embodiment 7, wherein the first interface of the first die is in one quadrant of the first die, the second interface of the second die is in one quadrant of the second die, the third interface of the third die is in one quadrant of the third die, and the fourth interface of the fourth die is in one quadrant of the fourth die.
EXAMPLE EMBODIMENT 9. The integrated circuit system of example embodiment 7, wherein the first die, the second die, the third die, and the fourth die are identical.
EXAMPLE EMBODIMENT 10. The integrated circuit system of example embodiment 1, comprising: a third die on the substrate; a fourth die on the substrate; a fifth die on the substrate; a sixth die on the substrate; and another programmable routing bridge embedded in the substrate; wherein the programmable routing bridge is mounted to the first die, the second die, the third die, and the fourth die, and wherein the programmable routing bridge is configurable to transfer data between selectable points of the first die, selectable points of the second die, selectable points of the third die, and selectable points of the fourth die; and wherein the other programmable routing bridge is mounted to the third die, the fourth die, the fifth die, and the sixth die, and wherein the programmable routing bridge is configurable to transfer data between selectable points of the third die, selectable points of the fourth die, selectable points of the fifth die, and selectable points of the sixth die.
EXAMPLE EMBODIMENT 11. The integrated circuit system of example embodiment 1, wherein at least one of the first die or the second die comprises field programmable gate array circuitry.
EXAMPLE EMBODIMENT 12. The integrated circuit system of example embodiment 1, wherein at least one of the first die or the second die comprises a processor.
EXAMPLE EMBODIMENT 13. An integrated circuit system comprising: a first die on a substrate; a second die on the substrate; and a programmable routing bridge embedded in the substrate, wherein the programmable routing bridge is mounted to the first die and the second die, and wherein the programmable routing bridge is via-configured to transfer data between defined points of the first die and defined points of the second die.
EXAMPLE EMBODIMENT 14. The integrated circuit system of example embodiment 13, comprising a third die and a fourth die mounted to the programmable routing bridge, and wherein the programmable routing bridge is configured to transfer data between defined points of the third die and defined points of the fourth die.
EXAMPLE EMBODIMENT 15. An article of manufacture comprising one or more tangible, non-transitory, machine-readable media having instructions stored thereon that, when executed by one or more processors, cause the one or more processors to: generate configuration data; and transfer the configuration data to an integrated circuit system that includes a programmable routing bridge connected to a first die and a second die in a package to cause the programmable routing bridge to become configured to transfer data between the first die and the second die.
EXAMPLE EMBODIMENT 16. The article of manufacture of example embodiment 15, wherein the instructions to generate the configuration data comprise instructions that, when executed, cause the one or more processors to generate the configuration data according to a first mapping function that defines a first set of die-to-die pathways between the first die and the second die.
EXAMPLE EMBODIMENT 17. The article of manufacture of example embodiment 16, wherein: the instructions to generate the configuration data comprise instructions that, when executed, cause the one or more processors to also generate the configuration data according to a second mapping function different from the first mapping function that defines a second set of die-to-die pathways between the first die and the second die; and the instructions to transfer the configuration data comprise instructions that, when executed, cause the one or more processors to transfer the configuration data to the integrated circuit system to cause the programmable routing bridge to become configured to transfer data between the first die and the second die according to the first mapping function or the second mapping function.
EXAMPLE EMBODIMENT 18. The article of manufacture of example embodiment 15, wherein: the instructions to generate the configuration data comprise instructions that, when executed, cause the one or more processors to generate the configuration data based on a system design corresponding to a configuration of programmable logic circuitry of the first die or the second die; and the instructions to transfer the configuration data to the integrated circuit system comprise instructions that, when executed, cause the one or more processors to transfer the configuration data to the integrated circuit system to cause the programmable logic circuitry of the first die or the second die to be configured with the system design.
EXAMPLE EMBODIMENT 19. A method comprising: at a first time, programming a programmable routing bridge of an integrated circuit to provide in-package die-to-die communication between a first die and a second die according to a first mapping function; and at a second time, programming the programmable routing bridge of the integrated circuit to provide in-package die-to-die communication between the first die and the second die according to a second mapping function.
EXAMPLE EMBODIMENT 20. The method of example embodiment 19, wherein the first mapping function and the second mapping function causes the programmable routing bridge to be programmed to provide different pathways between the first die and the second die.
EXAMPLE EMBODIMENT 21. A programmable routing bridge comprising: a plurality of configurable routing switches; a plurality of routing wires coupled to the configurable routing switches; and a plurality of ingress or egress circuits coupled to the plurality of routing wires, wherein the ingress or egress circuits are to connect to a first die of an integrated circuit system package and a second die of an integrated circuit system package; wherein the configurable routing switches are configurable to route data received from the first die via a first of the plurality of ingress or egress circuits to the second die via a second of the plurality of ingress or egress circuits.
EXAMPLE EMBODIMENT 22. The programmable routing bridge of example embodiment 21, wherein the plurality of configurable routing switches are configurable by configuration data stored in configuration random access memory.
EXAMPLE EMBODIMENT 23. The programmable routing bridge of example embodiment 21, wherein the plurality of configurable routing switches are via-configurable at manufacture.