US20200097362A1 - Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer - Google Patents
Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer Download PDFInfo
- Publication number
- US20200097362A1 US20200097362A1 US16/699,225 US201916699225A US2020097362A1 US 20200097362 A1 US20200097362 A1 US 20200097362A1 US 201916699225 A US201916699225 A US 201916699225A US 2020097362 A1 US2020097362 A1 US 2020097362A1
- Authority
- US
- United States
- Prior art keywords
- integrated circuit
- error
- odd
- scheme
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 title description 11
- 239000011159 matrix material Substances 0.000 claims abstract description 54
- 230000002950 deficient Effects 0.000 claims abstract description 20
- 208000011580 syndromic disease Diseases 0.000 claims description 57
- 230000000630 rising effect Effects 0.000 claims description 14
- 230000008901 benefit Effects 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract description 10
- 238000012937 correction Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 229910000679 solder Inorganic materials 0.000 description 9
- 238000007667 floating Methods 0.000 description 8
- 239000000758 substrate Substances 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2224/00—Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
- H01L2224/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L2224/10—Bump connectors; Manufacturing methods related thereto
- H01L2224/12—Structure, shape, material or disposition of the bump connectors prior to the connecting process
- H01L2224/13—Structure, shape, material or disposition of the bump connectors prior to the connecting process of an individual bump connector
- H01L2224/13001—Core members of the bump connector
- H01L2224/13099—Material
- H01L2224/131—Material with a principal constituent of the material being a metal or a metalloid, e.g. boron [B], silicon [Si], germanium [Ge], arsenic [As], antimony [Sb], tellurium [Te] and polonium [Po], and alloys thereof
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2224/00—Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
- H01L2224/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L2224/10—Bump connectors; Manufacturing methods related thereto
- H01L2224/12—Structure, shape, material or disposition of the bump connectors prior to the connecting process
- H01L2224/14—Structure, shape, material or disposition of the bump connectors prior to the connecting process of a plurality of bump connectors
- H01L2224/1401—Structure
- H01L2224/1403—Bump connectors having different sizes, e.g. different diameters, heights or widths
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2224/00—Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
- H01L2224/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L2224/10—Bump connectors; Manufacturing methods related thereto
- H01L2224/15—Structure, shape, material or disposition of the bump connectors after the connecting process
- H01L2224/16—Structure, shape, material or disposition of the bump connectors after the connecting process of an individual bump connector
- H01L2224/161—Disposition
- H01L2224/16151—Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive
- H01L2224/16221—Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked
- H01L2224/16225—Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation
- H01L2224/16227—Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation the bump connector connecting to a bond pad of the item
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/48—Arrangements for conducting electric current to or from the solid state body in operation, e.g. leads, terminal arrangements ; Selection of materials therefor
- H01L23/488—Arrangements for conducting electric current to or from the solid state body in operation, e.g. leads, terminal arrangements ; Selection of materials therefor consisting of soldered or bonded constructions
- H01L23/498—Leads, i.e. metallisations or lead-frames on insulating substrates, e.g. chip carriers
- H01L23/49811—Additional leads joined to the metallisation on the insulating substrate, e.g. pins, bumps, wires, flat leads
- H01L23/49816—Spherical bumps on the substrate for external connection, e.g. ball grid arrays [BGA]
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/52—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames
- H01L23/538—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames the interconnection structure between a plurality of semiconductor chips being formed on, or in, insulating substrates
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L23/00—Details of semiconductor or other solid state devices
- H01L23/52—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames
- H01L23/538—Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames the interconnection structure between a plurality of semiconductor chips being formed on, or in, insulating substrates
- H01L23/5385—Assembly of a plurality of insulating substrates
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L24/00—Arrangements for connecting or disconnecting semiconductor or solid-state bodies; Methods or apparatus related thereto
- H01L24/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L24/10—Bump connectors ; Manufacturing methods related thereto
- H01L24/12—Structure, shape, material or disposition of the bump connectors prior to the connecting process
- H01L24/13—Structure, shape, material or disposition of the bump connectors prior to the connecting process of an individual bump connector
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L24/00—Arrangements for connecting or disconnecting semiconductor or solid-state bodies; Methods or apparatus related thereto
- H01L24/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L24/10—Bump connectors ; Manufacturing methods related thereto
- H01L24/12—Structure, shape, material or disposition of the bump connectors prior to the connecting process
- H01L24/14—Structure, shape, material or disposition of the bump connectors prior to the connecting process of a plurality of bump connectors
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L24/00—Arrangements for connecting or disconnecting semiconductor or solid-state bodies; Methods or apparatus related thereto
- H01L24/01—Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
- H01L24/10—Bump connectors ; Manufacturing methods related thereto
- H01L24/15—Structure, shape, material or disposition of the bump connectors after the connecting process
- H01L24/16—Structure, shape, material or disposition of the bump connectors after the connecting process of an individual bump connector
Definitions
- This relates generally to integrated circuits and more particularly, to data transfer between two or more integrated circuit dies.
- an interconnect redundancy scheme may be implemented to help repair potentially faulty interconnects to improve assembly yield.
- a faulty interconnect may be repaired using an active redundancy scheme by selectively switching into use a spare driver block or by using a passive redundancy scheme using two or more duplicate paths for each critical signal.
- Such type of redundancy scheme that uses spare drivers or spare paths requires redundancy configuration before the data is transmitted. In other words, configuration data has to be first transferred from one die to another to configure/initial the desired redundancy scheme.
- ECC error correcting code
- FIG. 1 is a diagram of an illustrative inter-die interconnection path in accordance with an embodiment.
- FIG. 2 is a cross-sectional side view of an illustrative multichip package that includes at least two integrated circuit dies operable to communicate with one another in accordance with an embodiment.
- FIG. 3A is a diagram of a single data rate communications scheme.
- FIG. 3B is a diagram of a double data rate communications scheme in accordance with an embodiment.
- FIG. 4 is a flow chart of steps for dividing data into even and odd bits prior to encoding the data.
- FIG. 5 is a table showing how 26 microbumps are needed to transfer 40 data bits and 12 parity bits using the
- FIG. 6 is a table illustrating the total number of microbumps needed as a function of the number of data bits using the ECC encoding scheme shown in FIG. 4 .
- FIG. 7A is a table illustrating how a microbump defect can result in a single odd data bit error in accordance with an embodiment.
- FIG. 7B is a table illustrating how a microbump defect can result in a single even data bit error in accordance with an embodiment.
- FIG. 7C is a table illustrating how a microbump defect can result in erroneous odd and even data bits in accordance with an embodiment.
- FIG. 7D is a table illustrating how a microbump defect can result in no error bits in accordance with an embodiment.
- FIG. 8A is a diagram of an illustrative error correcting code (ECC) encoder circuit in accordance with an embodiment.
- ECC error correcting code
- FIG. 8B is a diagram of an illustrative error correcting code (ECC) decoder circuit in accordance with an embodiment.
- ECC error correcting code
- FIG. 9 is a flow chart of illustrative steps for encoding data bits using a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) ECC scheme suitable for double data rate (DDR) transfer and decoding the corresponding encoded data bits in accordance with an embodiment.
- SEC-DED-DAEC double adjacent error correcting
- FIG. 10A is a diagram of an illustrative parity check matrix for an ECC( 16 , 10 ) encoding scheme satisfying the four constraints shown in FIG. 9 in accordance with an embodiment.
- FIG. 10B is a diagram illustrating additional parity bits that can be generated for double adjacent errors at the same microbump in accordance with an embodiment.
- FIG. 11 is a table illustrating the total number of microbumps needed as a function of the number of data bits using the ECC encoding scheme shown in FIG. 9 .
- FIG. 12 is a plot illustrating how the ECC scheme of FIG. 9 requires much fewer parity bits relative to the ECC scheme of FIG. 4 in accordance with an embodiment.
- the present embodiments relate to a specialized error correcting code (ECC) scheme that takes advantage of the dual data rate (DDR) error characteristic at a single defective microbump interconnecting two dies within the same multichip package. Since even and odd data bits share the same microbump location, if a single microbump is faulty, it will either cause only the odd data bit to be erroneous, only the even data bit to be erroneous, both the odd and even data bits to be erroneous, or both the odd and even data bits to be error free. By recognizing and exploiting this unique DDR characteristic, the odd and even data bits can be evaluated together with one specialized ECC encoding scheme. Configured and operated in this way, fewer parity bits are required, which results in reducing the total requisite microbump overhead.
- ECC error correcting code
- FIG. 1 is a diagram of an illustrative system such as system 100 .
- system 100 may include components such as integrated circuits 102 and 104 .
- integrated circuits 102 and 104 may be, for example, an application specific integrated circuit (ASIC), a central processing units (CPU), a graphics processing units (GPU), a programmable integrated circuit such as a field-programmable gate array (FPGA) or other integrated circuit that contains programmable elements, a memory circuit, a digital signal processor, a microprocessor, a memory chip stack, a transceiver die, a network controller/adapter, a configuration circuit, or other suitable integrated circuit.
- Circuits 102 and 104 may be different types of integrated circuits.
- circuit 102 may be a programmable logic device
- circuit 104 may be a memory device.
- Devices 102 and 104 may contain circuitry such as core storage/processing circuits 106 and 114 .
- Circuit 106 may produce data that is to be transmitted from integrated circuit 102 to integrated circuit 104 over interconnect path 110 .
- Circuit 114 may consume, store, or other process the data that has been received at the receiving end of path 110 .
- Transmitter (TX) 108 may be configured to transmit data from circuit 106 to receiver (RX) 112 over interconnect 110 (sometimes referred to as a data channel). Transmitter 108 may, for example, be implemented as part of integrated circuit 102 . Receiver 112 may, as an example, be implemented as part of integrated circuit 104 . Data channel 110 may be formed from any suitable physical transmission medium. Examples of transmission paths that may be used in channel 110 include single conductive paths, differential signaling paths made up of pairs of conductive wires, coaxial cable paths and other transmission-line paths, paths on printed circuit boards, combinations of such paths, or other suitable communications paths. In a typical system 100 , integrated circuits 102 and 104 may be mounted on one or more semiconductor substrates, and interconnect 110 may involve transmission line structures fabricated on the substrates.
- integrated circuit 102 contains a single transmitter 108
- integrated circuit 104 contains a single corresponding receiver 112 .
- a single channel 110 is used to connect transmitter 108 to receiver 112 .
- integrated circuit 102 may contain multiple transmitters such as transmitter 108
- integrated circuit 104 may contain multiple corresponding receivers such as receiver 112 .
- Multiple communications paths may be used to link the various transmitters and receivers.
- Integrated circuit 102 may also include one or more receivers that receive data from one or more corresponding transmitters on integrated circuit 104 . Data may also be conveyed to and from additional integrated circuits using transmitters and receivers such transmitter 108 and receiver 112 .
- Transmitter 108 may be configured to transmit a data bit stream across interconnect 110 to receiver 112 .
- Typical transfer speeds can across path 110 can be as high as 10 GBps (gigabytes per second) or more. Communications paths operating at such high data rates are sometimes referred to as high-speed intra-die input-output interconnects.
- Transmitter 108 may be controlled by a transmit clock signal such as signal Clk.
- Transmitter 108 may generate output data at a rate that is proportional to signal Clk.
- Embodiments herein generally relate to a double data rate (DDR) clocking scheme in which the output data toggles at both rising and falling clock edges of signal Clk.
- DDR double data rate
- an integrated circuit package may include multiple dies arranged laterally along the same plane and/or include one or more dies stacked on top of one another.
- FIG. 2 is a cross-sectional side view of an illustrative multichip package 200 that includes a package substrate 201 and multiple integrated circuit (IC) dies such as IC dies 102 and 104 mounted on top of interposer 201 .
- package substrate 201 may be provided with an embedded multi-die interconnect bridge (EMIB) 220 that is designed and patented by INTEL Corporation (as an example).
- EMIB is a small silicon die that may be embedded within substrate 201 and that offers dedicated ultra-high-density interconnection 222 between dies 102 and 104 within package 200 .
- EMIBs generally include wires 222 of minimal length, which help to significantly reduce loading and directly boost performance.
- EMIB 220 through which dies 102 and 104 may communicate with one another is merely illustrative. If desired, dies 102 and 104 may be configured to communicating with each other via an interposer die (e.g., an active interposer or a passive interposer) or other suitable types of inter-die interconnect structures.
- interposer die e.g., an active interposer or a passive interposer
- package substrate 201 may be mounted on a printed circuit board (PCB) 202 using solder (e.g., solder balls or solder bumps) 206 .
- solder e.g., solder balls or solder bumps
- the terms solder “balls” or solder “bumps” may sometimes be used interchangeably.
- Dies 102 and 104 may be mounted onto package substrate 201 using solder bumps (e.g., controlled collapse chip connection (C 4 ) bumps) 204 and smaller microbumps 205 .
- the pitch width of solder bumps 204 may be greater than the pitch width of microbumps 205 such that microbumps 205 have greater connection density than C 4 bumps 204 .
- the diameter of microbumps 205 are also generally smaller than the diameter of C 4 bumps 204 (e.g., bumps 205 may be at least two times smaller, at least four times smaller, etc.)
- FIG. 3A is a diagram of a single data rate (SDR) communications scheme.
- SDR single data rate
- data bits are transferred only at the rising clock edges (or the falling clock edges but not both).
- a data bit stream of “ 100101 ” is transmitted at the rising clock edges.
- FIG. 3B is a diagram of a double data rate (DDR) communications scheme in accordance with an embodiment.
- DDR double data rate
- data bits are transferred at both rising clock edges and falling clock edges.
- the same data bit stream of “ 100101 ” can be transmitted in half the amount of time compared to the SDR operation shown in FIG. 3A .
- Data transmitted at the rising clock edges are sometimes referred to as “even” data bits, whereas data transmitted at the falling clock edges are sometimes referred to as “odd” data bits.
- Device configurations in which data is transmitted between dies 102 and 104 within the same multichip package using DDR may sometimes be described as an example herein. This is, however, merely illustrative. If desired, the disclosed circuitry, methods, and techniques for reducing the total number of required input-output bumps may be extended to DDR communications between any two electronic device components.
- FIG. 4 is a flow chart of steps illustrating one possible ECC encoding method.
- the ECC encoder may receive or otherwise obtain the data to be transmitted.
- data may first be divided into even data bits and odd data bits.
- the ECC encoder may encode the even bits independently using (for example) the single error correction and double error detection (SEC-DED) ECC scheme to generate corresponding even parity bits.
- the ECC encoder may separately encode the odd data bits.
- the encoder may output the even data bits and the even parity bits generated at step 404 at the rising edges of the TX clock while outputting the odd data bits and the odd parity bits generated at step 406 at the falling edges of the TX clock.
- this method involves encoding the even and odd data bits independently using the SEC-DED ECC scheme.
- FIG. 5 is a table 600 showing how 26 microbumps are needed to perform DDR transfer of 40 data bits and 12 parity bits using the ECC encoding scheme described in connection with FIG. 4 .
- six microbumps DQ 0 -DQ 5 are used to transmit six even parity bits PE 0 -PE 5 at rising clock edges and to transmit six odd parity bits P 00 -P 05 at falling clock edges.
- the remaining 20 microbumps DQ 6 -DQ 25 are used transmit 20 even data bits ⁇ D 0 , D 2 , D 4 , . . . , D 36 , D 38 ⁇ at the rising clock edges and to transmit 20 odd data bits ⁇ D 1 , D 3 , D 5 , . . . , D 37 , D 39 ⁇ at the falling clock edges.
- the number of microbumps (r) that are required to transmit all the even and odd parity bits generated using this method may be expressed by the following expression:
- r represents the parity microbumps count (i.e., the number of microbumps needed to transmit the even and odd parity bits using DDR) and where k represents the data microbump count (i.e., the number of microbumps needed to transmit the even and odd data bits using DDR).
- FIG. 6 is a table illustrating the total number of microbumps (n) needed as a function of the number of data bits using the ECC encoding scheme of FIG. 4 that first divides the whole data stream into separate even and odd data bits and then encodes them separately.
- Column 602 lists the total number of data bits (d).
- Column 606 lists k, the data microbump count. Assuming DDR is used, k is simply equal to d/2.
- Column 610 lists the values computed using expression 1 above.
- Column 608 lists parity microbump count r, which is the next lowest integer greater than the corresponding value in column 610 .
- Column 604 lists the total microbump count n, which is simply equal to (k+r).
- integer r represents the microbump overhead that is needed for the SEC-DED encoding.
- an ECC encoding scheme that requires fewer parity bits and thus helps to reduce the total microbump overhead.
- This reduction in parity bits may be achieved by recognizing and exploiting a DDR error characteristic associated with a single defective microbump.
- the DDR error characteristic at a single microbump is as follows: if a single microbump is defected, it will either be stuck at “0”, stuck at “1”, or floating, which can either be floated at zero or one. In any case, that microbump will be stuck at a fixed value and will effect both even and odd bits.
- FIG. 7A is a table illustrating how a microbump defect can result in a single odd data bit error.
- Legend 700 illustrates which bit is erroneous.
- microbump DQN- 3 is defective or faulty. Assuming that microbump is stuck at zero, a single odd data bit error can occur if the desired data bits to be transmitted in that clock cycle are “01”. If the microbump is stuck or floating at one, a single odd data bit error might occur if the desired data bits to be transmitted in that cycle are “10”.
- FIG. 7B is a table illustrating how a microbump defect at DQN K ⁇ 3 can result in a single even data bit error. Assuming that microbump is stuck or floating at “0”, a single even data bit error can occur if the desired data bits to be transmitted in that clock cycle are “10”. If the microbump is stuck or floating at “1”, a single even data bit error would occur if the desired data bits to be transmitted in that cycle are “01”.
- FIG. 7C is a table illustrating how a microbump defect at DQN K ⁇ 3 can result in errors at both even and odd bits. Assuming that microbump is stuck or floating at “0”, double adjacent error can occur if the desired data bits to be transmitted in that clock cycle are “11”. If the microbump is stuck or floating at “1”, dual bit error would occur if the desired data bits to be transmitted in that cycle are “00”.
- FIG. 7D is a table illustrating how a microbump defect at DQN K ⁇ 3 can result in no errors for both even and odd bits. Assuming that microbump is stuck or floating at “0”, a lack of error can occur if the desired data bits to be transmitted in that clock cycle are “00”. If the microbump is stuck or floating at “1”, it would also be error free if the desired data bits to be transmitted in that cycle are “11”. In summary, a single microbump defect can result in the four possible data scenarios illustrated in FIGS. 7A-7D when transferred using DDR. If there are two errors (as shown in the case of FIG. 7C ), then it would only occur at a single microbump.
- FIG. 8A is a diagram of an illustrative error correcting code (ECC) encoder circuit such as encoder 800 .
- encoder 800 may be configured to encode and transmit an input data word having ten data bits DO-D 9 .
- the even data bits may be latched using registers 804 - 0 at rising clock edges, whereas the odd data bits may be latched using registers 804 - 1 as falling clock edges.
- Encoder 800 may further include multiplexers 806 corresponding to each pair of even and odd data bits for selectively outputting the even data bits during the high clock phase and outputting the odd data bits during the low clock phase.
- Multiplexers 806 may directly or indirectly drive corresponding microbumps 205 .
- the 10 data bits may be transmitted to a destination die via microbumps DQ 0 -DQ 4 .
- encoder 800 may further include an encoder parity bit generating circuit such as encoder parity bit generator 802 .
- Parity bit generator 802 may receive at least the input data word and generate corresponding parity bits P 0 -P 5 (sometimes referred to as “parity check” bits) in accordance with an improved encoding scheme such as the encoding methodology illustrated in FIG. 9 .
- ECC encoder 800 may receive or otherwise obtain the data to be transmitted.
- encoder 800 may, without dividing the data into even and odd bits, directly encode the data using a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) ECC scheme.
- SEC-DED-DAEC single error correcting, double error detecting, and double adjacent error correcting
- the SEC-DED-DAEC may impose all of the following constraints on a parity check matrix that is used to implement the ECC scheme:
- Constraints a-c are imposed by the SEC-DED algorithm, whereas constraint d is imposed by the DAEC portion. Constraints a-c provide a way to detect the single bit errors illustrated in FIGS. 7A and 7B . Constraint d, which requires that every even and odd column vector in the H-matrix to be unique, provides a way to detect double-bit errors at a single microbump as illustrated in the example of FIG. 7C . Due to the distinct nature of all four constraints, no error will be flagged when the data is error free as illustrated in the example of FIG. 7D .
- a parity check matrix (sometimes referred to as an “H-matrix”) have rows representing the coefficients of the parity check equations/calculation, showing how linear combinations of certain digits of each code word equal zero, and have columns corresponding to the different microbumps. Thus, the number of rows in H-matrix 1000 should be equal to the parity microbump count.
- the first ten columns correspond to the data microbumps, and the remaining six columns correspond to the parity microbumps.
- none of the columns in matrix 1000 are all zeros (satisfying constraint a), that every column is different from every other column (satisfying constraint b), that every column has an odd number of ones (satisfying constraint c), and that every even/odd column pair is distinct (i.e., columns 0 / 1 are distinct from columns 2 / 3 , which are also distinct from columns 4 / 5 , etc., thereby also satisfying constraint d) .
- FIG. 10B lists the value of each column in matrix 1000 in decimal form for ease of discussion.
- the binary value “000111” in the first column 1002 of matrix 1000 is converted from binary to its corresponding decimal value of 7 (see portion 1020 in FIG. 10B ).
- the binary value “101100” in the second column 1004 of matrix 1000 is converted from binary to its corresponding decimal value of 44.
- the binary value “001011” in the third column 1006 of matrix 1000 is converted from binary to its corresponding decimal value of 11.
- the binary value “010101” in the fourth column 1008 of matrix 1000 is converted from binary to its corresponding decimal value of 21.
- the encoding scheme may then combine each pair of even and odd columns to obtain additional parity bits (e.g., parity bits that indicate double adjacent even/odd errors at the same microbump).
- additional parity bits e.g., parity bits that indicate double adjacent even/odd errors at the same microbump.
- One way of generating the additional parity bits is to compute the exclusive-OR (XOR) of each even and odd column pair.
- XOR exclusive-OR
- the values of the first even/odd column pair may be XORed together to yield a first additional parity bit with the decimal value 43 (see row portion 1030 ).
- the values of the second even/odd column pair are XORed together to yield a second additional parity bit with the decimal value 30 .
- the values of the third even/odd column pair are XORed together to yield a third additional parity bit with the decimal value 40 .
- Skipping ahead to the final column pair, the even/odd column values are XORed together to yield an eighth additional parity bit with the decimal value 48 .
- each value in row 1030 is distinct (e.g., the XOR value of each even and odd column pair is distinct from every other XORed value).
- FIG. 10B in which an XOR function is used to compute the unique additional parity bits is merely illustrative. If desired, some other logical, arithmetic, or mapping function(s) can be used to combine the even/odd column pairs to generate corresponding unique parity bits.
- parity bit generator 802 may be implemented in accordance with the bit pattern specified in H-matrix 1000 .
- parity bit generator 802 may include a logic XOR gate 810 - 0 configured to output a first parity bit P 0 , a logic XOR gate 810 - 1 configured to output a second parity bit P 1 , a logic XOR gate 810 - 2 configured to output a third parity bit P 2 , a logic XOR gate 810 - 3 configured to output a fourth parity bit P 3 , a logic XOR gate 810 - 4 configured to output a fifth parity bit P 4 , and logic XOR gate 810 - 5 configured to output a sixth parity bit P 5 .
- the six parity bits PO-P 5 may be transmitted to the target IC die using DDR via corresponding microbumps DQ 5 , DQ 6 , and DQ 7 .
- Each of these encoder logic gates 810 may receive a respective group inputs based on position of high bits in H-matrix 1000 of FIG. 10A .
- logic gate 810 - 0 may generate parity bit P 0 by receiving and XORing D 0 , D 2 , D 3 , D 6 , D 8 , and C 0 (see, e.g., the position of “1” bits in the first row of H-matrix 100 ).
- inputs C 0 - 05 of generator 802 may optionally be tied to zero.
- the connection of C 0 -C 5 to the respective gates 810 are also optional since error in parity does not affect the data bits.
- logic gate 810 - 1 may generate parity bit P 1 by receiving and XORing D 0 , D 2 , D 4 , D 5 , D 6 , and C 1 (see, e.g., the position of “1” bits in the second row of H-matrix 100 ).
- logic gate 810 - 5 may generate parity bit P 5 by receiving and XORing D 1 , D 4 , D 6 , D 7 , D 9 , and C 5 (see, e.g., the position of “1” bits in the bottom row of H-matrix 100 ).
- parity bit generator 802 may vary depending on the size and the specific pattern of values in the associated H-matrix. If desired, parity bit generator 802 may include any suitable number of logic gates and can include any combination of different types of logic gates (e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.), each of which may include any desired number of inputs.
- logic gates e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.
- the encoder may then transmit the encoded data along with the parity bits generated by parity bit generator 802 using DDR (step 906 ).
- a corresponding decoder in the receiver IC die may receive the encoded data via the microbumps, may generate syndrome bits, and decode the syndrome bits to identify the error location.
- the decoder may then correct any erroneous bits to output a corrected codeword.
- FIG. 8B is a diagram of an illustrative error correcting code (ECC) decoder circuit such as ECC decoder 850 .
- Decoder 850 may be configured to decode the encoded codeword that is received from encoder 800 of FIG. 8A via a DDR transfer scheme.
- decoder 850 may include demultiplexers 856 for separating the even and odd data bits received from microbumps DQ 0 -DQ 7 .
- the even data bits may be latched using registers 854 - 0 at rising clock edges, whereas the odd data bits may be latched using registers 854 - 1 as falling clock edges.
- Decoder 850 may further include a decoder syndrome bit generating circuit such as decoder syndrome bit generator 852 .
- Syndrome bit generator 852 may have a first set of inputs configured to receive the even and odd data bits received over microbumps DQ 0 -DQ 4 and a second set of inputs configured to receive the even and odd parity bits received over microbumps DQ 5 -DQ 7 .
- Syndrome bit generator 852 may generate corresponding syndrome bits S 0 -S 5 in accordance with the improved SEC-DED-DAEC ECC scheme operating in accordance with the four H-matrix constraints described above in connection with FIG. 9 .
- the decoder syndrome bit generator 852 may also be implemented in accordance with the bit pattern specified in H-matrix 1000 of the type shown in FIG. 10A . In the example of FIG.
- syndrome bit generator 852 may include a logic XOR gate 860 - 0 configured to output a first syndrome bit S 0 , a logic XOR gate 860 - 1 configured to output a second syndrome bit S 1 , a logic XOR gate 860 - 2 configured to output a third syndrome bit S 2 , a logic XOR gate 860 - 3 configured to output a fourth syndrome bit S 3 , a logic XOR gate 860 - 4 configured to output a fifth syndrome bit S 4 , and logic XOR gate 860 - 5 configured to output a sixth syndrome bit S 5 .
- the inputs of logic gates 860 may be connected in the same way as encoder parity bit generator 802 shown in FIG. 8A (e.g., the decoder syndrome bit generator and the encoder parity bit generator may have the same or substantially similar structure and wiring scheme).
- the particular decoder configuration of FIG. 8B is, however, merely illustrative. In general, the implementation of decoder syndrome bit generator 852 may vary depending on the size and the specific pattern of values in the associated H-matrix.
- syndrome bit generator 852 may include any suitable number of logic gates and can include any combination of different types of logic gates (e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.), each of which may include any desired number of inputs.
- logic gates e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.
- decoder syndrome bit generator 852 is configured such all of the syndrome bits S 0 -S 5 will be equal to zero when the data is error free. In other words, at least one of the syndrome bits will be equal to “1” when the data is erroneous.
- decoder 850 may include a logic gate such as logic OR gate 870 that receives all of the syndrome bits and that outputs an asserted signal when a single bit error is detected.
- the syndrome bits output by syndrome bit generator 852 can be used to help identify the type and location of error bits. Assuming that the parity bits in the H-matrix 1000 described in connection with FIGS. 10A and 10B are used, a syndrome decimal value of 43 means that there is a single bit error at data bit D 0 ; a syndrome value of 44 means that there is a single bit error at data bit D 1 ; a syndrome value of 43 means that both data bits D 0 and D 1 transmitted over microbump DQ 0 are erroneous; a syndrome value of 11 means that there is a single bit error at data bit D 2 ; a syndrome value of 21 means that there is a single bit error at data bit D 3 ; a syndrome value of 30 means that both data bits D 2 and D 3 transmitted over microbump DQ 1 are erroneous; and so on.
- Decoder 850 may further include a syndrome decoder 880 that receives the syndrome bits from generator 852 and that outputs high bit(s) at the corresponding error locations.
- syndrome decoder 880 may be implemented as a 6:10 demultiplexing circuit.
- Syndrome decoder 880 may therefore sometimes be referred to as a syndrome demultiplexer.
- This particular configuration is merely illustrative.
- the number of inputs of syndrome decoder 880 may be at least equal to the number of total syndrome bits generated at the decoder, and the number of outputs of syndrome demultiplexer 880 may be at least equal to the total number of data bits.
- syndrome demultiplexer 880 may selectively drive an output bit high corresponding to data bit D 0 while leaving all the other outputs low.
- syndrome demultiplexer 880 may selectively drive the output bits corresponding to data bits D 0 and D 1 high while leaving the remaining bits low.
- syndrome demultiplexer 880 may selectively drive the output bit corresponding to data bit D 9 high while leaving the remaining bits low.
- Decoder 890 may further include an error correction circuit 890 configured to receive the transmitted data bits, to receive the error location bits output from syndrome demultiplexer 880 , and to output a corresponding corrected codeword.
- error corrector 890 may be implemented using a group of XOR gates, each of which has a first input that receives one of the even/odd data bits and a second input that receives the selectively asserted error location bit from syndrome decoder 880 . If the error location bit is low (deasserted), the data bit received at the first XOR input will be passed through without change. If the error location bit is high (asserted), then the data bit received at the first XOR input will be inverted from the presumably incorrect value to the correct value. If desired, other ways of implementing the error correction may be used.
- the number of microbumps (s) that are required to transmit all the even and odd parity bits generated using a method of the type described in connection with at least FIG. 9 may be expressed by the following expression:
- s represents the parity microbumps count (i.e., the number of microbumps needed to transmit the even and odd parity bits using DDR) and where k represents the data microbump count (i.e., the number of microbumps needed to transmit the even and odd data bits using DDR).
- FIG. 11 is a table 1100 illustrating the total number of microbumps (n) needed as a function of the number of data bits using the ECC encoding scheme of FIG. 9 that encodes whole DDR data stream without first separating data bits into even and odd portions.
- Column 1102 lists the total number of data bits (d).
- Column 1106 lists k, the data microbump count. Assuming DDR is used, k is simply equal to d/2.
- Column 1110 lists the values computed using expression 2 above.
- Column 1108 lists parity microbump count s, which is the next lowest integer greater than the corresponding value in column 1110 .
- Column 1104 lists the total microbump count n, which is simply equal to (k+s).
- integer s represents the microbump overhead that is needed for the SEC-DED-DAEC encoding.
- this improved DDR-specific SEC-DED-DAEC encoding scheme requires only 24 total microbumps, which requires 33% fewer parity microbumps. This overhead savings or reduction in parity bits/microbump count is magnified as the number of data bits increase.
- FIG. 12 is a plot illustrating how the ECC scheme of FIG. 9 requires much fewer parity bits relative to the ECC scheme of FIG. 4 .
- Curve 1202 represents the requisite number of parity bits as a function of DDR data bits when using the encoding scheme of FIG. 4
- 1204 represents the requisite number of parity bits as a function of DDAR data bits when using the encoding/decoding scheme described in connection with FIGS. 7-11 .
- the improved encoding scheme uses substantially fewer parity bits (thus requiring much fewer parity microbumps), and the gap widens as the number of data bits increases beyond 100 or more.
- Example 1 is an integrated circuit, comprising: a first group of bumps configured to receive data bits from another integrated circuit; a second group of bumps configured to receive parity bits from the another integrated circuit, wherein the data bits and the parity bits are transmitted to the another integrated circuit using a double data rate (DDR) transfer scheme; and a syndrome bit generating circuit that is configured to receive the data bits from the first group of bumps and that is configured to implement a decoding scheme that exploits an error characteristic associated with the DDR transfer scheme at a defective bump in the first group of bumps to reduce the total number of required bumps in the second group of bumps.
- DDR double data rate
- Example 2 is the integrated circuit of example 1, wherein the defective bump is optionally configured to receive an even data bit at a rising clock edge and an odd data bit at a falling clock edge.
- Example 3 is the integrated circuit of example 2, wherein the error characteristic associated with the DDR transfer scheme at the defective bump optionally comprises up to four possible error scenarios.
- Example 4 is the integrated circuit of example 3, wherein the four possible error scenarios optionally comprise a single error at the even data bit and a single error at the odd data bit.
- Example 5 is the integrated circuit of example 4, wherein the four possible error scenarios optionally further comprises errors at both the even data bit and the odd data bit and no errors at the even data bit and the odd data bit.
- Example 6 is the integrated circuit of any one of examples 1-5, wherein the decoding scheme of the syndrome bit generating circuit is optionally implemented based on a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) error correcting code (ECC) scheme.
- SEC-DED-DAEC double adjacent error correcting code
- Example 7 is the integrated circuit of example 6, wherein the SEC-DED-DAEC ECC scheme optionally imposes at least four constraints on a parity check matrix that determines the configuration of the syndrome bit generating circuit.
- Example 8 is the integrated circuit of example 7, wherein the at least four constraints optionally stipulates that: a) no columns in the parity check matrix are all zeros; b) every column in the parity check matrix is distinct; and c) every column in the parity check matrix contains an odd number of ones.
- Example 9 is the integrated circuit of example 8, wherein the at least four constraints further optionally stipulates that: d) every even and odd column pair in the parity check matrix is distinct.
- Example 10 is the integrated circuit of example 9, wherein the syndrome bit generating circuit is optionally implemented based on values in the parity check matrix and also based on additional parity bits obtained by combining even and odd columns in the parity check matrix.
- Example 11 is the integrated circuit of example 10, wherein the additional parity bits optionally allow the syndrome bit generating circuit to identify adjacent even and odd bit errors at the defective bump.
- Example 12 is an integrated circuit, comprising: a first group of bumps configured to output data bits to another integrated circuit; a second group of bumps configured to output parity bits to the another integrated circuit; and a parity bit generating circuit that is configured to receive the data bits and that is configured to implement an encoding scheme that reduces the total number of required bumps in the second group of bumps by taking advantage of a double data rate (DDR) error characteristic of a defective bump in the first group of bumps.
- DDR double data rate
- Example 13 is the integrated circuit of example 12, wherein the defective bump is optionally configured to receive an even data bit at a rising clock edge and an odd data bit at a falling clock edge.
- Example 14 is the integrated circuit of example 13, wherein the DDR error characteristic associated with the DDR transfer scheme at the defective bump optionally comprises four possible error scenarios.
- Example 15 is the integrated circuit of example 14, wherein the four possible error scenarios optionally comprise: a single error at the even data bit; a single error at the odd data bit; a double error at both the even data bit and the odd data bit; and no errors at the even data bit and the odd data bit.
- Example 16 is the integrated circuit of any one of examples 12-15, wherein the encoding scheme of the parity bit generating circuit is optionally implemented based on a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) error correcting code (ECC) scheme.
- SEC-DED-DAEC double adjacent error correcting code
- Example 17 is a system, comprising: a first integrated circuit die; and a second integrated circuit die configured to communicate with the first integrated circuit die via a plurality of microbumps, wherein: the first integrated circuit die is configured to transmit data bits to the second integrated circuit die using a double data rate (DDR) toggling scheme; and the first integrated circuit die comprises an encoder circuit configured to encode the data bits using an error correcting code (ECC) scheme that is capable of detecting and correcting adjacent even and odd data bit errors at a defective microbump in the plurality of microbumps.
- ECC error correcting code
- Example 18 is the system of example 17, wherein the ECC scheme optionally comprises a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) scheme that requires fewer parity bits than a single error correcting and double error detecting (SEC-DED) scheme.
- the ECC scheme optionally comprises a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) scheme that requires fewer parity bits than a single error correcting and double error detecting (SEC-DED) scheme.
- SEC-DED-DAEC single error correcting, double error detecting, and double adjacent error correcting
- Example 19 is the system of example 18, wherein the SEC-DED-DAEC scheme optionally imposes at least the following constraints on an H-matrix that determines the configuration of the encoder circuit: a) no columns in the H-matrix are all zeros; b) every column in the H-matrix is distinct; c) every column in the H-matrix contains an odd number of ones; and d) a function of an even column and an odd column in each associated column pair is distinct from the function of an even column and an odd column of every other column pair in the H-matrix.
- Example 20 is the system of example 19, wherein the second integrated circuit die optionally comprises a decoder circuit configured to decode the data bits received from the first integrated circuit, and wherein the decoder circuit is implemented based on the H-matrix and also based on additional parity bits generated by taking the function of the even column and the odd column in each column pair of the H-matrix.
- the second integrated circuit die optionally comprises a decoder circuit configured to decode the data bits received from the first integrated circuit, and wherein the decoder circuit is implemented based on the H-matrix and also based on additional parity bits generated by taking the function of the even column and the odd column in each column pair of the H-matrix.
Abstract
Description
- This relates generally to integrated circuits and more particularly, to data transfer between two or more integrated circuit dies.
- Consider a scenario in which a first integrated circuit die communicates with a second integrated circuit die via one or more potentially faulty interconnects. Conventionally, an interconnect redundancy scheme may be implemented to help repair potentially faulty interconnects to improve assembly yield. For example, a faulty interconnect may be repaired using an active redundancy scheme by selectively switching into use a spare driver block or by using a passive redundancy scheme using two or more duplicate paths for each critical signal. Such type of redundancy scheme that uses spare drivers or spare paths requires redundancy configuration before the data is transmitted. In other words, configuration data has to be first transferred from one die to another to configure/initial the desired redundancy scheme.
- Data bits transmitted from one die to another are often susceptible to errors as a result of inadequate timing margins at corner cases, random bit flips, and/or other deterministic or nondeterministic sources of variation. To correct such errors, an error correcting code (ECC) scheme is sometimes implemented to detect or fix the erroneous data. An ECC scheme typically transmits the user data along with additional parity check bits. Using an ECC scheme can help obviate the need for redundancy configuration before the data transfer. The ECC scheme, however, requires additional input-output bumps for transferring the additional parity check bits. A traditional ECC scheme might require a large number of inter-die solder bumps, which is problematic for systems with a limited number of available solder bumps.
- It is within this context that the embodiments described herein arise.
-
FIG. 1 is a diagram of an illustrative inter-die interconnection path in accordance with an embodiment. -
FIG. 2 is a cross-sectional side view of an illustrative multichip package that includes at least two integrated circuit dies operable to communicate with one another in accordance with an embodiment. -
FIG. 3A is a diagram of a single data rate communications scheme. -
FIG. 3B is a diagram of a double data rate communications scheme in accordance with an embodiment. -
FIG. 4 is a flow chart of steps for dividing data into even and odd bits prior to encoding the data. -
FIG. 5 is a table showing how 26 microbumps are needed to transfer 40 data bits and 12 parity bits using the - ECC encoding scheme shown in
FIG. 4 . -
FIG. 6 is a table illustrating the total number of microbumps needed as a function of the number of data bits using the ECC encoding scheme shown inFIG. 4 . -
FIG. 7A is a table illustrating how a microbump defect can result in a single odd data bit error in accordance with an embodiment. -
FIG. 7B is a table illustrating how a microbump defect can result in a single even data bit error in accordance with an embodiment. -
FIG. 7C is a table illustrating how a microbump defect can result in erroneous odd and even data bits in accordance with an embodiment. -
FIG. 7D is a table illustrating how a microbump defect can result in no error bits in accordance with an embodiment. -
FIG. 8A is a diagram of an illustrative error correcting code (ECC) encoder circuit in accordance with an embodiment. -
FIG. 8B is a diagram of an illustrative error correcting code (ECC) decoder circuit in accordance with an embodiment. -
FIG. 9 is a flow chart of illustrative steps for encoding data bits using a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) ECC scheme suitable for double data rate (DDR) transfer and decoding the corresponding encoded data bits in accordance with an embodiment. -
FIG. 10A is a diagram of an illustrative parity check matrix for an ECC(16,10) encoding scheme satisfying the four constraints shown inFIG. 9 in accordance with an embodiment. -
FIG. 10B is a diagram illustrating additional parity bits that can be generated for double adjacent errors at the same microbump in accordance with an embodiment. -
FIG. 11 is a table illustrating the total number of microbumps needed as a function of the number of data bits using the ECC encoding scheme shown inFIG. 9 . -
FIG. 12 is a plot illustrating how the ECC scheme ofFIG. 9 requires much fewer parity bits relative to the ECC scheme ofFIG. 4 in accordance with an embodiment. - The present embodiments relate to a specialized error correcting code (ECC) scheme that takes advantage of the dual data rate (DDR) error characteristic at a single defective microbump interconnecting two dies within the same multichip package. Since even and odd data bits share the same microbump location, if a single microbump is faulty, it will either cause only the odd data bit to be erroneous, only the even data bit to be erroneous, both the odd and even data bits to be erroneous, or both the odd and even data bits to be error free. By recognizing and exploiting this unique DDR characteristic, the odd and even data bits can be evaluated together with one specialized ECC encoding scheme. Configured and operated in this way, fewer parity bits are required, which results in reducing the total requisite microbump overhead.
- It will be recognized by one skilled in the art, that the present exemplary embodiments may be practiced without some or all of these specific details. In other instances, well-known operations have not been described in detail in order not to unnecessarily obscure the present embodiments.
-
FIG. 1 is a diagram of an illustrative system such assystem 100. As shown inFIG. 1 ,system 100 may include components such asintegrated circuits integrated circuits Circuits circuit 102 may be a programmable logic device, andcircuit 104 may be a memory device.Devices processing circuits Circuit 106 may produce data that is to be transmitted from integratedcircuit 102 to integratedcircuit 104 overinterconnect path 110.Circuit 114 may consume, store, or other process the data that has been received at the receiving end ofpath 110. - Transmitter (TX) 108 may be configured to transmit data from
circuit 106 to receiver (RX) 112 over interconnect 110 (sometimes referred to as a data channel).Transmitter 108 may, for example, be implemented as part of integratedcircuit 102.Receiver 112 may, as an example, be implemented as part of integratedcircuit 104.Data channel 110 may be formed from any suitable physical transmission medium. Examples of transmission paths that may be used inchannel 110 include single conductive paths, differential signaling paths made up of pairs of conductive wires, coaxial cable paths and other transmission-line paths, paths on printed circuit boards, combinations of such paths, or other suitable communications paths. In atypical system 100, integratedcircuits interconnect 110 may involve transmission line structures fabricated on the substrates. - In the example of
FIG. 1 , integratedcircuit 102 contains asingle transmitter 108, andintegrated circuit 104 contains a singlecorresponding receiver 112. Asingle channel 110 is used to connecttransmitter 108 toreceiver 112. This is merely illustrative. If desired, integratedcircuit 102 may contain multiple transmitters such astransmitter 108, andintegrated circuit 104 may contain multiple corresponding receivers such asreceiver 112. Multiple communications paths may be used to link the various transmitters and receivers.Integrated circuit 102 may also include one or more receivers that receive data from one or more corresponding transmitters onintegrated circuit 104. Data may also be conveyed to and from additional integrated circuits using transmitters and receiverssuch transmitter 108 andreceiver 112. -
Transmitter 108 may be configured to transmit a data bit stream acrossinterconnect 110 toreceiver 112. Typical transfer speeds can acrosspath 110 can be as high as 10 GBps (gigabytes per second) or more. Communications paths operating at such high data rates are sometimes referred to as high-speed intra-die input-output interconnects.Transmitter 108 may be controlled by a transmit clock signal such as signal Clk.Transmitter 108 may generate output data at a rate that is proportional to signal Clk. Embodiments herein generally relate to a double data rate (DDR) clocking scheme in which the output data toggles at both rising and falling clock edges of signal Clk. - As integrated circuit technology scales towards smaller device dimensions, device performance continues to improve at the expense of increased power consumption. In an effort to reduce power consumption, more than one die may be placed within a single integrated circuit package (i.e., a multichip package). As different types of devices cater to different types of applications, more dies may be required in some systems to meet the requirements of high performance applications. Accordingly, to obtain better performance and higher density, an integrated circuit package may include multiple dies arranged laterally along the same plane and/or include one or more dies stacked on top of one another.
-
FIG. 2 is a cross-sectional side view of anillustrative multichip package 200 that includes apackage substrate 201 and multiple integrated circuit (IC) dies such as IC dies 102 and 104 mounted on top ofinterposer 201. In order to facilitate communications between two chips onmultichip package 200,package substrate 201 may be provided with an embedded multi-die interconnect bridge (EMIB) 220 that is designed and patented by INTEL Corporation (as an example). An EMIB is a small silicon die that may be embedded withinsubstrate 201 and that offers dedicated ultra-high-density interconnection 222 between dies 102 and 104 withinpackage 200. EMIBs generally includewires 222 of minimal length, which help to significantly reduce loading and directly boost performance. The use ofEMIB 220 through which dies 102 and 104 may communicate with one another is merely illustrative. If desired, dies 102 and 104 may be configured to communicating with each other via an interposer die (e.g., an active interposer or a passive interposer) or other suitable types of inter-die interconnect structures. - Still referring to
FIG. 2 ,package substrate 201 may be mounted on a printed circuit board (PCB) 202 using solder (e.g., solder balls or solder bumps) 206. The terms solder “balls” or solder “bumps” may sometimes be used interchangeably. Dies 102 and 104 may be mounted ontopackage substrate 201 using solder bumps (e.g., controlled collapse chip connection (C4) bumps) 204 andsmaller microbumps 205. The pitch width of solder bumps 204 may be greater than the pitch width ofmicrobumps 205 such that microbumps 205 have greater connection density than C4 bumps 204. The diameter ofmicrobumps 205 are also generally smaller than the diameter of C4 bumps 204 (e.g., bumps 205 may be at least two times smaller, at least four times smaller, etc.) -
FIG. 3A is a diagram of a single data rate (SDR) communications scheme. In SDR communications schemes, data bits are transferred only at the rising clock edges (or the falling clock edges but not both). In the exampleFIG. 3A , a data bit stream of “100101” is transmitted at the rising clock edges. -
FIG. 3B is a diagram of a double data rate (DDR) communications scheme in accordance with an embodiment. In DDR communications schemes, data bits are transferred at both rising clock edges and falling clock edges. In the example ofFIG. 3B , the same data bit stream of “100101” can be transmitted in half the amount of time compared to the SDR operation shown inFIG. 3A . Data transmitted at the rising clock edges are sometimes referred to as “even” data bits, whereas data transmitted at the falling clock edges are sometimes referred to as “odd” data bits. Device configurations in which data is transmitted between dies 102 and 104 within the same multichip package using DDR may sometimes be described as an example herein. This is, however, merely illustrative. If desired, the disclosed circuitry, methods, and techniques for reducing the total number of required input-output bumps may be extended to DDR communications between any two electronic device components. - As described above in the Background section, inter-die transfer that does not support initial redundancy configuration often relies on error correcting code (ECC) to provide redundancy directly into the bits transmitted.
FIG. 4 is a flow chart of steps illustrating one possible ECC encoding method. Atstep 400, the ECC encoder may receive or otherwise obtain the data to be transmitted. - At
step 402, data may first be divided into even data bits and odd data bits. Atstep 404, the ECC encoder may encode the even bits independently using (for example) the single error correction and double error detection (SEC-DED) ECC scheme to generate corresponding even parity bits. Similarly, atstep 406, the ECC encoder may separately encode the odd data bits. - At
step 408, the encoder may output the even data bits and the even parity bits generated atstep 404 at the rising edges of the TX clock while outputting the odd data bits and the odd parity bits generated atstep 406 at the falling edges of the TX clock. In summary, this method involves encoding the even and odd data bits independently using the SEC-DED ECC scheme. -
FIG. 5 is a table 600 showing how 26 microbumps are needed to perform DDR transfer of 40 data bits and 12 parity bits using the ECC encoding scheme described in connection withFIG. 4 . As shown inFIG. 5 , six microbumps DQ0-DQ5 are used to transmit six even parity bits PE0-PE5 at rising clock edges and to transmit six odd parity bits P00-P05 at falling clock edges. The remaining 20 microbumps DQ6-DQ25 are used transmit 20 even data bits {D0, D2, D4, . . . , D36, D38} at the rising clock edges and to transmit 20 odd data bits {D1, D3, D5, . . . , D37, D39} at the falling clock edges. The number of microbumps (r) that are required to transmit all the even and odd parity bits generated using this method may be expressed by the following expression: -
r>1+log2(k+r) (1) - where r represents the parity microbumps count (i.e., the number of microbumps needed to transmit the even and odd parity bits using DDR) and where k represents the data microbump count (i.e., the number of microbumps needed to transmit the even and odd data bits using DDR).
-
FIG. 6 is a table illustrating the total number of microbumps (n) needed as a function of the number of data bits using the ECC encoding scheme ofFIG. 4 that first divides the whole data stream into separate even and odd data bits and then encodes them separately.Column 602 lists the total number of data bits (d).Column 606 lists k, the data microbump count. Assuming DDR is used, k is simply equal to d/2.Column 610 lists the values computed usingexpression 1 above.Column 608 lists parity microbump count r, which is the next lowest integer greater than the corresponding value incolumn 610. Column 604 lists the total microbump count n, which is simply equal to (k+r). - Row 690 in table 600 summarizes the microbump configuration shown in
FIG. 5 , where d=40 and n turns out to be equal to 26 and where r=6. In other words, integer r represents the microbump overhead that is needed for the SEC-DED encoding. In this example where d=40, almost a quarter of the total microbumps are wasted on ECC parity bits instead of data transfer. It would therefore be desirable to provide an improved ECC scheme that requires fewer total parity microbumps in order to transmit more data bits. - In accordance with an embodiment, an ECC encoding scheme is provided that requires fewer parity bits and thus helps to reduce the total microbump overhead. This reduction in parity bits may be achieved by recognizing and exploiting a DDR error characteristic associated with a single defective microbump. The DDR error characteristic at a single microbump is as follows: if a single microbump is defected, it will either be stuck at “0”, stuck at “1”, or floating, which can either be floated at zero or one. In any case, that microbump will be stuck at a fixed value and will effect both even and odd bits.
-
FIG. 7A is a table illustrating how a microbump defect can result in a single odd data bit error.Legend 700 illustrates which bit is erroneous. In the examples ofFIG. 7A-7D , assume that microbump DQN-3 is defective or faulty. Assuming that microbump is stuck at zero, a single odd data bit error can occur if the desired data bits to be transmitted in that clock cycle are “01”. If the microbump is stuck or floating at one, a single odd data bit error might occur if the desired data bits to be transmitted in that cycle are “10”. -
FIG. 7B is a table illustrating how a microbump defect at DQNK−3 can result in a single even data bit error. Assuming that microbump is stuck or floating at “0”, a single even data bit error can occur if the desired data bits to be transmitted in that clock cycle are “10”. If the microbump is stuck or floating at “1”, a single even data bit error would occur if the desired data bits to be transmitted in that cycle are “01”. -
FIG. 7C is a table illustrating how a microbump defect at DQNK−3 can result in errors at both even and odd bits. Assuming that microbump is stuck or floating at “0”, double adjacent error can occur if the desired data bits to be transmitted in that clock cycle are “11”. If the microbump is stuck or floating at “1”, dual bit error would occur if the desired data bits to be transmitted in that cycle are “00”. -
FIG. 7D is a table illustrating how a microbump defect at DQNK−3 can result in no errors for both even and odd bits. Assuming that microbump is stuck or floating at “0”, a lack of error can occur if the desired data bits to be transmitted in that clock cycle are “00”. If the microbump is stuck or floating at “1”, it would also be error free if the desired data bits to be transmitted in that cycle are “11”. In summary, a single microbump defect can result in the four possible data scenarios illustrated inFIGS. 7A-7D when transferred using DDR. If there are two errors (as shown in the case ofFIG. 7C ), then it would only occur at a single microbump. -
FIG. 8A is a diagram of an illustrative error correcting code (ECC) encoder circuit such asencoder 800. In the example ofFIG. 8A ,encoder 800 may be configured to encode and transmit an input data word having ten data bits DO-D9. The even data bits may be latched using registers 804-0 at rising clock edges, whereas the odd data bits may be latched using registers 804-1 as falling clock edges.Encoder 800 may further includemultiplexers 806 corresponding to each pair of even and odd data bits for selectively outputting the even data bits during the high clock phase and outputting the odd data bits during the low clock phase.Multiplexers 806 may directly or indirectly drive correspondingmicrobumps 205. The 10 data bits may be transmitted to a destination die via microbumps DQ0-DQ4. - As shown in
FIG. 8A ,encoder 800 may further include an encoder parity bit generating circuit such as encoderparity bit generator 802.Parity bit generator 802 may receive at least the input data word and generate corresponding parity bits P0-P5 (sometimes referred to as “parity check” bits) in accordance with an improved encoding scheme such as the encoding methodology illustrated inFIG. 9 . Atstep 900,ECC encoder 800 may receive or otherwise obtain the data to be transmitted. - At
step 902,encoder 800 may, without dividing the data into even and odd bits, directly encode the data using a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) ECC scheme. The SEC-DED-DAEC may impose all of the following constraints on a parity check matrix that is used to implement the ECC scheme: -
- (a) NO ALL ZERO COLUMNS
- (b) EVERY COLUMN MUST BE DISTINCT
- (c) EVERY COLUMN CONTAINS AN ODD NUMBER OF “1s”
- (d) EVERY EVEN & ODD COLUMN PAIR MUST BE DISTINCT.
- Constraints a-c are imposed by the SEC-DED algorithm, whereas constraint d is imposed by the DAEC portion. Constraints a-c provide a way to detect the single bit errors illustrated in
FIGS. 7A and 7B . Constraint d, which requires that every even and odd column vector in the H-matrix to be unique, provides a way to detect double-bit errors at a single microbump as illustrated in the example ofFIG. 7C . Due to the distinct nature of all four constraints, no error will be flagged when the data is error free as illustrated in the example ofFIG. 7D . -
FIG. 10A is a diagram of an illustrativeparity check matrix 1000 for an ECC(n=16, d=10) encoding scheme satisfying the four constraints a-d. A parity check matrix (sometimes referred to as an “H-matrix”) have rows representing the coefficients of the parity check equations/calculation, showing how linear combinations of certain digits of each code word equal zero, and have columns corresponding to the different microbumps. Thus, the number of rows in H-matrix 1000 should be equal to the parity microbump count. - As shown in
FIG. 10A , the first ten columns correspond to the data microbumps, and the remaining six columns correspond to the parity microbumps. Note that none of the columns inmatrix 1000 are all zeros (satisfying constraint a), that every column is different from every other column (satisfying constraint b), that every column has an odd number of ones (satisfying constraint c), and that every even/odd column pair is distinct (i.e.,columns 0/1 are distinct fromcolumns 2/3, which are also distinct fromcolumns 4/5, etc., thereby also satisfying constraint d) . -
FIG. 10B lists the value of each column inmatrix 1000 in decimal form for ease of discussion. For example, the binary value “000111” in thefirst column 1002 ofmatrix 1000 is converted from binary to its corresponding decimal value of 7 (see portion 1020 inFIG. 10B ). The binary value “101100” in thesecond column 1004 ofmatrix 1000 is converted from binary to its corresponding decimal value of 44. The binary value “001011” in thethird column 1006 ofmatrix 1000 is converted from binary to its corresponding decimal value of 11. The binary value “010101” in thefourth column 1008 ofmatrix 1000 is converted from binary to its corresponding decimal value of 21. Skipping ahead to thepenultimate column 1010, the binary value “010000” is converted from binary to its corresponding decimal value of 16. Finally, the binary value “100000” in thelast column 1012 ofmatrix 1000 is converted from binary to its corresponding decimal value of 32. Each of these values in row 1020 correspond to the pattern for single bit errors such as those illustrated in connection withFIGS. 7A and 7B . - Referring briefly back to
FIG. 9 , atstep 904, the encoding scheme may then combine each pair of even and odd columns to obtain additional parity bits (e.g., parity bits that indicate double adjacent even/odd errors at the same microbump). One way of generating the additional parity bits is to compute the exclusive-OR (XOR) of each even and odd column pair. As shown inFIG. 10B , the values of the first even/odd column pair may be XORed together to yield a first additional parity bit with the decimal value 43 (see row portion 1030). The values of the second even/odd column pair are XORed together to yield a second additional parity bit with thedecimal value 30. The values of the third even/odd column pair are XORed together to yield a third additional parity bit with thedecimal value 40. Skipping ahead to the final column pair, the even/odd column values are XORed together to yield an eighth additional parity bit with thedecimal value 48. Note that each value inrow 1030 is distinct (e.g., the XOR value of each even and odd column pair is distinct from every other XORed value). The example ofFIG. 10B in which an XOR function is used to compute the unique additional parity bits is merely illustrative. If desired, some other logical, arithmetic, or mapping function(s) can be used to combine the even/odd column pairs to generate corresponding unique parity bits. - Referring now back to
FIG. 8A , note that the encoderparity bit generator 802 may be implemented in accordance with the bit pattern specified in H-matrix 1000. In the example ofFIG. 8A ,parity bit generator 802 may include a logic XOR gate 810-0 configured to output a first parity bit P0, a logic XOR gate 810-1 configured to output a second parity bit P1, a logic XOR gate 810-2 configured to output a third parity bit P2, a logic XOR gate 810-3 configured to output a fourth parity bit P3, a logic XOR gate 810-4 configured to output a fifth parity bit P4, and logic XOR gate 810-5 configured to output a sixth parity bit P5. The six parity bits PO-P5 may be transmitted to the target IC die using DDR via corresponding microbumps DQ5, DQ6, and DQ7. - Each of these encoder logic gates 810 may receive a respective group inputs based on position of high bits in H-
matrix 1000 ofFIG. 10A . For example, logic gate 810-0 may generate parity bit P0 by receiving and XORing D0, D2, D3, D6, D8, and C0 (see, e.g., the position of “1” bits in the first row of H-matrix 100). Note that inputs C0-05 ofgenerator 802 may optionally be tied to zero. The connection of C0-C5 to the respective gates 810 are also optional since error in parity does not affect the data bits. As another example, logic gate 810-1 may generate parity bit P1 by receiving and XORing D0, D2, D4, D5, D6, and C1 (see, e.g., the position of “1” bits in the second row of H-matrix 100). As yet another example, logic gate 810-5 may generate parity bit P5 by receiving and XORing D1, D4, D6, D7, D9, and C5 (see, e.g., the position of “1” bits in the bottom row of H-matrix 100). - The particular encoder configuration of
FIG. 8A is merely illustrative. In general, the implementation of encoderparity bit generator 802 may vary depending on the size and the specific pattern of values in the associated H-matrix. If desired,parity bit generator 802 may include any suitable number of logic gates and can include any combination of different types of logic gates (e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.), each of which may include any desired number of inputs. - Referring back to
FIG. 9 , the encoder may then transmit the encoded data along with the parity bits generated byparity bit generator 802 using DDR (step 906). Atstep 908, a corresponding decoder in the receiver IC die may receive the encoded data via the microbumps, may generate syndrome bits, and decode the syndrome bits to identify the error location. Atstep 910, the decoder may then correct any erroneous bits to output a corrected codeword. -
FIG. 8B is a diagram of an illustrative error correcting code (ECC) decoder circuit such as ECC decoder 850. Decoder 850 may be configured to decode the encoded codeword that is received fromencoder 800 ofFIG. 8A via a DDR transfer scheme. As shown inFIG. 8A , decoder 850 may includedemultiplexers 856 for separating the even and odd data bits received from microbumps DQ0-DQ7. The even data bits may be latched using registers 854-0 at rising clock edges, whereas the odd data bits may be latched using registers 854-1 as falling clock edges. - Decoder 850 may further include a decoder syndrome bit generating circuit such as decoder
syndrome bit generator 852.Syndrome bit generator 852 may have a first set of inputs configured to receive the even and odd data bits received over microbumps DQ0-DQ4 and a second set of inputs configured to receive the even and odd parity bits received over microbumps DQ5-DQ7. -
Syndrome bit generator 852 may generate corresponding syndrome bits S0-S5 in accordance with the improved SEC-DED-DAEC ECC scheme operating in accordance with the four H-matrix constraints described above in connection withFIG. 9 . In other words, the decodersyndrome bit generator 852 may also be implemented in accordance with the bit pattern specified in H-matrix 1000 of the type shown inFIG. 10A . In the example ofFIG. 10A ,syndrome bit generator 852 may include a logic XOR gate 860-0 configured to output a first syndrome bit S0, a logic XOR gate 860-1 configured to output a second syndrome bit S1, a logic XOR gate 860-2 configured to output a third syndrome bit S2, a logic XOR gate 860-3 configured to output a fourth syndrome bit S3, a logic XOR gate 860-4 configured to output a fifth syndrome bit S4, and logic XOR gate 860-5 configured to output a sixth syndrome bit S5. - Since the same H-matrix governs both the encoding and decoding aspect of the ECC transfer, the inputs of logic gates 860 may be connected in the same way as encoder
parity bit generator 802 shown inFIG. 8A (e.g., the decoder syndrome bit generator and the encoder parity bit generator may have the same or substantially similar structure and wiring scheme). The particular decoder configuration ofFIG. 8B is, however, merely illustrative. In general, the implementation of decodersyndrome bit generator 852 may vary depending on the size and the specific pattern of values in the associated H-matrix. If desired,syndrome bit generator 852 may include any suitable number of logic gates and can include any combination of different types of logic gates (e.g., logic XOR gates, XNOR gates, AND gates, NAND gates, OR gates, NOR gates, etc.), each of which may include any desired number of inputs. - The decoder
syndrome bit generator 852 is configured such all of the syndrome bits S0-S5 will be equal to zero when the data is error free. In other words, at least one of the syndrome bits will be equal to “1” when the data is erroneous. Thus, decoder 850 may include a logic gate such as logic ORgate 870 that receives all of the syndrome bits and that outputs an asserted signal when a single bit error is detected. - The syndrome bits output by
syndrome bit generator 852 can be used to help identify the type and location of error bits. Assuming that the parity bits in the H-matrix 1000 described in connection withFIGS. 10A and 10B are used, a syndrome decimal value of 43 means that there is a single bit error at data bit D0; a syndrome value of 44 means that there is a single bit error at data bit D1; a syndrome value of 43 means that both data bits D0 and D1 transmitted over microbump DQ0 are erroneous; a syndrome value of 11 means that there is a single bit error at data bit D2; a syndrome value of 21 means that there is a single bit error at data bit D3; a syndrome value of 30 means that both data bits D2 and D3 transmitted over microbump DQ1 are erroneous; and so on. - Decoder 850 may further include a
syndrome decoder 880 that receives the syndrome bits fromgenerator 852 and that outputs high bit(s) at the corresponding error locations. In the example ofFIG. 8B where there are six syndrome bits and ten data bits,syndrome decoder 880 may be implemented as a 6:10 demultiplexing circuit.Syndrome decoder 880 may therefore sometimes be referred to as a syndrome demultiplexer. This particular configuration is merely illustrative. In general, the number of inputs ofsyndrome decoder 880 may be at least equal to the number of total syndrome bits generated at the decoder, and the number of outputs ofsyndrome demultiplexer 880 may be at least equal to the total number of data bits. For instance, if the syndrome bits yield a decimal value of 43, thensyndrome demultiplexer 880 may selectively drive an output bit high corresponding to data bit D0 while leaving all the other outputs low. As another example, if the syndrome bits yield a decimal value of 43, thensyndrome demultiplexer 880 may selectively drive the output bits corresponding to data bits D0 and D1 high while leaving the remaining bits low. As yet another example, if the syndrome bits yield a decimal value of 56, thensyndrome demultiplexer 880 may selectively drive the output bit corresponding to data bit D9 high while leaving the remaining bits low. -
Decoder 890 may further include anerror correction circuit 890 configured to receive the transmitted data bits, to receive the error location bits output fromsyndrome demultiplexer 880, and to output a corresponding corrected codeword. In the example ofFIG. 8B ,error corrector 890 may be implemented using a group of XOR gates, each of which has a first input that receives one of the even/odd data bits and a second input that receives the selectively asserted error location bit fromsyndrome decoder 880. If the error location bit is low (deasserted), the data bit received at the first XOR input will be passed through without change. If the error location bit is high (asserted), then the data bit received at the first XOR input will be inverted from the presumably incorrect value to the correct value. If desired, other ways of implementing the error correction may be used. - In the example of
FIGS. 8-10 in which 10 data bits D0-D9 are being transferred, five data microbumps and three parity microbumps are used to support this encoding/transmission scheme. In accordance with an embodiment, the number of microbumps (s) that are required to transmit all the even and odd parity bits generated using a method of the type described in connection with at leastFIG. 9 may be expressed by the following expression: -
s>(1+log2(2k+2s))/2 (2) - where s represents the parity microbumps count (i.e., the number of microbumps needed to transmit the even and odd parity bits using DDR) and where k represents the data microbump count (i.e., the number of microbumps needed to transmit the even and odd data bits using DDR).
-
FIG. 11 is a table 1100 illustrating the total number of microbumps (n) needed as a function of the number of data bits using the ECC encoding scheme ofFIG. 9 that encodes whole DDR data stream without first separating data bits into even and odd portions.Column 1102 lists the total number of data bits (d).Column 1106 lists k, the data microbump count. Assuming DDR is used, k is simply equal to d/2.Column 1110 lists the values computed usingexpression 2 above.Column 1108 lists parity microbump count s, which is the next lowest integer greater than the corresponding value incolumn 1110.Column 1104 lists the total microbump count n, which is simply equal to (k+s).Row 1190 in table 1100 summarizes the microbump configuration shown inFIG. 5 , where d=40 and n turns out to be equal to 24 and where s=4. In other words, integer s represents the microbump overhead that is needed for the SEC-DED-DAEC encoding. Compared to the previous SEC-DED encoding scheme that requires 26 total microbumps, this improved DDR-specific SEC-DED-DAEC encoding scheme requires only 24 total microbumps, which requires 33% fewer parity microbumps. This overhead savings or reduction in parity bits/microbump count is magnified as the number of data bits increase. -
FIG. 12 is a plot illustrating how the ECC scheme ofFIG. 9 requires much fewer parity bits relative to the ECC scheme ofFIG. 4 .Curve 1202 represents the requisite number of parity bits as a function of DDR data bits when using the encoding scheme ofFIG. 4 , whereas 1204 represents the requisite number of parity bits as a function of DDAR data bits when using the encoding/decoding scheme described in connection withFIGS. 7-11 . As shown inFIG. 12 , the improved encoding scheme uses substantially fewer parity bits (thus requiring much fewer parity microbumps), and the gap widens as the number of data bits increases beyond 100 or more. - The following examples pertain to further embodiments.
- Example 1 is an integrated circuit, comprising: a first group of bumps configured to receive data bits from another integrated circuit; a second group of bumps configured to receive parity bits from the another integrated circuit, wherein the data bits and the parity bits are transmitted to the another integrated circuit using a double data rate (DDR) transfer scheme; and a syndrome bit generating circuit that is configured to receive the data bits from the first group of bumps and that is configured to implement a decoding scheme that exploits an error characteristic associated with the DDR transfer scheme at a defective bump in the first group of bumps to reduce the total number of required bumps in the second group of bumps.
- Example 2 is the integrated circuit of example 1, wherein the defective bump is optionally configured to receive an even data bit at a rising clock edge and an odd data bit at a falling clock edge.
- Example 3 is the integrated circuit of example 2, wherein the error characteristic associated with the DDR transfer scheme at the defective bump optionally comprises up to four possible error scenarios.
- Example 4 is the integrated circuit of example 3, wherein the four possible error scenarios optionally comprise a single error at the even data bit and a single error at the odd data bit.
- Example 5 is the integrated circuit of example 4, wherein the four possible error scenarios optionally further comprises errors at both the even data bit and the odd data bit and no errors at the even data bit and the odd data bit.
- Example 6 is the integrated circuit of any one of examples 1-5, wherein the decoding scheme of the syndrome bit generating circuit is optionally implemented based on a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) error correcting code (ECC) scheme.
- Example 7 is the integrated circuit of example 6, wherein the SEC-DED-DAEC ECC scheme optionally imposes at least four constraints on a parity check matrix that determines the configuration of the syndrome bit generating circuit.
- Example 8 is the integrated circuit of example 7, wherein the at least four constraints optionally stipulates that: a) no columns in the parity check matrix are all zeros; b) every column in the parity check matrix is distinct; and c) every column in the parity check matrix contains an odd number of ones.
- Example 9 is the integrated circuit of example 8, wherein the at least four constraints further optionally stipulates that: d) every even and odd column pair in the parity check matrix is distinct.
- Example 10 is the integrated circuit of example 9, wherein the syndrome bit generating circuit is optionally implemented based on values in the parity check matrix and also based on additional parity bits obtained by combining even and odd columns in the parity check matrix.
- Example 11 is the integrated circuit of example 10, wherein the additional parity bits optionally allow the syndrome bit generating circuit to identify adjacent even and odd bit errors at the defective bump.
- Example 12 is an integrated circuit, comprising: a first group of bumps configured to output data bits to another integrated circuit; a second group of bumps configured to output parity bits to the another integrated circuit; and a parity bit generating circuit that is configured to receive the data bits and that is configured to implement an encoding scheme that reduces the total number of required bumps in the second group of bumps by taking advantage of a double data rate (DDR) error characteristic of a defective bump in the first group of bumps.
- Example 13 is the integrated circuit of example 12, wherein the defective bump is optionally configured to receive an even data bit at a rising clock edge and an odd data bit at a falling clock edge.
- Example 14 is the integrated circuit of example 13, wherein the DDR error characteristic associated with the DDR transfer scheme at the defective bump optionally comprises four possible error scenarios.
- Example 15 is the integrated circuit of example 14, wherein the four possible error scenarios optionally comprise: a single error at the even data bit; a single error at the odd data bit; a double error at both the even data bit and the odd data bit; and no errors at the even data bit and the odd data bit.
- Example 16 is the integrated circuit of any one of examples 12-15, wherein the encoding scheme of the parity bit generating circuit is optionally implemented based on a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) error correcting code (ECC) scheme.
- Example 17 is a system, comprising: a first integrated circuit die; and a second integrated circuit die configured to communicate with the first integrated circuit die via a plurality of microbumps, wherein: the first integrated circuit die is configured to transmit data bits to the second integrated circuit die using a double data rate (DDR) toggling scheme; and the first integrated circuit die comprises an encoder circuit configured to encode the data bits using an error correcting code (ECC) scheme that is capable of detecting and correcting adjacent even and odd data bit errors at a defective microbump in the plurality of microbumps.
- Example 18 is the system of example 17, wherein the ECC scheme optionally comprises a single error correcting, double error detecting, and double adjacent error correcting (SEC-DED-DAEC) scheme that requires fewer parity bits than a single error correcting and double error detecting (SEC-DED) scheme.
- Example 19 is the system of example 18, wherein the SEC-DED-DAEC scheme optionally imposes at least the following constraints on an H-matrix that determines the configuration of the encoder circuit: a) no columns in the H-matrix are all zeros; b) every column in the H-matrix is distinct; c) every column in the H-matrix contains an odd number of ones; and d) a function of an even column and an odd column in each associated column pair is distinct from the function of an even column and an odd column of every other column pair in the H-matrix.
- Example 20 is the system of example 19, wherein the second integrated circuit die optionally comprises a decoder circuit configured to decode the data bits received from the first integrated circuit, and wherein the decoder circuit is implemented based on the H-matrix and also based on additional parity bits generated by taking the function of the even column and the odd column in each column pair of the H-matrix.
- For instance, all optional features of the apparatus described above may also be implemented with respect to the method or process described herein. The foregoing is merely illustrative of the principles of this disclosure and various modifications can be made by those skilled in the art. The foregoing embodiments may be implemented individually or in any combination.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/699,225 US20200097362A1 (en) | 2019-11-29 | 2019-11-29 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
DE102020130175.8A DE102020130175A1 (en) | 2019-11-29 | 2020-11-16 | METHOD AND DEVICE FOR REDUCING MICROBOND HILLS FOR A DOUBLE-DATA RATE (DDR) TRANSFER BETWEEN THESE |
US18/356,008 US20230367674A1 (en) | 2019-11-29 | 2023-07-20 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/699,225 US20200097362A1 (en) | 2019-11-29 | 2019-11-29 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/356,008 Continuation US20230367674A1 (en) | 2019-11-29 | 2023-07-20 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200097362A1 true US20200097362A1 (en) | 2020-03-26 |
Family
ID=69883389
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/699,225 Abandoned US20200097362A1 (en) | 2019-11-29 | 2019-11-29 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
US18/356,008 Pending US20230367674A1 (en) | 2019-11-29 | 2023-07-20 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/356,008 Pending US20230367674A1 (en) | 2019-11-29 | 2023-07-20 | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer |
Country Status (2)
Country | Link |
---|---|
US (2) | US20200097362A1 (en) |
DE (1) | DE102020130175A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11545467B2 (en) * | 2018-09-12 | 2023-01-03 | Huawei Technologies Co., Ltd. | IC die to IC die interconnect using error correcting code and data path interleaving |
CN116302659A (en) * | 2023-04-27 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | GPU video memory error processing method and device, electronic equipment and storage medium |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120068339A1 (en) * | 2010-09-21 | 2012-03-22 | Mosys, Inc. | VLSI Package for High Performance Integrated Circuit |
US8402404B1 (en) * | 2011-11-17 | 2013-03-19 | Taiwan Semiconductor Manufacturing Co., Ltd. | Stacked die interconnect validation |
US20160357630A1 (en) * | 2015-06-05 | 2016-12-08 | Samsung Electronics Co., Ltd. | Semiconductor memory device providing analysis and correcting of soft data fail in stacked chips |
US20170286197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Validation of memory on-die error correction code |
US20180342265A1 (en) * | 2017-05-26 | 2018-11-29 | Micron Technology, Inc. | Error detection code hold pattern synchronization |
US20190095264A1 (en) * | 2005-06-03 | 2019-03-28 | Rambus Inc. | Memory Controller With Error Detection And Retry Modes Of Operation |
US20190295679A1 (en) * | 2016-07-22 | 2019-09-26 | Micron Technology, Inc. | Shared error detection and correction memory |
US20200243486A1 (en) * | 2019-01-30 | 2020-07-30 | Sunrise Memory Corporation | Device with embedded high-bandwidth, high-capacity memory using wafer bonding |
US20200264950A1 (en) * | 2019-02-19 | 2020-08-20 | Micron Technology, Inc. | Memory device with configurable error correction modes |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418068B1 (en) * | 2001-01-19 | 2002-07-09 | Hewlett-Packard Co. | Self-healing memory |
US9263157B2 (en) * | 2013-12-23 | 2016-02-16 | International Business Machines Corporation | Detecting defective connections in stacked memory devices |
US9916196B2 (en) * | 2014-02-28 | 2018-03-13 | Rambus Inc. | Memory module with dedicated repair devices |
US10445278B2 (en) * | 2016-12-28 | 2019-10-15 | Intel Corporation | Interface bridge between integrated circuit die |
-
2019
- 2019-11-29 US US16/699,225 patent/US20200097362A1/en not_active Abandoned
-
2020
- 2020-11-16 DE DE102020130175.8A patent/DE102020130175A1/en active Pending
-
2023
- 2023-07-20 US US18/356,008 patent/US20230367674A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190095264A1 (en) * | 2005-06-03 | 2019-03-28 | Rambus Inc. | Memory Controller With Error Detection And Retry Modes Of Operation |
US20120068339A1 (en) * | 2010-09-21 | 2012-03-22 | Mosys, Inc. | VLSI Package for High Performance Integrated Circuit |
US8402404B1 (en) * | 2011-11-17 | 2013-03-19 | Taiwan Semiconductor Manufacturing Co., Ltd. | Stacked die interconnect validation |
US20160357630A1 (en) * | 2015-06-05 | 2016-12-08 | Samsung Electronics Co., Ltd. | Semiconductor memory device providing analysis and correcting of soft data fail in stacked chips |
US20170286197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Validation of memory on-die error correction code |
US20190295679A1 (en) * | 2016-07-22 | 2019-09-26 | Micron Technology, Inc. | Shared error detection and correction memory |
US20180342265A1 (en) * | 2017-05-26 | 2018-11-29 | Micron Technology, Inc. | Error detection code hold pattern synchronization |
US20200243486A1 (en) * | 2019-01-30 | 2020-07-30 | Sunrise Memory Corporation | Device with embedded high-bandwidth, high-capacity memory using wafer bonding |
US20200264950A1 (en) * | 2019-02-19 | 2020-08-20 | Micron Technology, Inc. | Memory device with configurable error correction modes |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11545467B2 (en) * | 2018-09-12 | 2023-01-03 | Huawei Technologies Co., Ltd. | IC die to IC die interconnect using error correcting code and data path interleaving |
CN116302659A (en) * | 2023-04-27 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | GPU video memory error processing method and device, electronic equipment and storage medium |
Also Published As
Publication number | Publication date |
---|---|
DE102020130175A1 (en) | 2021-06-02 |
US20230367674A1 (en) | 2023-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11829267B2 (en) | Data encoding using spare channels in a memory system | |
US20230367674A1 (en) | Methods and apparatus for reducing microbumps for inter-die double-data rate (ddr) transfer | |
US20210344352A1 (en) | Memory controller and method of data bus inversion using an error detection correction code | |
US9270506B2 (en) | Methods for bypassing faulty connections | |
US10108488B2 (en) | Memory module with integrated error correction | |
US11209994B2 (en) | Systems and methods for data path power savings in DDR5 memory devices | |
US8966338B2 (en) | Cyclic redundancy check code generating circuit, semiconductor memory device, and method of driving semiconductor memory device | |
US10467177B2 (en) | High speed memory interface | |
US8024642B2 (en) | System and method for providing constrained transmission and storage in a random access memory | |
KR100850207B1 (en) | Memory device employing dual clocking method for systematic code generation | |
US7471219B1 (en) | Low latency constrained coding for parallel busses | |
US20060095826A1 (en) | Semiconductor memory chip, semiconductor memory module and method for transmitting write data to semiconductor memory chips | |
US11442810B2 (en) | Memory and operation method of memory | |
US11841815B1 (en) | Chiplet gearbox for low-cost multi-chip module applications | |
JP2022063152A (en) | Multiple error detection circuit detecting multiple errors in multiple links and error correction circuit having multiple error detection circuit | |
CN113541734A (en) | Semiconductor system including transmitter and receiver | |
CN117170574A (en) | Data protection for stacks of memory dies | |
Bakos | Lightweight hierarchical error control codes for multi-bit differential channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LAW, HWA CHAW;JONG, KIUN KIET;REEL/FRAME:051137/0817 Effective date: 20191122 |
|
STCT | Information on status: administrative procedure adjustment |
Free format text: PROSECUTION SUSPENDED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |
|
AS | Assignment |
Owner name: ALTERA CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTEL CORPORATION;REEL/FRAME:066353/0886 Effective date: 20231219 |