Non-synchronous ASIC

By dividing clock domains into phase-shifted domains with staggered clock synchronization, the noise and power consumption issues in synchronous circuits are addressed, achieving efficient and reliable operation.

JP7825684B2Active Publication Date: 2026-03-06MAGIC LEAP INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024178926
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-10-24
Filing Date
2024-10-11
Publication Date
2026-03-06
Estimated Expiration
2039-10-23

AI Technical Summary

Technical Problem

Digital logic devices using synchronous circuits experience unwanted resonant circuit noise due to large numbers of transistors switching simultaneously, which is amplified as clock frequencies increase, and this noise is difficult to manage without increasing power consumption and design complexity.

Method used

Divide the clock domain into phase-shifted clock domains using phase-shifted clocks derived from a common reference clock, synchronizing registers within these domains to stagger transistor state transitions and reduce resonance.

Benefits of technology

Reduces transistor resonance and power consumption while maintaining synchronization benefits by staggering transistor switching times, thereby minimizing noise and design complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007825684000001
    Figure 0007825684000001
  • Figure 0007825684000002
    Figure 0007825684000002
  • Figure 0007825684000003
    Figure 0007825684000003
Patent Text Reader

Abstract

To provide systems and methods for providing clock signals to components of electronic devices.SOLUTION: Devices 100 including an Application Specific Integrated Circuit (ASIC) may be synchronized to one or more phase-shifted-clock domains. For instance, a block 110 is synchronized to a phase-shifted-clock domain 140A; a block 112 is synchronized to a phase-shifted-clock domain 140B; and a block 114 is synchronized to a phase-shifted-clock domain 140C.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims priority to U.S. Provisional Patent Application No. 62 / 750,180, filed October 24, 2018, the contents of which are incorporated herein by reference in their entirety.

[0002] (Field) FIELD OF THE DISCLOSURE The present disclosure relates to electronic circuits, and more particularly to systems and methods for providing clock signals to components of electronic devices. [Background technology]

[0003] (background) Nearly all digital logic devices use clock signals to initiate or control the timed behavior of the electronic components of these devices. For example, a clock signal provided to the clock input of a register causes the register to propagate its data input to its data output. At a low level, the clock signal (e.g., a periodic digital logic signal that alternates between logic 1 and logic 0) may cause one or more semiconductor devices (e.g., the transistors of a register) to switch from a conducting state to a non-conducting state, or vice versa.

[0004] In devices including application-specific integrated circuits (ASICs), the ASIC can be thought of as including individual functional units (or "blocks"), with each block's registers synchronized to the block's local clock. The blocks can include circuitry (including programmable logic circuitry) configured to perform one or more functions associated with the block. In so-called synchronous circuit designs, two or more blocks can be synchronized to the same global clock in a single "clock domain." By synchronizing blocks within a clock domain, synchronous circuits can avoid a common problem with using multiple independent local clocks: clock drift, which can require inefficient rebuffering operations to correct. However, by providing the same clock signal to multiple clocks simultaneously, synchronous circuits can experience unwanted higher-order effects, such as resonant circuit noise caused by the large number of transistors switching at once ("transistor resonance"). For modern digital devices, the number of such transistors is staggering (on the order of tens of billions for some devices), and the resulting resonant circuit noise can be quite noticeable. Furthermore, these unwanted effects can be amplified as clock frequencies increase. It is desirable to utilize a timekeeping scheme that retains the benefits of synchronized clocks while avoiding the unwanted noise that synchronized clocks can introduce. As described herein, this can be achieved by dividing a clock domain into "phase-shifted clock domains" where the phase-shifted clock domains exchange data asynchronously but are synchronized to "phase-shifted clocks" derived from a common reference clock. Summary of the Invention [Means for solving the problem]

[0005] (Brief Overview) Systems and methods for indicating a clock signal in a digital device are disclosed. In some examples, an electronic device is disclosed having a first clock configured to operate at a frequency. First circuitry of the electronic device is configured to synchronize with the first clock. Second circuitry is configured to determine a second clock based on the first clock. The second clock is configured to operate at the frequency of the first clock and further configured to operate with a phase shift relative to the first clock. Third circuitry is configured to synchronize with the second clock. The present invention provides, for example, the following. (Item 1) a first clock configured to operate at a frequency; a first circuit arrangement configured to synchronize with the first clock; a second circuit configuration configured to determine a second clock based on the first clock, the second clock configured to operate at the frequency of the first clock and further configured to operate with a phase shift relative to the first clock; a third circuit arrangement configured to synchronize with the second clock; An electronic device comprising: (Item 2) determining the second clock; generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at the frequency of the first clock and further configured to operate with a respective phase shift relative to the first clock; selecting the second clock from the plurality of clock candidates; Item 1. The electronic device according to item 1, comprising: (Item 3) 3. The electronic device of claim 2, wherein the second clock is selected to be the clock candidate among the plurality of clock candidates having a respective phase shift closest to 180 degrees. (Item 4) Item 3. The electronic device of item 2, wherein the second clock is selected to reduce transistor resonance of the electronic device. (Item 5) Item 1. The electronic device of item 1, wherein the electronic device is an ASIC, the first circuit configuration corresponds to a first functional block of the ASIC, the second circuit configuration comprises a delay-locked loop, and the third circuit configuration corresponds to a second functional block of the ASIC. (Item 6) the electronic device further comprises a memory; the electronic device is configured to perform a data write operation on the memory, the data write operation being synchronized to the first clock; the electronic device is configured to perform a data read operation on the memory, the data read operation being synchronized to the second clock; Item 1. The electronic device according to item 1. (Item 7) Item 10. The electronic device of item 1, wherein the first circuitry is further configured to transmit data to the third circuitry. (Item 8) the electronic device further comprising a data bus electronically coupled to the first circuitry and the third circuitry, the data bus comprising one or more wires including a first wire; the first circuitry is further configured to transmit the data to the third circuitry via the data bus; the electronic device further comprises one or more latches including a first latch configured to receive the data via the first wire, the first latch configured to synchronize with a third clock determined based on the first clock; Determining the third clock based on the first clock includes: generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at the frequency of the first clock and further configured to operate with a respective phase shift relative to the first clock; selecting the third clock from the plurality of clock candidates; Equipped with the third clock is selected from the plurality of clock candidates based on a latency between the first circuitry transmitting the data and the first latch receiving the data; Item 8. The electronic device according to item 7. (Item 9) each latch of the one or more latches corresponds to a respective wire of the one or more wires and is configured to receive the data via the respective wire; each latch of the one or more latches is configured to synchronize with a respective clock selected from the plurality of clock candidates; a respective clock is selected from the plurality of candidate clocks based on a latency between the first circuitry transmitting the data and a latch of that respective clock receiving the data; Item 9. The electronic device according to item 8. (Item 10) An electronic device comprising a first circuit configuration, a second circuit configuration, and a third circuit configuration, synchronizing the first circuitry with a first clock operating at a frequency; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and with a phase shift relative to the first clock; synchronizing the third circuitry with the second clock; A method comprising: (Item 11) determining the second clock; generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates operating at the frequency of the first clock and with a respective phase shift relative to the first clock; selecting the second clock from the plurality of clock candidates; Item 11. The method of item 10, comprising: (Item 12) Item 12. The method of item 11, wherein the second clock is selected to be the clock candidate among the plurality of clock candidates that has a respective phase shift closest to 180 degrees. (Item 13) Item 12. The method of item 11, wherein the second clock is selected to reduce transistor resonance of the electronic device. (Item 14) Item 11. The method of item 10, wherein the first circuit configuration corresponds to a first functional block of an ASIC, the second circuit configuration comprises a delay-locked loop, and the third circuit configuration corresponds to a second functional block of the ASIC. (Item 15) performing a data write operation to a memory of the electronic device in accordance with transitions of the first clock; performing a data read operation on the memory in accordance with a transition of the second clock; Item 11. The method of item 10, further comprising: (Item 16) Item 11. The method of item 10, further comprising transmitting data from the first circuitry to the third circuitry. (Item 17) 1. A method for transmitting data, the method comprising: synchronizing a first circuit configuration with a first clock operating at a frequency, the first clock associated with a first clock domain; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and further operating with a phase shift relative to the first clock, the second clock being associated with a second clock domain; synchronizing second circuitry with the second clock, the second circuitry configured to receive data from the first circuitry via one or more latches electronically coupled to a data bus, the data bus comprising one or more wires including a first wire, the one or more latches including a first latch configured to receive the data via the first wire; generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at the frequency of the first clock and further configured to operate with a respective phase shift relative to the first clock; synchronizing the first latch with a third clock selected from the plurality of clock candidates; transmitting the data from the first circuitry to the second circuitry via the data bus and the first latch; A method comprising: (Item 18) 18. The method of claim 17, wherein the third clock is selected from the plurality of clock candidates based on a latency between the first circuitry transmitting the data and the first latch receiving the data. (Item 19) each latch of the one or more latches corresponds to a respective wire of the one or more wires and is configured to receive the data via the respective wire; The method comprises: for each latch of the one or more latches, selecting a respective clock from the plurality of clock candidates based on a latency between the latch and the first circuitry transmitting the data; and synchronizing the latch to the respective clock. Item 19. The method of item 18, further comprising: [Brief explanation of the drawings]

[0006] BRIEF DESCRIPTION OF THE DRAWINGS [Figure 1] FIG. 1 illustrates an example electronic device with blocks grouped into clock domains, according to some embodiments.

[0007] [Figure 2] FIG. 2 illustrates an example electronic device with blocks grouped into clock domains and phase-shifted clock domains, according to some embodiments.

[0008] [Figure 3] FIG. 3 illustrates an example of two phase-shifted clock domains of an electronic device configured to exchange data, according to some embodiments.

[0009] [Figure 4] FIG. 4 illustrates an example first-in, first-out (FIFO) buffer configured to transfer data between two phase-shifted clock domains of an electronic device, according to some embodiments.

[0010] [Figure 5] FIG. 5 illustrates an example of generating a phase-shifted clock from a reference clock, according to some embodiments.

[0011] [Figure 6] FIG. 6 illustrates a block diagram of an example process for configuring data transfer between two phase-shifted clock domains of an electronic device, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0012] (Detailed explanation) In the following description of the examples, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific examples that may be practiced. It will be understood that other examples may be utilized and structural changes may be made without departing from the scope of the disclosed examples.

[0013] 1 illustrates a high-level view of an ASIC 100 according to some embodiments. ASIC 100 includes seven functional blocks 110, 112, 114, 116, 118, 120, and 122, three reference clocks 130, 132, and 134, and three clock domains 140, 142, and 144, where clock domain 140 is synchronized to reference clock 130, clock domain 142 is synchronized to reference clock 132, and clock domain 144 is synchronized to reference clock 134. As shown in FIG. 1, the three clock domains (140, 142, and 144) are shared among the seven blocks (110, 112, 114, 116, 118, 120, and 122) of ASIC 100, such that multiple blocks (e.g., 110, 112, and 114) are synchronized to the same clock domain (e.g., clock domain 140). Blocks synchronized to the same clock domain enjoy benefits such as elimination of clock drift (removing the need to synchronize blocks to independent clocks), etc. In such a system, data can be transmitted synchronously between two blocks in the same clock domain (e.g., between block 110 and block 112 in this example).

[0014] However, synchronizing multiple blocks (e.g., blocks 110, 112, and 114) to the same clock domain (e.g., clock domain 140) can pose unique problems. For example, due in part to the length of the wires connecting a transmitting block (e.g., block 110) and a receiving block (e.g., block 112), propagation delays occur in data signals sent from a transmitting block to a receiving block, and these signals may not all arrive at their respective destinations in the receiving block at the same time (due in part to the different lengths of the wires carrying these signals). Correcting such timing errors introduces overhead and complexity; for example, data signals may need to be buffered along the transmission path as they propagate from the transmitting block to the receiving block, and the buffering process generally increases the power consumption of digital logic devices that include the transmitting and receiving blocks. To make matters worse, the need for buffering increases with the size and complexity of digital logic devices, which increasingly require a greater number of blocks and thinner wires for inter-chip communication.

[0015] Furthermore, synchronizing multiple blocks of a digital logic device within a single clock domain means that the conduction state transition activity of the semiconductor devices within those blocks is synchronized. For example, all transistors in blocks within the same clock domain (e.g., blocks 110, 112, and 114 within clock domain 140) may change state at the same time. The resulting resonances may result in unwanted digital noise that scales with the size, complexity, and transistor density of ASIC 100. While adding noise isolation to ASIC blocks can reduce such noise, adding noise isolation generally results in unnecessary power consumption and may present undesirable layout and design constraints. It is desirable to stagger the times at which such transistors transition between on and off states within a single clock domain.

[0016] Thus, the need to rebuffer data signals transmitted between two ASIC blocks synchronized to the same clock domain may be reduced to reduce ASIC power consumption and complexity. Furthermore, noise caused by synchronized switching of semiconductors within a single clock domain may be reduced. Moreover, these objectives may be achieved while retaining the benefits (e.g., simplicity, reliability) of synchronizing multiple ASIC blocks to a single reference clock within a single clock domain.

[0017] In some embodiments, this can be achieved within a single clock domain synchronized to a single reference clock by generating one or more phase-shifted clocks from the reference clock and coupling each phase-shifted clock to a subset of registers within that phase-shifted clock domain. The phase-shifted clocks generated from the reference clock can share the same frequency as the reference clock but operate with a phase shift relative to the reference clock. Because the phase-shifted clocks are generated from the same reference clock and operate at the same frequency as the reference clock, clock drift does not occur between two phase-shifted clocks within the same phase-shifted clock domain, nor between a phase-shifted clock and its reference clock. The registers within a clock domain can be divided into subgroups ("phase-shifted clock domains"), each timed to a phase-shifted clock, with the phase shift of each phase-shifted clock determining when the transistors of the corresponding register change state relative to the reference clock. The times of these state changes can be staggered by the circuit designer to achieve desired "load balancing." Load balancing can reflect the designer's efforts to control the switching peaks of the design. For example, an ASIC in which many or all registers switch at the same instant may experience high peak currents from the power supply and high levels of noise, but by synchronizing the ASIC blocks with phase-shifted clocks so that many registers do not switch at the same instant, lower peak currents from the power supply and lower noise can be achieved.

[0018] 2 illustrates an example of dividing the clock domain of the example ASIC 100 into phase-shifted clock domains, according to some embodiments. As illustrated in FIG. 2, clock domain 140 (synchronized to reference clock 130) is subdivided into three phase-shifted clock domains 140A, 140B, and 140C. Phase-shifted clock domain 140A may be synchronized to phase-shifted clock 130A, phase-shifted clock domain 140B may be synchronized to phase-shifted clock 130B, and phase-shifted clock domain 140C may be synchronized to phase-shifted clock 130C, where phase-shifted clocks 130A, 130B, and 130C are derived from reference clock 130 and operate at the same frequency as reference clock 130. Similarly, in this example, clock domain 142 is subdivided into phase-shifted clock domains 142A, 142B, and 142C, where phase-shifted clock domain 142A is synchronized to phase-shifted clock 132A, phase-shifted clock domain 142B is synchronized to phase-shifted clock 132B, and phase-shifted clock domain 142C is synchronized to phase-shifted clock 132C, which are derived from reference clock 132. Not all clock domains need be divided into phase-shifted clock domains, and by way of example, in the example shown, clock domain 144 is not divided into phase-shifted clock domains and is still synchronized to reference clock 134.

[0019] An ASIC block may be synchronized to one or more phase-shifted clock domains. By way of example, in the example shown in FIG. 2, block 110 is synchronized to phase-shifted clock domain 140A, block 112 is synchronized to phase-shifted clock domain 140B, and block 114 is synchronized to phase-shifted clock domain 140C. In some cases, two or more ASIC blocks may be synchronized to a single phase-shifted clock domain. Furthermore, two or more portions of a single ASIC block (e.g., groupings of components or registers) may be synchronized to different phase-shifted clock domains. By way of example, as shown, a first portion of block 120 is synchronized to phase-shifted clock domain 142B, and a second portion of block 120 is synchronized to phase-shifted clock domain 142C. A circuit designer may partition an ASIC block or a region of an ASIC block into phase-shifted clock domains based on design considerations for a particular application.

[0020] The phase-shifted clocks may be generated using various techniques known in the art for generating clocks from a reference clock. For example, a delay-locked loop (DLL) may be used to generate a phase-shifted clock (e.g., phase-shifted clock 130A) as a phase-shifted version (with the same frequency as the reference clock) of a reference clock (e.g., reference clock 130).

[0021] 3 illustrates an example of two phase-shifted clock domains of an ASIC, such as example ASIC 100, configured to asynchronously communicate data, according to some embodiments. As illustrated in FIG. 3, block 110 (synchronized to phase-shifted clock domain 140A) asynchronously communicates data with block 112 (synchronized to phase-shifted clock domain 140B). Block 110 includes an asynchronous transfer module 310A for sending data and / or control signals to block 112 via bus 150A, and block 112 includes an asynchronous receive module 312A for receiving data from block 110 (via transfer module 310A). Modules 310A and 312A may be arranged in a master / slave configuration, with module 310A configured as the master and module 312A configured as the slave. Similarly, in an example where block 112 is configured to send data and block 110 is configured to receive data, block 112 may include an asynchronous transfer module 312B for sending data and / or control signals to block 110 via bus 150B (which in some examples may be the same as bus 150A), and block 110 may include an asynchronous receive module 310B for receiving data from block 112 (via transfer module 312B). Modules 312B and 310B may be arranged in a master / slave configuration, with module 312B configured as the master and module 310B configured as the slave. The transfer / receive modules of each block are clocked to phase-shifted clocks of their respective phase-shifted clock domains; for example, transfer module 310A and receive module 310B of block 110 are clocked to phase-shifted clock 130A, and transfer module 312B and receive module 312A of block 112 are clocked to phase-shifted clock 130B.(In some examples, forwarding and receiving modules such as those described herein need not be separate units, but may overlap or share common components.)

[0022] Data bus 150A and / or data bus 150B may carry data and / or control signals in any suitable configuration. When data crosses between clock domains or phase-shifted clock domains asynchronously, various problems can arise. For example, if data from one “lane” of the data bus arrives at the receiving end earlier or later than expected (e.g., due to differences in the length of electrical wire that the data in each lane must travel), the data on bus 150A / bus 150B risks becoming incoherent. Additionally, data transmitted from the transmitting phase-shifted clock domain may be lost if it is not captured in the receiving phase-shifted clock domain due to data instability. Such phase-shifted clock domain crossing problems may result in functional errors in the receiving phase-shifted clock domain. Various technologies suitable for dealing with clock domain crossings may be compatible with phase-shifted clock domain crossings; one exemplary system for addressing phase-shifted clock domain crossing issues is a first-in, first-out (FIFO) buffer, as described below. The clock domain crossing logic may be implemented, in whole or in part, for example, within the asynchronous receive module 312A of block 112, within the asynchronous transfer module 310A of block 110, within the asynchronous receive module 310B of block 110, within the asynchronous transfer module 312B of block 112, within circuitry between blocks 110 and 112, or in any other suitable location or combination of locations.

[0023] 4 illustrates a portion of an example FIFO buffer 400 configured to pass data between phase-shifted clock domains of an ASIC (such as phase-shifted clock domains 140A and 140B in example ASIC 100), according to some embodiments. In some examples, FIFO buffer 400 may be implemented, in whole or in part, within asynchronous receive module 312A of block 112, within asynchronous transfer module 310A of block 110, within asynchronous receive module 310B of block 110, within asynchronous transfer module 312B of block 112, within circuitry between blocks 110 and 112, or in any other suitable location or combination of locations. As shown in FIG. 4, input 402 (shown in the figure as 402(K)) is data sent to FIFO buffer 400; by way of example, input 402 may correspond to data sent over one or more wires of bus 150A from block 110 to block 112, as shown in FIG. 3. In the example shown, input 402 has a width K of four bits (which may correspond to the number K of wires in bus 150A), and the four bits are shown as 402A, 402B, 402C, and 402D. However, the value of K may correspond to any suitable data width. Each of bits 402A through 402D is shown as an input to a respective register 404A through 404D. Registers 404A through 404D are clocked by a respective lane clock 406A through 406D, respectively. Each of the lane clocks 406A-406D is a phase-shifted clock selected as described below for the respective register 404A-404D. The lane clocks 406A-406D advance the respective data bits 402A-402D through the respective register 404A-404D to a multiplexer 408. In general, the number of registers 404, the number of lane clocks 406, and the number of inputs to the multiplexer 408 are all equal to the data width K of the input 402 (four in this example, although any suitable data width may be used).

[0024] Lane clocks 406A-406D are selected so that input bits 402A-402D arrive at the input of multiplexer 408 in an ordered order corresponding to the bit positions of these input bits in input 402. Lane clocks 406A-406D may be generated from a reference clock (e.g., reference clock 130) and may be selected as described below with respect to FIGS. 5 and 6. With bits 402A-402D arriving at multiplexer 408 in the ordered order, multiplexer 408 may write the ordered data to memory 410 (which may include RAM or any other suitable type of storage). The ordered data may be read from memory 410 as data 440. The details of memory 410 may be selected to suit the application at hand; by way of example, an exemplary memory 410 may include sufficient storage to store 10 stages for each data bit 402A-402D.

[0025] The write address for writing input 402 to memory 410 may be controlled by write pointer 420, which may be sequentially advanced by write clock 422 while write enable 424 is active. Similarly, the read address for reading data 440 from memory 410 may be controlled by read pointer 430, which may be sequentially advanced by read clock 432 while read enable 434 is active. In this example, write clock 422 resides in phase-shifted clock domain 140A, and write clock 432 resides in phase-shifted clock domain 140B. Phase-shifted clock domain 140A (and thereby write clock 422) may be synchronized to phase-shifted clock 130A, and phase-shifted clock domain 140B (and thereby write clock 432) may be synchronized to phase-shifted clock 130B. As described above, one or more of phase-shifted clocks 130A and 130B may be synchronized to reference clock 130, and another one or more of phase-shifted clocks 130A and 130B may be a phase-shifted version of reference clock 130 (but running at the same frequency as reference clock 130). Thus, FIFO buffer 400 illustrates an example of transmitting data from a first block (e.g., 110) in a first phase-shifted clock domain (e.g., 140A) to a second block (e.g., 112) in a second phase-shifted clock domain (e.g., 140B). Furthermore, data may be transmitted in the reverse direction (i.e., from block 112 to block 110 via bus 150B) in a similar manner.

[0026] Lane clocks 406A-406D, write clock 422, and read clock 432 correspond to phase-shifted clocks generated from a reference clock (e.g., reference clock 130), as described above. Write clock 422 may correspond to phase-shifted clock 130A (to which phase-shifted clock domain 140A is synchronized), and read clock 342 may correspond to phase-shifted clock 130B (to which phase-shifted clock domain 140B is synchronized), as described above. In some examples, lane clocks 406A-406D, write clock 422, and read clock 432 may be selected from one or more phase-shifted clock “candidates,” where each phase-shifted clock candidate is generated from a reference clock (e.g., via a DLL), shares the frequency of the reference clock, and differs from the other phase-shifted clock candidates in terms of its phase shift relative to the reference clock.

[0027] FIG. 5 illustrates an example of generating phase-shifted clocks from a reference clock, according to some embodiments. The DLL may take as input a reference clock 502 having a period T (which may correspond, for example, to reference clock 130) and may take as output N phase-shifted clock candidates (e.g., eight clock signals 506A-506H). The number N of phase-shifted clock candidates may, but need not, be equal to the number of lane clocks (e.g., 406A-406D). In the example shown in FIG. 5, each of phase-shifted clock candidates 506A-506H is phase-shifted relative to reference clock 502 by a multiple of T / N. For example, if reference clock 502 has a period of 24 ns (e.g., the time difference between t0 and t1 in FIG. 5 ) and N is 8 as shown in this example, phase-shifted clock candidate 506A may have a phase shift of 0 ns (i.e., 0*24 / 8 ns), phase-shifted clock candidate 506B may have a phase shift of 3 ns (i.e., 1*24 / 8 ns), phase-shifted clock candidate 506C may have a phase shift of 6 ns (i.e., 2*24 / 8 ns), and so on. Techniques using DLLs to generate phase-shifted clocks (e.g., phase-shifted clock candidates 506A through 506H) from a reference clock are well known to those skilled in the art. T is the reciprocal of the reference clock frequency, and the number N may be selected by a circuit designer based on considerations such as the desired accuracy, latency and complexity requirements, and the reference clock frequency. As an example, a larger number N of phase-shifted clock candidates may potentially result in lower latency at the expense of complexity (since more suitable phase-shifted clock candidates can potentially be selected).

[0028] Once the phase-shifted clock candidates 506A-506H are generated, a lane clock (e.g., 406A-406D) may be selected for each bit of the input data (e.g., K bits 402A-402D of the input data 402). In some examples, clock selection may proceed as follows: If T is the length of one cycle of the reference clock (e.g., a cycle starting at time t0 and ending at time t1), each of the N phase-shifted clock candidates 506A-506H is known to be phase-shifted by a different multiple of T / N relative to the reference clock, and therefore each of 506A-506H is known to have a rising edge at a different instant within a single cycle of the reference clock. That is, among the N phase-shifted clock candidates, the phase-shifted clock candidate with index i may have a rising edge at time t0 + i * ((t1 - t0 / N)). For example, if t0 is 10, t1 is 14, and N is 8, then the phase-shifted clock candidate with index 0 (e.g., corresponding to phase-shifted clock candidate 506A) may include a rising edge at time 10+0*((14-10) / 8)=10. Similarly, the phase-shifted clock candidate with index 1 (e.g., corresponding to phase-shifted clock candidate 506B) may include a rising edge at time 10+1*((14-10) / 8)=10.5, the phase-shifted clock candidate with index 2 may include a rising edge at time 10+2*((14-10) / 8)=11, and so on.

[0029] Using the knowledge that each of the N phase-shifted clock candidates may contain rising edges evenly spaced within a single cycle of the reference clock, it can be predicted that a half-cycle data pulse (e.g., data pulse 504, which may be delivered along bus 150A as a bit of data input 402) will be captured by N / 2 phase-shifted clock candidates. That is, when a half-cycle data pulse is presented to N latches (each latch gated by a respective one of the N phase-shifted clock candidates), half of the N latches (those whose gates transitioned from low to high while the data pulse was high) will produce a logic 1 at their respective outputs. Furthermore, if the phase-shifted clock candidates are ordered (i.e., each in a series of phase-shifted clock candidates features a longer phase shift than the phase-shifted clock candidate preceding it), the half-cycle data pulse may be captured by adjacent groups of phase-shifted clock candidates. 5 shows data pulse 504 transitioning from low to high at time t0 and transitioning from high to low at a midpoint between time t0 and time t1 (from which point data pulse 504 remains low). In this example, data pulse 504 is captured by four of the eight phase-shifted clock candidates (e.g., phase-shifted clock candidate 506A-phase-shifted clock candidate 506D, which correspond to the four phase-shifted clock candidates that transition from low to high while data pulse 504 is high).

[0030] From the set of phase-shifted clock candidates that capture the half-cycle data pulse 504, a preferred phase-shifted clock candidate can be selected as the lane clock. It may be desirable for the lane clock to capture the data after the data arrives and stabilizes (i.e., after transients have settled and the data has entered a sufficiently stable state in the receiving block (e.g., 112) so that the data is guaranteed to be valid). Furthermore, it may be desirable for the lane clock to capture the data at a significant temporal distance from either the rising or falling edge of the data to increase immunity to intra-chip variation (OCV), jitter, temperature drift, and other sources of variation in the data or clock signals. Various metrics may be used to identify a preferred phase-shifted clock candidate from the set of phase-shifted clock candidates, and consequently select the lane clock, according to their exemplary criteria. In some embodiments, the lane clock may be selected to be the phase-shifted clock candidate whose rising edge is closest to the middle of the reference clock cycle (i.e., the phase-shifted clock candidate whose phase shift relative to the reference clock is closest to 180 degrees). This may be because during normal device operation, data arrives gradually corresponding to full cycles of the reference clock, and therefore the phase-shifted clock candidate whose rising edge is closest to the middle of the reference clock may be the one that best ensures data stability. In some embodiments, the lane clock may be selected to be the last phase-shifted clock candidate of a group of phase-shifted clock candidates that capture a half-cycle data pulse (i.e., the last phase-shifted clock candidate before the midpoint of the reference clock cycle). In some embodiments, the lane clock may be selected to be the first phase-shifted clock candidate following a group of phase-shifted clock candidates that capture a half-cycle data pulse (i.e., the first phase-shifted clock candidate after the midpoint of the reference clock cycle).In some embodiments, the lane clock may be chosen to be any one of the phase-shifted clock candidates from a group of phase-shifted clock candidates that captures the data pulse.

[0031] The number N of phase-shifted clock candidates can affect the accuracy of the lane clock. The larger the value of N, the smaller the phase shift difference between two adjacent phase-shifted clock candidates, and the greater the likelihood that an ideal lane clock can be selected. However, increasing the number N of phase-shifted clock candidates generally increases the time and circuit complexity required to perform the lane clock calibration process. The desired value of N can be selected by the designer depending on the requirements of the specific device in the near future.

[0032] The lane clock selection process described above may be repeated (sequentially or in parallel) for two or more of the K data bits of the example data 402. By way of example, a half-cycle data pulse 504 may be provided on a path corresponding to each data bit (e.g., data bit 402A-data bit 402D) of the data 402, and for each bit, the best lane clock may be selected from N phase-shifted clock candidates. Because data transit times may vary slightly between data bits, some phase-shifted clock candidates may be better suited to particular data bits than others. Selecting individual lane clocks on a bit-by-bit basis and separately timing each data bit 402A-data bit 402D according to its respective lane clock facilitates proper ordering of the data bits entering the memory 410, as described above.

[0033] In addition to selecting one or more lane clocks, a read clock (e.g., 432) may be selected from one of the phase-shifted clock candidates 506A through 506H. Like the lane clocks described above, the selected read clock shares the frequency of the reference clock but differs in phase. The read clock in this example may correspond to the phase-shifted clock 130B described above with reference to FIG. 2, and, by way of example, all components in the phase-shifted clock domain 140B that receive data from the phase-shifted clock domain 140A may be synchronized to the selected read clock. To minimize the noise effects described above (which may be amplified by resonances caused by synchronizing a large portion of an electronic device to the same clock), a circuit designer may wish to select a read clock that is the phase-shifted clock candidate that differs most in phase from the device's other reference clocks and other phase-shifted clocks. This may help minimize, to the extent possible, the degree to which transistors switch states simultaneously. For example, in a device where many blocks of the device are synchronized to a reference clock, the read clock may be chosen to be a phase-shifted clock candidate with a half-cycle phase shift from the reference clock.

[0034] Similarly, in some examples, a write clock (e.g., 422) may be selected from one of phase-shifted clock candidates 506A through 506H. The write clock in this example may correspond to phase-shifted clock 130A described above with respect to FIG. 2, and, by way of example, all components of phase-shifted clock domain 140A that transmit data to phase-shifted clock domain 140B may be synchronized to the selected write clock. In some examples, the write clock may be selected according to a procedure similar to that described above with respect to the read clock. In some examples, the write clock may simply be a buffered version of the reference clock (e.g., 130), or in some cases, may be the reference clock itself.

[0035] Designers may wish to avoid, to the extent possible, choosing phase-shifted clocks that have the same phase shift as the phase shift of the reference clock or phase-shifted clock to which a significant portion of the device is synchronized. By properly allocating digital devices to phase-shifted clock domains, and by choosing phase-shifted clocks for those phase-shifted clock domains that are sufficiently different in phase, resonances (and the attendant noise) created by transistors switching in phase can be managed.

[0036] 6 illustrates an example process 600 for configuring a device (e.g., device 100 described above) to transmit data between a transmit block associated with a first phase-shifted clock domain (e.g., 140A) and a receive block associated with a second phase-shifted clock domain (e.g., 140B). In the example process shown, the stages on the left side of the diagram may correspond to steps performed by a “master” transmit block (e.g., by asynchronous transfer module 310A described above), and the stages on the right side of the diagram may correspond to steps performed by a “slave” receive module (e.g., by asynchronous receive module 312A described above). However, other suitable configurations are possible, and various steps of the example process may be performed by the transmit block, the receive block, circuitry separate from the transmit and receive blocks, or any suitable combination of the above.

[0037] At stage 610, the master block may send an initialization signal over all data buses and all control buses to initialize the phase-shifted clock selection and data transmission process. For example, this initialization signal may be a logic 0 on all data buses and all control buses. At stage 612, the master block may send a test pulse (e.g., a two-clock cycle pulse) that causes all latches in the slave blocks (e.g., 614) to reset.

[0038] At stage 616, the slave block may enter the lane clock selection phase described above, in which the DLL may generate the desired number of phase-shifted clock candidates as described above, and the phase-shifted clock candidates may be provided as clock inputs to the respective latches as described above. At stage 618, the master block may send a half-cycle data test pulse to the latch, followed by a logic low as described above for signal 504 (stage 620). The master block then waits for a ready signal from the slave (stage 622). Meanwhile, at stage 624, the slave block's latch samples the data test pulse as described above. At stage 626, the slave block may select a preferred lane clock for each data bit as described above. Once the lane clock is selected, a read clock (e.g., corresponding to phase-shifted clock 130B) is selected as described above (stage 628). (In some examples, a write clock, such as one that may correspond to phase-shifted clock 130A, may also be selected as described above.)

[0039] After the lane clock and read clock have been selected, the slave block may send a ready signal to the master block (stage 630) indicating that the clock has been selected and data transfer should begin. The read pointer (stage 632) and write pointer (stage 634) for memory 410, as shown above with respect to FIG. 4, may be initialized at this stage. To avoid potential race conditions that could compromise memory data integrity, it may be desirable for the read and write pointers to be initialized to values ​​that are offset from one another. Following the initialization of the read and write pointers, data transmission may begin at the master block (stage 636) and data reception may begin at the slave block (stage 638), as described above.

[0040] Some embodiments disclosed herein are directed to an electronic device comprising: a first clock configured to operate at a frequency; first circuitry configured to synchronize with the first clock; a second circuitry configured to determine a second clock based on the first clock; a second clock configured to operate at the frequency of the first clock and with a phase shift relative to the first clock; and a third circuitry configured to synchronize with the second clock. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, determining the second clock comprises generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at the frequency of the first clock and with a respective phase shift relative to the first clock, and selecting a second clock from the plurality of clock candidates. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to be the clock candidate of the plurality of clock candidates having a respective phase shift closest to 180 degrees. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to reduce transistor resonance of the electronic device. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the electronic device is an ASIC, the first circuit configuration corresponds to a first functional block of the ASIC, the second circuit configuration comprises a delay-locked loop, and the third circuit configuration corresponds to a second functional block of the ASIC. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the electronic device further comprises a memory, the electronic device configured to perform data write operations to the memory (synchronized to the first clock), and the electronic device further configured to perform data read operations to the memory (synchronized to the second clock).In addition to or in the alternative to one or more of the embodiments disclosed herein, in some embodiments, the first circuitry is further configured to transmit data to the third circuitry. In addition to or instead of one or more of the embodiments disclosed herein, in some embodiments, the electronic device further comprises a data bus (comprising one or more wires including the first wire) electronically coupled to the first circuit configuration and the third circuit configuration, the first circuit configuration further configured to transmit data to the third circuit configuration via the data bus; the electronic device comprises one or more latches including a first latch (configured to receive data via the first wire and further configured to synchronize with a third clock determined based on the first clock); determining the third clock based on the first clock comprises generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at the frequency of the first clock and further configured to operate with a respective phase shift relative to the first clock; and selecting the third clock from the plurality of clock candidates, the third clock being selected from the plurality of clock candidates based on a latency between the first circuit configuration transmitting the data and the first latch receiving the data. In addition to or instead of one or more of the embodiments disclosed herein, in some embodiments, each latch of the one or more latches corresponds to a respective wire of the one or more wires and is configured to receive data via the respective wire, and each latch of the one or more latches is configured to synchronize with a respective clock selected from a plurality of clock candidates, the respective clock selected from the plurality of clock candidates based on a latency between a first circuit configuration that transmits the data and its respective latch that receives the data.

[0041] Some embodiments disclosed herein are directed to a method in an electronic device comprising a first circuit configuration, a second circuit configuration, and a third circuit configuration, comprising: synchronizing the first circuit configuration with a first clock operating at a frequency; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and with a phase shift relative to the first clock; and synchronizing the third circuit configuration with the second clock. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, determining the second clock comprises generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates operating at the frequency of the first clock and with a respective phase shift relative to the first clock, and selecting a second clock from the plurality of clock candidates. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to be the clock candidate of the plurality of clock candidates having a respective phase shift closest to 180 degrees. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the second clock is selected to reduce transistor resonance of the electronic device. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the first circuitry corresponds to a first functional block of an ASIC, the second circuitry comprises a delay-locked loop, and the third circuitry corresponds to a second functional block of the ASIC. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the method further comprises performing a data write operation to a memory of the electronic device in accordance with transitions of the first clock and performing a data read operation to the memory in accordance with transitions of the second clock. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the method further comprises transmitting data from the first circuitry to the third circuitry.

[0042] Some embodiments disclosed herein are directed to a method of transmitting data, the method including: synchronizing a first circuitry with a first clock operating at a frequency, the first clock associated with a first clock domain; determining a second clock based on the first clock, the second clock operating at the frequency of the first clock and with a phase shift relative to the first clock, the second clock associated with a second clock domain; and synchronizing the second circuitry with the second clock, the second circuitry receiving data from the first circuitry via one or more latches electronically coupled to a data bus. the data bus comprises one or more wires including a first wire, and the one or more latches include a first latch configured to receive data via the first wire; generating a plurality of clock candidates, each clock candidate of the plurality of clock candidates configured to operate at a frequency of the first clock and further configured to operate with a respective phase shift relative to the first clock; synchronizing the first latch with a third clock selected from the plurality of clock candidates; and transmitting data from the first circuitry to the second circuitry via the data bus and the first latch. Additionally or alternatively to one or more of the embodiments disclosed herein, in some embodiments, the third clock is selected from the plurality of clock candidates based on a latency between the first circuitry transmitting the data and the first latch receiving the data. In addition to or instead of one or more of the embodiments disclosed herein, in some embodiments, each latch of the one or more latches corresponds to a respective wire of the one or more wires and is configured to receive data via the respective wire, and the method further comprises, for each latch of the one or more latches, selecting a respective clock from a plurality of clock candidates based on a latency between the latch and a first circuit configuration that transmits the data, and synchronizing the latch to the respective clock.

[0043] Although the disclosed embodiments have been fully described with reference to the accompanying drawings, it should be noted that various changes and modifications will be apparent to those skilled in the art. For example, elements in one or more implementations may be combined, deleted, modified, or added to form further implementations. Such changes and modifications are understood to be included within the scope of the disclosed embodiments as defined by the appended claims.

Claims

1. An electronic device, the electronic device comprises a circuit configuration; The circuit configuration is receiving a first clock, the first clock configured to operate at a frequency; receiving a second clock and a third clock; and the second clock is configured to operate at the frequency of the first clock, the second clock being further configured to operate with a first phase shift relative to the first clock; the third clock is configured to operate at the frequency of the first clock, the third clock being further configured to operate with a second phase shift relative to the first clock; each of the second clock and the third clock is associated with a respective clock candidate selected from a plurality of clock candidates; each clock candidate of the plurality of clock candidates is associated with a respective phase shift relative to the first clock; selecting the respective clock candidate associated with the second clock from the plurality of clock candidates includes comparing a first respective phase shift with a transition edge of the first clock for a first data bit of a plurality of data bits; selecting the respective clock candidate associated with the third clock from the plurality of clock candidates includes comparing a second respective phase shift with a transition edge of the first clock for a second data bit of the plurality of data bits.

2. An electronic device as described in claim 1, wherein each clock candidate of the plurality of clock candidates is configured to operate at the frequency of the first clock.

3. The electronic device described in claim 1, wherein the second clock is associated with a phase shift of 180 degrees.

4. The electronic device described in claim 1, wherein the circuit configuration is configured to synchronize with the first clock.

5. An electronic device as described in claim 1, wherein one or more of the respective clock candidates are selected to reduce noise in the electronic device.

6. The electronic device described in claim 5, wherein the noise is associated with transistor resonance.

7. The electronic device further comprising: a memory; the electronic device is configured to perform a data write operation on the memory, the data write operation being synchronized with the first clock; The electronic device of claim 1 , wherein the electronic device is further configured to perform a data read operation on the memory, the data read operation being synchronized with the second clock.

8. The electronic device further comprising a data bus, the data bus electronically coupled to the circuitry and to a second circuitry of the electronic device; 10. The electronic device of claim 1, wherein the circuitry is further configured to transmit data to the second circuitry via the data bus, the second circuitry being configured to synchronize with the second clock.

9. The electronic device comprising one or more latches; Each latch of the one or more latches receiving data from the circuitry; synchronizing with each clock selected from the plurality of clock candidates based on the latency between the latch and the circuitry; The electronic device of claim 1 configured to:

10. The method of claim 1, wherein the first clock is associated with a first portion of the circuitry; the second clock is associated with a second portion of the circuitry; the third clock is associated with a third portion of the circuitry; the first portion of the circuitry is different from the second portion of the circuitry and is further different from the third portion of the circuitry; The electronic device of claim 1 , wherein the second portion of the circuitry is different from the third portion of the circuitry.

11. A method, comprising: receiving a first clock in an electronic device, the first clock operating at a frequency; receiving a second clock and a third clock at the electronic device; Including, the second clock operates at the frequency of the first clock, the second clock operating with a first phase shift relative to the first clock; the third clock operates at the frequency of the first clock, the third clock operating with a second phase shift relative to the first clock; each of the second clock and the third clock is associated with a respective clock candidate selected from a plurality of clock candidates; each clock candidate of the plurality of clock candidates is associated with a respective phase shift relative to the first clock; selecting the respective clock candidate associated with the second clock from the plurality of clock candidates includes comparing a first respective phase shift with a transition edge of the first clock for a first data bit of a plurality of data bits; selecting the respective clock candidate associated with the third clock from the plurality of clock candidates includes comparing a second respective phase shift with a transition edge of the first clock for a second data bit of the plurality of data bits.

12. The method of claim 11, wherein each clock candidate of the plurality of clock candidates operates at the frequency of the first clock.

13. The method of claim 11, wherein the second clock is associated with a 180 degree phase shift.

14. The method of claim 11, further comprising synchronizing circuit configuration of the electronic device with the first clock.

15. The method of claim 11, wherein one or more of the respective clock candidates are selected to reduce noise in the electronic device.

16. The method of claim 15, wherein the noise is associated with transistor resonance.

17. The method comprising: performing a data write operation to a memory of the electronic device, the data write operation being synchronized with the first clock; performing a data read operation on the memory, the data read operation being synchronized with the second clock; The method of claim 11 further comprising:

18. The method comprising: receiving data via a latch; synchronizing with each clock selected from the plurality of clock candidates based on a latency between the latch and circuitry of the electronic device; The method of claim 11 further comprising:

19. The method of claim 18, wherein the first clock is associated with a first portion of circuitry; the second clock is associated with a second portion of the circuitry; the third clock is associated with a third portion of the circuitry; the first portion of the circuitry is different from the second portion of the circuitry and is further different from the third portion of the circuitry; The method of claim 11 , wherein the second portion of the circuitry is different from the third portion of the circuitry.

20. A non-transitory computer-readable medium storing instructions, comprising: The instructions, when executed by one or more processors, cause the one or more processors to perform a method; The method comprises: receiving a first clock in an electronic device, the first clock operating at a frequency; receiving a second clock and a third clock at the electronic device; Including, the second clock operates at the frequency of the first clock, the second clock operating with a first phase shift relative to the first clock; the third clock operates at the frequency of the first clock, the third clock operating with a second phase shift relative to the first clock; each of the second clock and the third clock is associated with a respective clock candidate selected from a plurality of clock candidates; each clock candidate of the plurality of clock candidates is associated with a respective phase shift relative to the first clock; selecting the respective clock candidate associated with the second clock from the plurality of clock candidates includes comparing a first respective phase shift with a transition edge of the first clock for a first data bit of a plurality of data bits; a first clock candidate associated with the third clock from the plurality of clock candidates, the first clock candidate being associated with the third clock; and a second clock candidate associated with the third clock from the plurality of clock candidates comprising: comparing a second respective phase shift with a transition edge of the first clock for a second data bit of the plurality of data bits.

Citation Information

Patent Citations

  • Semiconductor integrated circuit

    JP2006332919A

  • Phase synchronization circuit and control method of the same, communication device

    JP2010045458A

  • EMI-preventive circuit

    JP2015015540A