A low-latency signaling link retimer generates an output signal transmission synchronously with respect to a core clock signal alternately selected from two or more plesiochronous or mesochronous clock sources with switchover between or among the core-clock sources executed without shrinking, extending or otherwise disrupting the edge-to-edge core clock period or clock duty cycle.

DRAWINGS

The various embodiments disclosed herein are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:

FIG. 1illustrates an embodiment of a synchronous signaling system having a seamless-clock-switchover (SCS) retimer coupled between upstream and downstream components via respective signaling links;

FIG. 2illustrates a seamless clock-source switchover from a stream-embedded clock to a locally generated clock;

FIG. 3illustrates an embodiment of a clock switch that may be deployed within the clock engines ofFIGS. 1 and 2;

FIG. 4illustrates an embodiment of a phase-alignment detector that may be deployed within the clock switch ofFIG. 3;

FIG. 5illustrates an embodiment of a phase adjust circuit that may be deployed within the clock switch ofFIG. 3;

FIG. 6illustrates an exemplary clock switchover operation implemented by the switch controller ofFIG. 3; and

FIG. 7illustrates an alternative embodiment of a clock switch for application in a retimer in which a relatively low frequency local clock is distributed throughout the retimer architecture and multiplied to internal symbol-rate frequency.

DETAILED DESCRIPTION

In various embodiments herein, content-processing circuitry and transmit circuitry within a low-latency signaling link retimer are timed (clocked) by a core clock signal alternately selected from two or more plesiochronous or mesochronous clock sources with switchover between or among the core-clock sources executed without shrinking, extending or otherwise significantly disrupting the edge-to-edge core clock period or clock duty cycle—referred to herein as seamless clock switchover. In a number of embodiments, one of the two clock sources is a receive clock (CKRX) recovered from an inbound symbol stream and subject to occasional drop-out (i.e., when no traffic), while the other is a local clock (CKloc) generated by a free-running clock source within or coupled to the retimer. In contrast to conventional retimer architectures in which the receive clock and local clock are dedicated to mission mode data reception and transmission, respectively, low-latency retimer embodiments herein apply the receive clock throughout the mission-mode symbol progression path, from input receiver to output transmitter, thus avoiding the substantial latency penalty otherwise incurred in the domain crossing between the receive and local clock domains. Prior to or as part of retimer transition from mission mode (i.e., “forwarding mode” as the retimer forwards a received symbol stream with or without content modification to a downstream or upstream destination), a clock switchover circuit referred to herein as a clock engine seamlessly switches the core clock source from the receive clock to the local clock at a point of alignment between receive clock and local clock edges such that successive edges within the core clock are contributed by each of the two source clocks and the core clock period through switchover falls non-disruptively/seamlessly between the periods of the two clock sources. In a number of embodiments, the clock engine speeds convergence to the point of receive-clock/local-clock alignment by searching for and identifying a phase-shifted instance of the clock source to be switched to (the “next clock”) and switching the core-clock source from the currently selected clock source (the “current clock”) to the phase-shifted instance of the next clock. After clock switchover, the phase offset between the phase-shifted instance of the now-current clock and its unshifted source clock (e.g., CKlocor CKRX) is incrementally/iteratively reduced to zero to minimize core clock jitter. In yet other embodiments, the local clock is distributed throughout the retimer die at a frequency substantially lower than the symbol stream propagation rate, and clock switchover is executed by generating multiple frequency-divided phases of the receive clock, identifying frequency-divided receive-clock phases that bound (precede and succeed) the local clock phase and executing the clock switchover with respect to the local clock and bounding frequency-divided receive-clock phases.

FIG. 1illustrates an embodiment of a synchronous signaling system100having a seamless-clock-switchover (SCS) retimer101coupled between upstream and downstream components103,105, via respective signaling links102and104. Retimer101extends the viable signaling path length between the upstream and downstream components by applying timing information and digital data recovered from an inbound symbol stream (sourced by either of components103,105and destined for the other) to produce an enhanced-integrity outbound symbol stream (with occasional content modification)—overall, permitting the upstream and downstream components to communicate reliably (e.g., meeting specified bit error rate) over otherwise impracticable distances.

For purposes of example and clarity of explanation, signaling links102,104and driver/receiver ports within retimer101, upstream component103, and downstream component105(i.e., downstream port of component103, upstream port of component105and upstream/downstream pseudo ports of retimer101, as shown) are assumed to implement a Peripheral Component Interconnect Express (PCIe) communication specification and thus described in the terminology of that specification. Accordingly, upstream component103may be a root complex or switch and the downstream component105may be an endpoint or switch, and the signaling link coupled between a given pair of components (i.e., upstream component and retimer or downstream component and retimer) may be implemented by 1 to N lanes (e.g., 1, 2, 4, 8, 12, 16, 32, etc.) with each lane including a dedicated differential signaling pair for each signaling direction—an arrangement generally shown at107.

Symbols conveyed in respective unit intervals on a given lane (i.e., duration of a valid symbol at a given point on a differential conductor pair) are assumed to be bits so that each unit interval (UI) is a bit time (tbit). Further, information is scrambled and (in some cases) precoded prior to transmission (i.e., encoded for spectral diversity and/or other signal integrity purposes) into 130-bit logical blocks that correspond to 128 bits of raw content (i.e.,128b/130bencoding scheme) and two bits of block encoding. Each logical block (“block” for short) conveys either physical-layer control information—so-called “ordered-set” blocks—or payload information (including control information for higher PCIe protocol layers) in “data” blocks. Unless otherwise stated or clear from context, references herein to data streams (or block streams or bit streams or symbol streams) should be understood to include serial streams of order-set blocks (“ordered-sets”) and/or data blocks, and references to “data” should be likewise be understood to include control information (i.e., contents of ordered-set blocks) and/or payload information. For ease of understanding, link (or interconnect) operation is occasionally described below in the context of a single lane—in all cases the link may include multiple lanes each conveying respective serial block streams in. In the high-speed, embedded-clock, scrambled and precoded signaling contemplated herein (e.g., 32 giga-transfers per second (32 GT/s) with, for example, one single-bit symbol transfer per edge of a 16 GHz transmit clock or one two-bit symbol transfer (e.g., 4-PAM) per edge of an 8 GHz transmit clock) each of the system components (101,103,105) generally includes receive/transmit equalization circuitry, lane-to-lane skew compensation circuitry, clock/data recovery (CDR) circuitry, clock-domain crossing circuitry, data scrambling and descrambling circuitry and data precoding/decoding circuitry. In all embodiments, these various circuit elements may be supplemented by others and/or omitted (e.g., lane deskew circuitry omitted or disabled in a single-lane signaling system), faster or slower transfer rates may apply, other logical data organization and/or physical signaling line configuration may apply, 4-level pulse amplitude modulation (4-PAM) symbols (two-bits per symbol) or other multiple-bit symbols may be conveyed on each or any lane per UI, and more generally, physical signaling and signaling protocols according to specifications other than PCIe may be implemented. Also, while block precoding is shown and described with respect to theFIG. 1embodiment and those discussed below, precoding (and corresponding decoding) may be disabled or omitted altogether in all cases. Though a single link retimer is shown between components103and105, one or more additional retimers (and/or re-drivers or other reach-extension devices) may be deployed to further extend the practicable signaling distance between components103and105. In such cases, the component downstream and/or upstream from SCS link retimer101may be another link retimer.

Referring to detail view115of lane0within an N-lane retimer, the symbol-stream forwarding path in each direction includes a receiver121, domain-cross element123, content processing pipeline125and transmitter127, all of which operate synchronously with respect to one of two clock signals—a receive clock recovered from (and used to sample) the inbound symbol stream or a local clock generated by a retimer-resident clock generator129(which may itself receive a reference clock from an off-die or on-die oscillator). More specifically, a clock engine131receives both the local clock and receive clock signals and, based on retimer state and programmed information indicative of local clock/receive clock timing relationship (i.e., mesochronous signal, “mes,” from programmable register131), alternately selects either the receive clock (CKRX) or the local clock (CKloc) to clock circuitry within the core symbol propagation path from the point of domain-crossing unload forward (i.e., unloading a drift buffer within domain-crossing element123, clocking content processing pipeline125and clocking transmitter127) and thus constitute a core clock signal, CKC.

Continuing withFIG. 1and referring to the detail view140of the downstream symbol forwarding path of lane0, receiver121includes a synchronous signal receiver/sampler151, clock-data-recovery circuit (CDR)153, deserializer155and clock divider157. In one embodiment, symbols (assumed to be bits for simplicity) arrive and are sampled within signal receiver151at 32 GT/s (32 giga-transfers per second) in response to rising and falling edges of a 16 GHz serial receive clock (SCKRX) embedded in the symbol stream (and extracted along with data samples via CDR153). Deserializer155deserializes the 32 GT/s symbol stream (“Sym”) in response to edges of the serial receive clock to produce a 1 GHz stream of 32-bit symbols (or 64-bit symbols in the case of PAM-4 symbol reception within receiver/sampler151) that are accompanied by a frequency-divided 1 GHz receive clock, CKRX(i.e., frequency divider157performs ×16 clock division in the depicted example). The receive clock is supplied to clock switchover engine161(“clock engine”) and to the load timing input of a drift buffer165within domain-cross element123. The clock engine—which also receives a 1 GHz instance of the locally generated clock, CKloc, the configuration signal indicating whether the CKlocand CKRXare mesochronous (e.g., mes=1) or plesiochronous (mes=0), and other retimer mode information discussed below—outputs either the local clock or the receive clock as the core clock CKCwhich times all synchronous components beyond domain-cross element123, including any necessary domain-cross circuit unloading (e.g., unloading symbols loaded into drift buffer165in response to CKRX), content processing pipeline125and a signal transmitter171within transmitter block127. Though not specifically shown, signal transmitter171includes serializing circuitry to reverse the symbol-parallelizing operation of deserializer155and a clock multiplying circuit (e.g., multiplying phase-locked-loop, PLL) to multiply the core clock frequency (e.g., from 1 GHz to a 16 GHz) as necessary to serialize and transmit symbols and the link symbol rate.

Referring to detail view175, SCS retimer101generally operates in one of two modes: forwarding mode in which a received symbol stream (or block stream) is forwarded/re-transmitted (and hence referred to as a forwarded stream180) via transmitter171after occasional content inspection/modification within content processing pipeline125; and an execution mode in which the retimer outputs a self-generated or synthesized symbol stream/block stream182instead of the received stream. In the embodiment shown, content processing pipeline includes circuitry185to generate the synthesized stream and switching circuitry (shown conceptually at187) to select between the forwarded and synthesized streams/paths according to retimer mode—operations carried out in response to timing edges supplied by the core clock signal. As the inbound symbol flow occasionally ceases during execution mode (a “link down” event that constitutes at least one motivator for transition to execution mode), the receive clock recovered from the inbound symbol stream also goes down (i.e., ceases to toggle or “flat lines”). In view of this occasional clock loss, conventional retimers apply the local clock exclusively to clock retimer core circuitry and output transmitter, generally employing a relatively deep (and therefore high latency) first-in-first-out (FIFO) buffer to ensure viable clock domain crossing across all permissible clocking conditions. In SCS retimer101, by contrast, domain-cross buffering is obviated entirely in the case of plesiochronous receive and local clock instances (i.e., clocks having a frequency delta up to a tolerable maximum), with the receive clock, CKRX, being applied as the forwarding-mode core clock and thus as the sole synchronous timing reference from receiver to transmitter. That is, there is no forwarding-mode clock domain crossing so that the symbol stream is output from deserializer155(where it has been parallelized within the receive clock domain) directly to the content processing pipeline125(via multiplexer167as the mesochronous configuration signal will be deasserted in the case of plesiochronous receive/local clocks), dramatically reducing input-to-output latency within retimer101relative to conventional “elastic FIFO domain-cross” architectures. When transition from forwarding mode to execution mode is imminent (and after which CKRXmay flat line at any time), clock engine161searches for and detects an alignment between respective edges of CKRXand CKloc, switching the core-clock source from CKRXto CKlocprior to the subsequent edges in either of those clocks so that the core clock exhibits no disruption—i.e., no extended or shortened low or high pulse, and such that the time between the final edge in the former clock source and the initial edge in the newly selected clock source is a blend of (and falls between) the time between any two edges within either clock source.FIG. 2illustrates this seamless switchover technique graphically showing switchover of the core clock source from CKRXto CKlocat201, just prior to retimer transition from forwarding mode to execution mode, and then another core-clock switch (from CKlocto CKRX) at203, just prior to the reverse transition from execution mode to forwarding mode. Referring to edge-to-edge time periods t1, t2and t3as depicted inFIG. 2, t3will fall between t1and t2with either (i) t1<t3<t2or (ii) t2<t3<t1, will be true depending on which of CKRXand CKloc is the higher frequency clock.

As can be understood from theFIG. 2clock switchover example, the slower the beat frequency between the CKRXand CKloc(i.e., the smaller the difference in their frequencies), the longer it will take for the clocks to drift into alignment, and, in the infinite-limit same-frequency/different-phase case (i.e., mesochronous clocks), the clocks will never align. In one embodiment, an architecturally-dictated mesochronous relationship between the receive clock and local clock is communicated to the host retimer by another system component—for example, in the form of an instruction to program the mesochronous field within register131ofFIG. 1with a value indicating the mesochronous relationship. In that case, clock switchover engine may operate in a static mode, selecting the local clock exclusively as the core clock (e.g., via multiplexer211as shown within clock switchover engine210ofFIG. 2) regardless of retimer mode. As the clock phase difference between mesochronous clocks can generally be crossed with a shallow “drift-buffer” as shown at167ofFIG. 1(e.g., a few register stages), the retimer effectively operates in a single clock domain with phase offset between receiver and downstream circuitry bridged by the drift buffer.

When configured for plesiochronous rather than mesochronous clocking (i.e., mes=0), clock switch215within theFIG. 2clock engine embodiment detects the alignment condition shown at201and203and responsively executes the switchover. As discussed in further detail below, where the beat frequency between the two source clocks (CKRX, CKloc) is so low as to yield an unsuitably long alignment delay—that is, the time required for the two clocks to drift into alignment exceeds a predetermined convergence interval (as measured, for example, in counted core clock cycles), clock switch215performs an active search for a phase alignment by iteratively adjusting the phase of one source clock relative to the other until an edge crossing is detected and then executing the switchover with respect to the phase-adjusted clock.

FIG. 3illustrates an embodiment of a clock switch240that may be deployed within the clock engines ofFIGS. 1 and 2. As shown, clock switch240includes a next-clock/current-clock multiplexer241(“input multiplexer”), a phase-adjuster243, alignment detector245, switch controller247, output multiplexer249and optional phase-locked loop251. Input multiplexer241responds to a select-next signal (selnxt) from switch controller247by selecting one of the two source clocks—CKRXand CKloc—to be the “current clock,” CKcur, and the other to be the “next clock,” CKnxt. Except during a “back-out” operation discussed below, switch controller247lowers seladjso that the current clock is output, via output multiplexer249and optional PLL251, as CKout; the output clock that, during non-mesochronous clocking configuration (mes=0), is output from the host clock engine (e.g., via multiplexer211ofFIG. 2) as the retimer core clock. As shown, CKnxtis supplied to phase adjuster243which, in turn, outputs a search clock, CKϕ, having a phase offset relative to CKnxtaccording to a phase-select value, ϕsel.

When a search signal (“search”) is asserted (i.e., one of the external “ext” signals shown within clock engine210ofFIG. 2), switch controller247issues a reset signal to alignment detector245to trigger a search for edge alignment (or edge convergence) between the next clock and the current clock. In one embodiment, switch controller also resets ϕselto clear any phase-offset within the phase-adjuster243so that the search clock (CKϕ) and next clock have the same phase (and may be the same clock, electrically speaking). In a “drift-convergence” scenario where the current and next clocks drift into alignment within a time interval shorter than a programmed or hard-wired convergence threshold (which, in the case of programming, may be established by training), alignment detector245will assert an align-detect signal (AlignDet) to signal the alignment and switch controller will responsively toggle selnxt(e.g., a quarter clock cycle after the alignment event and thus approximately midway between two clock edges in either source clock) to reverse the roles of the two source clocks, making the former “next clock” the current clock and thus the source of the retimer core clock, and making the former “current clock” the next clock in a later-executed clock-switchover.

Upon transition between the two plesiochronous source clocks a slight, but abrupt change in output clock period (clock frequency) will occur. In one embodiment, PLL251may be a unity-multiply component (same input and output clock frequency) provided for purposes of smoothing the frequency change in the output clock. That is, the PLL bandwidth may be set low enough that the PLL loop filter effectively spreads the frequency change over several (or numerous) output clock cycles as the loop filter charges or discharges in accordance with the source-clock frequency difference. In other embodiments, particularly where downstream multiplying PLLs are present for other purposes (and similarly have bandwidths that provide sufficient filtering) or where retimer circuitry clocked by the core clock is impervious to minor abrupt frequency changes, PLL251may be omitted.

Still referring toFIG. 3, when the current and next clocks do not drift into alignment within the interval specified by the convergence threshold (i.e., align-detect signal not asserted within the convergence interval), switch controller247commences an assisted convergence search by iteratively adjusting the phase-select value, ϕsel—for example, incrementally advancing ϕseluntil alignment detector signals a phase alignment between the search clock (CKϕ) and output clock. At that point, switch controller asserts seladjto select the CKϕ(i.e., phase offset version of CKnxt) to source the output clock (and thus the core clock).

FIG. 4illustrates an embodiment of a phase-alignment detector270that may be used to implement alignment detector245ofFIG. 3. In the embodiment shown, the search clock (CKϕ) is supplied to the data input of a first flop stage275in a daisy-chained set of flop stages (i.e., output of flop stage275coupled to input of flop stage277; output of flop stage277coupled to input of flop stage279), with all stages in the chain edge-triggered by the output clock (CKout). By this arrangement, the search clock state is sampled by the output clock (i.e., high/low level of search clock captured within flop stage275in response to transition of output clock) and ripples through the sequence of flop stages277,279in successive output clock cycles. Accordingly, any change in search clock state from one sampling edge of output clock to the next—for example as shown in timing diagram290at295—will ripple through the flop stages (i.e., falling edges301,303,305) and produce, by virtue of the one cycle delay between the outputs of flop stages277and279, a single-clock-cycle “alignment” pulse (“A”) at the output of XOR gate281. At the next sampling edge of the output clock (rising edge in this example), the asserted alignment pulse will be clocked into flop stage285(i.e., passing through OR gate283) to produce an align-detect signal assertion, latching that signal assertion (by virtue of feedback via OR gate283) until the switch controller issues a reset signal (e.g., to commence a new search).

In one embodiment, theFIG. 4phase alignment detector270includes circuitry to determine whether the sample-to-sample state change that yielded the alignment detection is a drift-induced transition from low to high (sampling low on one CKoutedge and then sampling high on the next) or from high to low—“drift transition” information that, when combined with the drift direction indicates whether the detected clock alignment is between rising edges of CKoutand CKϕor between rising and falling edges of CKoutand CKϕ, respectively. In the depicted example, AND gate287produces a logic high or low output pre-transition sample-level signal (L) according to the state of nclk3when the output of XOR gate281goes high. The pre-transition sample-level signal passes through OR gate289(i.e., OR gate outputs high or low according to whether L is high or low, respectively) to be captured within flop stage291concurrently with assertion of the alignment detection signal (output of flop285), latching a logic ‘1’ drift-transition output (DrftTrx=1, meaning a high state of CKϕwas sampled followed by a low state of CKϕ) via OR gate289and latching a logic ‘0’ drift-transition(DrftTrx=0, meaning a low-state of CKϕwas sampled followed by a high state) output by virtue of the deassertion of signal A at least over an interval of interest.

Referring toFIGS. 3 and 4, in one embodiment, alignment detector245(or270) outputs the drift-transition signal to the switch controller which also receives information (e.g., AlignDet−) that enables determination of the drift direction and thus whether the detected clock alignment is in-phase (rising-edges of CKnxtand CKoutaligned), or complementary (rising edge of CKoutaligned with falling-edge of CKnxt). In the case of in-phase alignment detected in a drift-convergence search, switch controller247operates as discussed above, transitioning selnxtto swap the roles of the current and next clocks. In the case of a complementary alignment detected in a drift-convergence search, switch controller247may take several alternative actions (which may be programmably specified and/or hard-wire designed) including, for example and without limitation: (i) issue a reset to the phase alignment detector to trigger a new drift-convergence search which should, absent error, yield an in-phase alignment at the next align-detect signal assertion, (ii) concurrently assert the selnxtsignal and a selinvsignal to select a complementary version of CKcur(i.e., inverted version of the former CKnxtthat yielded the complementary phase alignment) via multiplexer249, (iii) revise the phase-select value ϕselto institute a 180° phase delay through phase adjust circuit243(and thus advance CKϕby 180 degrees) and concurrently with that phase-shift or shortly thereafter assert seladjto select the now in-phase aligned instance of CKϕas CKout(followed by back-out operation as discussed below); (iv) revise the phase-select value to institute a CKϕphase shift somewhat short of 180 degrees, followed by assisted-convergence search and ensuing switchover/back-out operations as discussed below.

Continuing withFIGS. 3 and 4, switch controller247may obtain drift direction information (i.e., which of clocks CKnxtand CKcur is oscillating at higher frequency and thus the direction of edge-drift in one of those clocks relative to the other) from assertion of an alignment detection signal from another clock switch seeking alignment between CKoutand a phase-offset version of CKnxtor between CKnxtand a phase-offset version of CKout(as discussed below), from a quadrature sampler (e.g., sampling CKnxtwith four 90°-shifted versions of CKoutto enable a determination of drift direction by detecting instances of more than two ‘1’ or more than two ‘0’ samples), from an initialization-time determination of relative clock frequencies (which may be occasionally re-ascertained during system run-time) and recordation of corresponding drift information for use by switch controller247, and so forth.

FIG. 5illustrates an embodiment of a phase adjust circuit321that may be deployed as phase adjust circuit243ofFIG. 3. As shown, a set of N standard-cell buffers (e.g., each implemented by a series-coupled pair of inverters with the output of leading inverter coupled to input of trailing inverter) are coupled in series (daisy-chained) to produce, at the output of each buffer, a respective search clock that is phase-staggered relative to the clock phase at the input of the buffer by the buffer propagation delay. In the depicted embodiment, buffer chain is coupled in a delay locked loop323having a delay controller325that adjusts the supply voltages (VINV) to buffers321(i.e., thus adjusting the output slew rates/propagation delay of constituent inverters in a current-starved configuration) as necessary to produce alignment between the buffer chain input (CKnxt) and the output of the final buffer and thus establishing the propagation delay through each buffer at TCKnxt/N (where TCKnxtis the period or cycle time of CKnxt). Assuming a nominal CKnxt frequency of 1 GHz and a 100-buffer chain (i.e., N=100), then the search clock phase at each buffer output is phase staggered by 10 picoseconds (ps) relative to the prior search clock phase (i.e., tstepas shown in waveform diagram340is 10 ps).

Still referring toFIG. 5, the N search clock phases (including CKnxtitself as the 0thphase) are supplied to a multiplexing structure327that selects any one of the search clock phases according to the phase-select signal (ϕsel) from theFIG. 3switch controller247. In alternative embodiments, the conceptual single-stage 100-input multiplexer may be implemented by hierarchically coupled multiplexer stages and N may be any practicable value. Also, delay control circuit325(i.e., generating current-starved inverter control voltage, VINV) may be omitted in alternative embodiments so that the buffer chain implements an open loop delay line that produces a sufficient number of search clock phases to span the search interval of interest (e.g., spanning period of CKlocand/or CKRX).

Referring to bothFIGS. 3 and 5, after completing an assisted-convergence search (i.e., alignment detector245signals a phase alignment between a given search clock phase and output clock) and asserting seladjto select the ϕsel-selected search clock phase to source the output clock (CKout), the output clock will propagate through some number (M) of buffers321within the delay line (i.e.,FIG. 5buffer chain) and thus suffer cumulative jitter from each of those M buffers. In one embodiment, this jitter is eliminated by the aforementioned back-out operation. More specifically, after switching the output clock source over to the search clock (i.e., asserting seladjas discussed above), switch controller247iteratively lowers the phase-select value, delaying for a settling time after each phase step, until the unadjusted next clock is reached (i.e., ϕsel=0 in theFIG. 5phase adjuster implementation). The mux controls are generated in such a way as to not introduce a glitch at the mux output. At that point (ϕsel=0), next clock is sourcing the output clock so that the seladjand selnxtsignals may be simultaneously toggled (e.g., at a midpoint between CKnxtedges and thus in response to a quadrature instance (90-degree phase-shifted instance) of next clock which may be obtained, for example, from theFIG. 5buffer chain) to reverse the next clock and current clock selections within input multiplexer241and route the current clock through output multiplexer249to source CKOUT. In one embodiment, the phase step in each back-out iteration may be programmatically specified (e.g., 1 buffer per step, 2 buffers, 4 buffers, or any practicable number) in accordance with system configuration or run-time determined phase-step tolerance. Additionally or alternatively, the settling time between each backout iteration a (tsettle) may be programmatically established or run-time trained (e.g., resolving to step size determined not to destabilize or intolerably perturb downstream circuitry).

FIG. 6illustrates an exemplary clock switchover operation implemented by the switch controller ofFIG. 3(e.g., within a finite state machine, processor or other clocked control circuitry) in response to assertion of the search signal (i.e., instruction to commence a clock switchover as shown at361). Starting at 363, a search count value (“scnt”) is cleared in preparation for alignment/convergence search and then a reset is issued to the alignment detector at365to commence a drift-convergence alignment search. The align-detect signal is evaluated (367) in successive cycles of the output clock, triggering clock switchover and search termination (toggling selnxtat369, and optionally selecting a complement version of CKcuras discussed above) if alignment is detected. If align-detect remains deasserted after a given output clock cycle (i.e., negative determination at367), the search count is compared with a threshold at371(e.g., convergence threshold supplied to the switch controller as shown inFIG. 3) to determine whether the drift-convergence interval has elapsed. If not (i.e., search count less than threshold yielding negative determination at371), the search count is incremented at373and the drift-convergence search iterates for another output clock cycle.

Still referring toFIG. 6, if the drift-convergence interval transpires without alignment detection (affirmative determination at371), the switch controller commences an assisted-convergence search by incrementing the phase-select value at375and then checking for align-detect signal assertion at377, iteratively performing the phase select increment until either (i) the alignment detector asserts the align-detect signal (affirmative determination at377) or the phase-select value increments through the entire range without alignment detection. In the latter case (affirmative determination at379), an error is signaled (381) to host control circuitry within the retimer to enable remedial action and/or error-reporting to upstream and/or downstream link components. If the alignment is detected at377, the switch controller asserts seladjat383to effect clock source switchover from the current clock to the search clock (i.e., switching to phase-offset instance of CKnxt) and then commences the jitter-mitigating back-off operation discussed above. That is, the switch controller iteratively delays for a programmed or otherwise predetermined settling interval (tsettleas shown at385) and then decrements the phase-select value (387), continuing the back-off loop until the phase-select value has been decremented to zero. At this point (affirmative determination at389), the switch controller deasserts seladjand toggles selnxt—an operation that maintains the same output clock source, but through reversal of the next-clock/current-clock paths, thus making ready for a subsequent alignment search.

Still referring toFIG. 6, in a number of embodiments, phase offsets identified during assisted convergence search are recorded in a register for reapplication (e.g., as a search starting point) in subsequent clock switchover operations. Similarly, drift-direction information, clock inversion information (i.e., where inverted version of CKnxtis selected to drive CKoutand thus CKC) or any other information obtained in an assisted-convergence and/or drift-convergence search may be recorded and reapplied. In yet other embodiments, particularly where drift-direction information is known a priori (e.g., and recorded within the retimer), binary searching or other accelerated searching sequences (i.e., accelerated relative to the linear phase-alignment search discussed above) may be applied to reduce clock switchover time.

FIG. 7illustrates an alternative embodiment of a clock switch400for application in a retimer in which a relatively low frequency local clock is distributed throughout the retimer architecture and multiplied to internal symbol-rate frequency (the “core clock frequency”) where needed. In the specific example shown, a 100 MHz local clock and 1 GHz receive clock are supplied to clock switch400. A frequency divider401generates ten frequency-divided and phase-staggered instances of the receive clock—CKRX/10phases—each oscillating at 100 MHz (i.e., CKRXfrequency-divided by ten) and each offset from the preceding phase and succeeding phase by the 1 ns CKRXperiod (i.e., CKRX/10phases staggered by 1 ns and thus evenly distributed within the 10 ns period of a 100 MHz clock). The CKRX/10phases are sampled by the local clock within a boundary-phase locator403which, in turn, identifies two temporally-adjacent CKRX/10phases that bound (transition before and after) the local-clock sampling edge. In one embodiment, for instance, boundary-phase locator403produces five logical ‘1’ samples and five logical ‘0’ samples, with the neighboring samples that yield logic ‘1’ and logic ‘0’ samples corresponding to the CKRX/10phases that bound the local-clock edge. As shown, boundary-phase locator403outputs a select-boundary signal (selbnd) to select the local-clock-edge-bounding CKRX/10phases to be supplied to leading and trailing clock sub-switches407,409via multiplexer/selector405(the phases constituting a leading phase CKRX/10[i] and a trailing phase CKRX/10[i+1], where i+1 overflows to zero when i=9). In one embodiment, each of sub-switches407and409is implemented generally as shown and described with respect to clock switch240ofFIG. 3and operates as described in reference toFIGS. 3-6to yield a respective frequency-divided output clock (CKout+/10and CKout−/10) and alignment-detect signal (AlignDet+ and AlignDet−). In the embodiment shown, the alignment detect signal (e.g., generated by alignment detector unit270ofFIG. 4) from each of clock sub-switches407,409is supplied to the other, for example, to enable drift-direction determination and also to enable each sub-switch407,409to cease searching (and suppress alignment-detection signal assertion) if the other sub-switch is the first to detect phase alignment. The align-detect signals (one asserted, the other deasserted) are supplied to multiplexer411to pass the output clock from the alignment-detecting sub-switch to multiplying PLL415and thus produce an output clock at the 1 GHz core-clock frequency (the output clock to become the core clock as discussed above).

Referring toFIGS. 1-7generally, one or more programmed microcontrollers and/or dedicated hardware circuits (e.g., finite state machines, registered or combinational circuits, etc.) may be provided to implement all or part of the various architectural and functional elements within the SCS retimer embodiments presented herein. Additionally, any or all of those architectural/functional elements (including the entirety of the retimer architecture) may be described using computer aided design tools and expressed (or represented), as data and/or instructions embodied in various computer-readable media, in terms of their behavioral, register transfer, logic component, transistor, layout geometries, and/or other characteristics. Formats of files and other objects in which such circuit expressions may be implemented include, but are not limited to, formats supporting behavioral languages such as C, Verilog, and VHDL, formats supporting register level description languages like RTL, and formats supporting geometry description languages such as GDSII, GDSIII, GDSIV, CIF, MEBES and any other suitable formats and languages. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, computer storage media in various forms (e.g., optical, magnetic or semiconductor storage media).

In the foregoing description and in the accompanying drawings, specific terminology and drawing symbols have been set forth to provide a thorough understanding of the disclosed embodiments. In some instances, the terminology and symbols may imply specific details not required to practice those embodiments. For example, the various signaling rates and related frequencies, lane counts, block sizes, encoding/decoding schemes, clock frequencies, frequency-division/multiplication values, numbers of selectable clock phases, and so forth are provided for purposes of example only—higher/lower/alternative rates, frequencies, numbers of phases, frequency divisors/multipliers, lane counts, block sizes, encoding schemes etc. may be implemented in all cases. Similarly, signaling link parameters, protocols, configurations may be implemented in accordance with any practicable open or proprietary standard (PCIe being but one example) and any version of such standard. Links or other interconnection between integrated circuit devices or internal circuit elements or blocks may be shown as buses or as single signal lines. Each of the buses can alternatively be a single signal line (e.g., with digital or analog signals time-multiplexed thereon), and each of the single signal lines can alternatively be a bus. Signals and signaling links, however shown or described, can be single-ended or differential. Logic signals shown as having active-high assertion or “true” states, may have opposite assertion states in alternative implementations. A signal driving circuit is said to “output” a signal to a signal receiving circuit when the signal driving circuit asserts (or deasserts, if explicitly stated or indicated by context) the signal on a signal line coupled between the signal driving and signal receiving circuits. The term “coupled” is used herein to express a direct connection as well as a connection through one or more intervening circuits or structures. Integrated circuit device or register “programming” can include, for example and without limitation, loading a control value into a configuration register or other storage circuit within the integrated circuit device in response to a host instruction (and thus controlling an operational aspect of the device and/or establishing a device configuration) or through a one-time programming operation (e.g., blowing fuses within a configuration circuit during device production), and/or connecting one or more selected pins or other contact structures of the device to reference voltage lines (also referred to as strapping) to establish a particular device configuration or operational aspect of the device. The terms “exemplary” and “embodiment” are used to express an example, not a preference or requirement. Also, the terms “may” and “can” are used interchangeably to denote optional (permissible) subject matter. The absence of either term should not be construed as meaning that a given feature or technique is required.

Various modifications and changes can be made to the embodiments presented herein without departing from the broader spirit and scope of the disclosure. For example, features or aspects of any of the embodiments can be applied in combination with any other of the embodiments or in place of counterpart features or aspects thereof. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.