Patent Publication Number: US-10333741-B2

Title: Vector signaling codes for densely-routed wire groups

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of U.S. Provisional Application No. 62/328,721 filed Apr. 28, 2016, entitled “VECTOR SIGNALING CODES FOR DENSELY-ROUTED WIRE GROUPS”, reference of which is hereby incorporated in its entirety. 
    
    
     REFERENCES 
     The following prior applications are herein incorporated by reference in their entirety for all purposes: 
     U.S. Patent Publication 2011/0268225 of application Ser. No. 12/784,414, filed May 20, 2010, naming Harm Cronie and Amin Shokrollahi, entitled “Orthogonal Differential Vector Signaling” (hereinafter “Cronie I”). 
     U.S. Pat. No. 9,100,232, issued Aug. 4, 2015, naming Amin Shokrollahi, Ali Hormati, and Roger Ulrich, entitled “Method and Apparatus for Low Power Chip-to-Chip Communications with Constrained ISI Ratio”, hereinafter identified as [Shokrollahi I]. 
     U.S. patent application Ser. No. 14/612,243, filed Feb. 2, 2015, naming Amin Shokrollahi, entitled “Methods and Systems for Reduction of Nearest-Neighbor Crosstalk”, hereinafter identified as [Shokrollahi II]. 
     U.S. patent application Ser. No. 14/796,443, filed Jul. 10, 2015, naming Amin Shokrollahi and Roger Ulrich, entitled “Vector Signaling Codes with Increased Signal to Noise Characteristics”, hereinafter identified as [Shokrollahi III] 
     BACKGROUND 
     In communication systems, information may be transmitted from one physical location to another. Furthermore, it is typically desirable that the transport of this information is reliable, is fast and consumes a minimal amount of resources. One of the most common information transfer media is the serial communications link, which may be based on a single wire circuit relative to ground or other common reference, multiple such circuits relative to ground or other common reference, or multiple circuits used in relation to each other. 
     In the general case, a serial communications link is used over multiple time periods. In each such a time period, a signal or signals over the link represents, and thus conveys, some amount of information typically measured in bits. Thus, at a high level, a serial communications link connects a transmitter to a receiver and the transmitter transmits a signal or signals each time period, the receiver receives signal or signals approximating those transmitted (as the result of signal degradation over the link, noise, and other distortions.) The information being conveyed by the transmitter is “consumed” by the transmitter, and representative signals are generated. The receiver attempts to determine the conveyed information from the signals it receives. In the absence of overall errors, the receiver can output exactly the bits that were consumed by the transmitter. 
     The optimum design of a serial communications link often depends on the application for which it is used. In many cases, there are trade-offs between various performance metrics, such as bandwidth (number of bits that can be conveyed per unit time and/or per period), pin efficiency (number of bits or bit equivalents that can be conveyed at one time divided by the number of wires used for that conveyance), power consumption (units of energy consumed by the transmitter, signal logic, receiver, etc. per bit conveyed), SSO resilience and cross-talk resilience, and expected error rate. 
     An example of a serial communications link is a differential signaling (DS) link. Differential signaling operates by sending a signal on one wire and the opposite of that signal on a paired wire; the signal information is represented by the difference between the wires rather than their absolute values relative to ground or other fixed reference. Differential signaling enhances the recoverability of the original signal at the receiver over single ended signaling (SES), by cancelling crosstalk and other common-mode noise. There are a number of signaling methods that maintain the desirable properties of DS while increasing pin-efficiency over DS. Many of these attempts operate on more than two wires simultaneously, using binary signals on each wire, but mapping information in groups of bits. 
     Vector signaling is a method of signaling. With vector signaling, pluralities of signals on a plurality of wires are considered collectively although each of the plurality of signals may be independent. Each of the collective signals is referred to as a component and the number of plurality of wires is referred to as the “dimension” of the vector. In some embodiments, the signal on one wire is entirely dependent on the signal on another wire, as is the case with DS pairs, so in some cases the dimension of the vector may refer to the number of degrees of freedom of signals on the plurality of wires instead of the number of wires in the plurality of wires. 
     With binary vector signaling, each component takes on a coordinate value (or “coordinate”, for short) that is one of two possible values. As an example, eight SES wires may be considered collectively, with each component/wire taking on one of two values each signal period. A “code word” of this binary vector signaling is one of the possible states of that collective set of components/wires. A “vector signaling code” or “vector signaling vector set” is the collection of valid possible code words for a given vector signaling encoding scheme. A “binary vector signaling code” refers to a mapping and/or set of rules to map information bits to binary vectors. In the example of eight SES wires, where each component has a degree of freedom allowing it to be either of the two possible coordinates, the number of code words in the collection of code words is 2^8, or 256. As with SES or DS links, output drivers used with a binary vector signaling code need only emit two distinct voltage- or current-levels, corresponding to the two possible coordinate values for each vector element. 
     With non-binary vector signaling, each component has a coordinate value that is a selection from a set of more than two possible values. A “non-binary vector signaling code” refers to a mapping and/or set of rules to map information bits to non-binary vectors. The corresponding output driver for a non-binary vector signaling code may then be configured to emit multiple voltage- or current-levels corresponding to the selected coordinate values for each vector output. Examples of vector signaling methods are described in [Cronie I]. 
     FIELD OF THE INVENTION 
     The present embodiments relate to communications systems generally, and in particular to high speed digital communications over sets of multiple wires comprising an interconnecting communications medium. 
     BRIEF DESCRIPTION 
     Methods and systems are described for receiving signal elements corresponding to a first group of symbols of a vector signaling codeword over a first densely-routed wire group of a multi-wire bus at a first set of multi-input comparators (MICs), receiving signal elements corresponding to a second group of symbols of the vector signaling codeword over a second densely-routed wire group of the multi-wire bus at a second set of MICs, and receiving signal elements corresponding to the first and the second groups of symbols of the vector signaling codeword at a global MIC. 
    
    
     
       BRIEF DESCRIPTION OF FIGURES 
         FIG. 1  illustrates multiple printed circuit traces in microstripline configurations, comprising interconnecting communications media. 
         FIG. 2  is a block diagram of one receiver embodiment. 
         FIG. 3  is a block diagram of one embodiment detecting a subchannel spanning two wire groups. 
         FIG. 4  is a block diagram of another embodiment detecting a subchannel spanning two wire groups. 
         FIG. 5  is a flowchart of a method, in accordance with some embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Orthogonal vector signaling is described in [Cronie I]. As presented there, an orthogonal vector signaling code (also known as an Orthogonal Differential Vector Signaling code, or ODVS code) may be obtained via the multiplication
 
(0, x   2   , . . . ,x   n )* M/a   [Eqn. 1]
 
     wherein M is an orthogonal n×n-matrix in which the sum of the columns is zero except at the first position, x 2 , . . . , x n  belong to an alphabet S describing the original modulation of these symbols, and a is a normalization constant which ensures that all the coordinates of the resulting vector are between −1 and +1. For example, in case of binary modulation, the alphabet S may be chosen to be {−1,+1}. In case of ternary modulation, the alphabet S may be chosen as {−1,0,1}, in case of quaternary modulation, the alphabet S may be chosen as {−3,−1,1,3}, and in case of quintary modulation S may be chosen as {−2,−1,0,1,2}. In general, however, it is not necessary that all the x i  are modulated by the same alphabet S. The vector (x 2 , . . . , x n ) is often denoted by x henceforth and is called the message. 
     In operation, the matrix M does not need to be orthogonal. It suffices that all its rows are pairwise orthogonal (even if the rows are not of Euclidean norm  1 ). In the following, we call such matrices s-orthogonal (scaled orthogonal). 
     Detection of the transmitted signals can be accomplished with the matrix M in the following manner. Each row of M is scaled in such a way as to ensure that the sum of the positive entries in that row is equal to 1. Then the entries of each row of this new matrix D (except for the first) are used as coefficients of a multi-input comparator (MIC) as defined in [Holden I]. For example, if n=6, the values on the 6 wires (possibly after equalization) are denoted by a, b, c, d, e, f and the row is [½, ¼, −½, ¼, −½, 0], then the multi-input comparator would calculate the value 
     
       
         
           
             
               
                 
                   
                     a 
                     2 
                   
                   + 
                   
                     
                       b 
                       + 
                       d 
                     
                     4 
                   
                   - 
                   
                     ( 
                     
                       
                         c 
                         + 
                         e 
                       
                       2 
                     
                     ) 
                   
                 
               
               
                 
                   [ 
                   
                     Eqn 
                     . 
                     
                         
                     
                     ⁢ 
                     2 
                   
                   ] 
                 
               
             
           
         
       
     
     and would slice the result to reconstruct the original modulation set S. The set of multi-input comparators defined by matrix D are said to detect the ODVS code defined by M if the collection of comparator outputs unambiguously identifies any message x encoded by M as described above. 
     Vector signaling codes may be informally identified by the number of bits they encode and the number of wires needed to represent the resulting codewords, thus the “Glasswing” code described in [Shokrollahi I] may also be described as a “5b6w” code. This code has a detection matrix D of: 
     
       
         
           
             D 
             = 
             
               [ 
               
                 
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                 
                 
                   
                     1 
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                 
                 
                   
                     1 
                   
                   
                     1 
                   
                   
                     
                       - 
                       2 
                     
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     
                       - 
                       2 
                     
                   
                 
                 
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     
                       - 
                       1 
                     
                   
                 
               
               ] 
             
           
         
       
     
     Individual subchannels detected by D are represented by rows  2 - 6  of the matrix (row  1 , which corresponds to common-mode signaling, is not used), with individual received signal wires being represented by columns  1 - 6  of the matrix. 
     Detection of such vector signaling codes by a conventional receiver requires that every element of the codeword be present simultaneously, such that the entire codeword may be evaluated and its data decoded. Variations in the propagation time of individual wires comprising the transmission medium (“skew”) may impact this simultaneity, leading to an apparent reduction in the horizontal and vertical “eye opening” of the receive detector (i.e. the time during which all codeword elements are present and capable of being decoded.) In order to minimize these skew effects, especially at high data rates, significant efforts may be made to maintain equal-length and similar-path routing of all signal traces comprising the vector signaling code communications interconnection. However, the difficulty of maintaining such tight routing constraints increases significantly with the number of wires in the group, with groups of three or four wire being significantly easier to route than groups of five or six wires. 
     Micro-stripline techniques are typically used for such high-speed interconnections, with each “wire” of the interconnection being a controlled-impedance transmission line of fixed width separated by a dielectric layer from a ground plane. Such a micro-stripline may be seen in cross section in  FIG. 1 , where signal conductors  101 ,  102 ,  103 ,  104 ,  105 ,  106  are separated from ground plane  100  by a fixed distance (maintained by a dielectric layer such as a printed circuit board, not shown in this representation), each trace created with a fixed width and a fixed spacing to adjacent traces. 
     More generally, these widths and spacings may be represented as shown with conductors  112 ,  114 ,  116 ,  122 ,  124 ,  126  having trace width W and inter-trace spacing d. Inter-trace spacing s represents a special case to be described below. 
     Grouped Trace Routing 
     It may be noted from matrix D above that the subchannel vectors represented by rows  2  and  3  rely only on wires  1 ,  2 , and  3  to obtain their results. Thus, any skew between any of those wires and wires  4 ,  5 , and  6  will not affect those results. A similar condition applies to subchannel vectors  4  and  5  relying on wires  4 ,  5 , and  6  and being immune to skew on wires  1 ,  2 , and  3 . Thus, one embodiment enforces strict three wire routing constraints on the group represented by wires  1 ,  2 , and  3 , and strict three wire routing constraints on the group represented by wires  4 ,  5 , and  6 , without imposing such strict constraints across the entire set of six wires. These wire groupings are referred to herein as densely-routed wire groups. 
     Wire coupling effects such as crosstalk on those subchannels may similarly be categorized as occurring between wires of the same densely-routed wire group, or imposed on the group from external sources such as another wire group. Transposing the second and third, and the fifth and sixth wire signals in matrix D produces matrix E, in which these effects are minimized. 
     
       
         
           
             E 
             = 
             
               [ 
               
                 
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                 
                 
                   
                     1 
                   
                   
                     0 
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                 
                 
                   
                     1 
                   
                   
                     
                       - 
                       2 
                     
                   
                   
                     1 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     0 
                   
                   
                     
                       - 
                       1 
                     
                   
                 
                 
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     1 
                   
                   
                     
                       - 
                       2 
                     
                   
                   
                     1 
                   
                 
                 
                   
                     1 
                   
                   
                     1 
                   
                   
                     1 
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     
                       - 
                       1 
                     
                   
                   
                     
                       - 
                       1 
                     
                   
                 
               
               ] 
             
           
         
       
     
     Crosstalk between wires of the same group is reduced significantly by the described wire grouping and this modified code, because of the relative symmetry of the signaling within each wire group, which tends to balance positive and negative inter-wire capacitive coupling effects. As taught by [Shokrollahi II], this inter-group symmetry also helps to control the total energy emitted by the group that could inductively couple externally, by locally balancing wire current flows within the densely-routed wire group. In particular, in a first group of subchannels consisting of rows  2  and  3  of E, the signaling elements are locally symmetric, or balanced as between the first three wires, such that in the second row the +1 and −1 signal elements are on opposite sides of a center conductor carrying a zero, or middle value. The third row has a local symmetry by having positive values on the outer wires of the grouping of three conductors with a negative value in the middle (or with the reverse polarity of a positive in the middle with negative values on the outer wires). Similarly, this intra-wire group symmetry is repeated for the second group of subchannels (rows  4  and  5  of E) on the second grouping of three conductors forming another densely-routed wire group. In embodiments with more than two groups of densely-routed wire groups, a common mode vector of each group may be seen to form additional subchannels across the groups that display a global inter-group symmetry that is similar to the local intra-group symmetry. That is, in the same way that a subchannel having elements 1, 0, −1 (or elements 1, −2, 1) has a local symmetry within a three-wire group of densely-routed wires, the same type of inter-group symmetry across subgroups is present in a subchannel carried by 9 wires that make up three 3-wire densely-routed groups having elements 1, 1, 1, 0, 0, 0, −1, −1, −1, or a subchannel 1, 1, 1, −2, −2, −2, 1, 1, 1. 
     To control any residual external crosstalk effects, one embodiment introduces additional isolation spacing between adjacent wire groups, beyond the usual inter-wire spacing. Thus, as shown in  FIG. 1 , wire groups  110  and  120  are separated by spacing s rather than the spacing w used between wires of the same group. Relative spacings in one particular embodiment are 5 units per wire width W, 5 units for inter-wire spacing d, and 15 units for inter-group spacing s. Thus, a two group six wire microstripline signal path  112 ,  114 ,  116 ,  122 ,  124 ,  126  with such spacing will occupy 65 units of total width. By comparison, a legacy six wire three differential pair microstripline signal path laid out with comparable design rules occupies at least 75 units of total width, and can occupy as much as 95 units of width with more typical inter-pair spacing. 
     Inter-Group Skew Control 
     The Glasswing subchannel represented by row  6  of matrix D compares the summation of signals on wires  1 ,  2 ,  3  with the summation of signals on wires  4 ,  5 ,  6 , i.e. between the two wire groups. Thus, this subchannel result will be influenced by any skew introduced by wire path differences between the two wire groups. For one representative practical embodiment operating at a 25 Gbps signaling rate (40 picoseconds per signaling unit interval) skew within each three wire group was limited to several picoseconds, while skew between groups could be as much as 10-15 picoseconds. 
     Conventional skew mitigation teachings suggest that variable delay elements be introduced into each wire signal path, allowing the “fast” wire signals to be delayed until concurrent with the “slow” wire signals. Such variable delay elements are typically implemented as chains of logic gates such as inverters, or as discrete element analog delay lines. Because there is no a priori way of identifying which wire group will be fast or slow, this suggests that a full set of six variable delay elements are used, with significant impact on cost, circuit complexity, and power consumption. 
     One alternative embodiment delays not the actual wire signals, but instead the sample timing associated with those wire signals. As seen in  FIG. 2 , a separate clock data alignment system is used to produce a sample timing clock for each densely-routed wire group. In the embodiment of  FIG. 2 , a clock signal is provided over a differential pair of wires (which, together with a 5b6w system configured as two 3-wire densely-routed groups, brings the total number of wires to 8). In alternative embodiments, a clock signal may be recovered from a MIC output corresponding to a clock-embedded sub-channel through known clock recovery techniques. Further, in some alternative embodiments, a clock signal may be embedded in a subchannel of the orthogonal code, and which may be a subchannel whose elements are carried in a single densely-routed wire group. In these various embodiments, the result of the first set of multi-input comparators configured as the second and third rows of matrix D may be sampled at time t, while the result of the second set of multi-input comparators configured as the fourth and fifth rows of matrix D may be sampled at, as an example, time t+15 picoseconds, if wires  4 ,  5 , and  6  have 15 picoseconds of additional delay beyond that of wires  1 ,  2 , and  3 . Internal MIC sampler  245  may be referred to herein as a global MIC, as it is connected to all of the densely-routed wire groups. Alternatively, a global MIC may be a MIC connected to at least two densely-routed wire groups. In the embodiment shown in  FIG. 2 , it is connected to the first and second densely-routed wire groups. 
     Sampling of the final detected subchannel, described by the sixth row of matrix D may be more problematic due to skew between the two densely-routed wire groups, wherein the skew is dominated by a difference in the physical lengths of the two wire groups. Further, common mode signals present on the individual densely-routed wire groups may induce differing propagation delays that may further skew the densely-routed wire groups. In particular, a conventional multi-input comparator has only a single sample-able output, which depending on the embodiment either represents a digital comparison result derived from the weighted input terms, or the corresponding analog weighted summation of all input terms. In some embodiments, an apparatus includes a first set of multi-input comparators (MICs) connected to a first densely-routed wire group of a multi-wire bus, the first set of MICs configured to receive signal elements corresponding to a first group of symbols of a vector signaling codeword. In  FIG. 2 , the first set of MICs may include MIC 1  and MIC 2 , MIC 1 , and the first densely-routed wire group may include wires W 0 , W 1 , and W 2 . The apparatus may further include a second set of MICs, such as MIC  3  and MIC 4 , connected to a second densely-routed wire group including wires W 3 , W 4 , and W 5  of the multi-wire bus, the second set of MICs configured to receive signal elements corresponding to a second group of symbols of the vector signaling codeword. The apparatus may further include a global MIC, shown in  FIG. 2  as internal MIC sampler  245 , the global MIC connected to the first and second densely-routed wire groups and configured to receive signal elements corresponding to the first and second groups of symbols of the vector signaling codeword. 
     In some embodiments, the global MIC has a first input connected to all the wires of the first densely-routed wire group and a second input connected to all the wires of the second densely-routed wire group. 
     In some embodiments, the apparatus further includes a clock recovery circuit  230  for generating a first sampling clock for the first set of MICs and a second sampling clock for the second set of MICs, and wherein the global MIC obtains signal samples based on signal elements received from the first densely-routed wire group according to the first sampling clock, and obtains signal samples of signal elements based on signal elements received from the second densely-routed wire group according to the second sampling clock. In some embodiments, clock recovery circuit  230  obtains a symbol clock received on a differential pair of wires, such as wires W 6  and W 7  received at MIC ck, which may be a simple two-input differential comparator. Alternatively, the clock recovery circuit may receive a symbol clock from a MIC in the first or second set of MICs or the global MIC. 
     In some embodiments, the global MIC forms a comparison of a linear combination of the signal samples obtained from the first densely-routed wire group and the signal samples obtained from the second densely-routed wire group, and wherein the global MIC comprises a sampler for receiving a third sampling clock, the third sampling clock having a phase delay with respect to the first and second sampling clocks, the sampler configured to sample the comparison of the linear combination. In some embodiments, the comparison of the linear combination corresponds to a sum of the signal samples received from the first densely-routed wire group compared to a sum of the signal samples received from the second densely-routed wire group. 
     In some embodiments, the first and second densely-routed wire groups comprise intra-group symmetry with respect to corresponding sub-channel vectors carried by the respective densely-route wire groups. In some embodiments, the first and second densely-routed wire groups are separated by an isolation medium. 
     In some embodiments, the apparatus may be extended to include a third set of MICs connect to a third densely-routed wire group of the multi-wire bus, the third set of MICs configured to receive signal elements corresponding to a third group of symbols of the vector signaling codeword, and wherein the global MIC is further connected to the third densely-routed wire group and configured to receive signal elements corresponding to the third group of symbols of the vector signaling codeword. 
       FIG. 3  is a block diagram showing one alternative embodiment for decoding such a subchannel spanning two input wire groups that may have different timing characteristics. For purposes of illustration and without implying limitation, all elements typically seen in the signal path are shown, although some may be omitted in some embodiments, some may be shared with other receiver subsystems, and some elements may be combined, as in a combination MIC and sampler. 
     One embodiment of the global MIC shown in  FIG. 3  includes two summation nodes  320  and  321 , the first producing an analog summation of wires  1 ,  2 ,  3 , and the second producing an analog summation of wires  4 ,  5 ,  6 . The analog value of these two results are captured at times t 1  and t 2  using, as examples offered without limitation, analog sample-and-hold or integrate-and-hold circuits  330  and  331 , respectively. The resulting values are then compared at a time t 3  equal or later than the later of times t 1  and t 2  with the comparison result provided as the detected subchannel result. 
     At the system level,  FIG. 2  illustrates times t 1  and t 2  as being identified by clock signals labeled “sample clock  1 ” and “sample clock  2 ” produced by receive clock recovery subsystem  230 , those clocks also being associated with optimal sampling times for first wire group subchannels MIC 1 /MIC 2 , and second wire group subchannels MIC 3 /MIC 4  respectively. 
     In  FIG. 3 , wire signals w 1 , w 2 , w 3 , w 4 , w 5 , and w 6  are processed by Continuous Time Linear Equalizers (CTLEs)  310 ,  311 ,  312 ,  313 ,  314 ,  315  respectively. In some embodiments, the frequency-dependent filtering or amplification provided by CTLE is not used. Summation node  320  produces an analog summation of signals received from wires w 1 , w 2 , and w 3  (i.e. a first wire group,) which is then sampled  330  using clock CK 1  at time t 1  associated with the optimum sampling interval for the first wire group. Similarly, summation node  321  produces an analog summation of signals received from wires w 4 , w 5 , w 6  (i.e. a second wire group,) which is then sampled  331  using clock CK 2  at time t 2  associated with the optimum sampling interval for the second wire group. The resulting sampled values are presented to multi-input comparator  340 , completing detection of the desired subchannel as described in matrix E. In some embodiments, the detected subchannel result is sampled  350  (as one example, using a combined MIC/sampler circuit) using clock CK 3  at time t 3 , which is equal or later than the later of times t 1  and t 2 . 
     A first alternative embodiment holds only the earlier of the two analog summation signals, performing a clocked comparison between it and the other analog summation signal at the later of the two times. 
     A second embodiment shown in  FIG. 4  retains the conventional six input global MIC used to detect the subchannel corresponding to the sixth row of matrix E, by pre-sampling the wire signal inputs, their analog values being captured at one of times t 1  and t 2  using, as examples offered without limitation, analog sample-and-hold or integrate-and-hold circuits. The resulting values are then presented to the MIC, with the result available at a time equal or later than the later of times t 1  and t 2 . 
     In  FIG. 4 , wire signals w 1 , w 2 , w 3 , w 4 , w 5 , and w 6  are processed by Continuous Time Linear Equalizers (CTLEs)  310 ,  311 ,  312 ,  313 ,  314 ,  315  respectively. In some embodiments, the frequency-dependent filtering or amplification provided by CTLE is not used. The processed signals are then individually sampled  420 ,  421 ,  422 ,  423 ,  424 ,  425 , with signals associated with a first wire group being sampled at time t 1  using clock CK 1 , and signals associated with a second wire group being sampled at time t 2  using clock CK 2 . The resulting sampled values are presented to multi-input comparator  430 , completing detection of the desired subchannel as described in matrix E. In some embodiments, the detected subchannel result is sampled  440  (as one example, using a combined MIC/sampler circuit) using clock CK 3  at time t 3 , which is equal or later than the later of times t 1  and t 2 . 
     A first alternative embodiment samples or holds only the earlier of the two wire group signals, performing a sampled MIC detection using those signals and the other wire group signals at the later of the two times. 
     Additional mitigation of the increased skew seen between wire groups may also be obtained by extending the effective detection unit intervals on the relevant subchannels. One embodiment providing such mitigation transmits data on the subchannel corresponding to the sixth row of matrix E at one-half rate, as one example by repeating each data value presented to the encoder for that subchannel. The resulting extended time between transitions at the received MIC output may either be sampled at one half rate, or may be sampled at normal unit intervals with every other sample result being ignored as redundant or occurring during signal transitions. 
       FIG. 5  is a flowchart of a method  500 , in accordance with some embodiments. As shown, method  500  includes receiving  502  signal elements corresponding to a first group of symbols of a vector signaling codeword over a first densely-routed wire group of a multi-wire bus at a first set of MICs, receiving  504  signal elements corresponding to a second group of symbols of the vector signaling codeword over a second densely-routed wire group of the multi-wire bus at a second set of MICs, and receiving signal elements corresponding to the first and the second groups of symbols of the vector signaling codeword at a global MIC. 
     In some embodiments, the symbols of the vector signaling code represent a superposition of a plurality of subchannel vectors, each sub-channel vector weighted by a corresponding antipodal weight. In some embodiments, the first group of symbols of the vector signaling codeword correspond to a superposition of a first subset of the plurality of subchannel vectors and wherein the second group of symbols of the vector signaling codeword correspond to a superposition of a second subset of the plurality of subchannel vectors. For example, in the first group of symbols may correspond to symbols received on wires  1 ,  2 , and  3 , and the second group of symbols may correspond to symbols received on wires  4 ,  5 , and  6  in accordance with the embodiment described with respect to  FIG. 2 . The symbols received on wires  1 ,  2 , and  3  are formed using a summation of signal components provided by subchannel vectors corresponding to rows  2 ,  3 , and  6  of matrix D. Similarly, symbols received on wires  4 ,  5 , and  6  are formed using a summation of signal components provided by subchannel vectors corresponding to rows  4 ,  5 , and  6  of matrix D. In such an embodiment, the first and second subsets of the plurality of subchannel vectors share a single subchannel vector corresponding to row  6 . 
     In some embodiments, the signal elements of the first group of subchannel vectors are locally symmetric over the first densely-routed wire group and the signal elements of the second group of subchannel vectors are locally symmetric over the second densely-routed wire group. Such symmetry is illustrated above regarding the permutations of the columns of matrix D to obtain matrix E. As described above, the first densely-routed group of wires  1 ,  2 , and  3  carry a superposition of signal components of subchannel vectors corresponding to rows  2 ,  3  and  6  of the matrix. By providing subchannel symmetry, the crosstalk associated with each subchannel vector is reduced. The subchannel vector corresponding to row  2  has differential signal components on wires  1  and  3 , which reduces crosstalk compared to the signal components being on wires  1  and  2 . Similarly, the subchannel vector corresponding to row  3  has signal component values of ‘1’ on wires  1  and  3 , with a signal component value of ‘−2’ in the middle on wire  2 , further reducing crosstalk. As the signal component values put on wires  1 ,  2 , and  3  from the subchannel vector corresponding to row  6  of the matrix are all equal, there is no change in crosstalk due to the permutation of the columns of the matrix. 
     In some embodiments, the method further includes generating a first set of sampled outputs of the first set of MICs using a first sampling clock and generating a second set of sampled outputs of the second set of MICs using a second sampling clock, and forming a comparison of (i) a sum of the first set of sampled outputs and (ii) the second set of sampled outputs, and sampling the comparison using a third sampling clock. In some embodiments, the third sampling clock has a delay with respect to the first and second sampling clocks, and may be formed using the first and second sampling clocks, or using another means of generating a sampling clock. 
     In some embodiments, the first and second densely-routed wire group comprises three conductors. In alternative embodiments, the first densely-routed wire group comprises three conductors and the second densely-routed wire group comprises two conductors. Other densely-routed wire group formats may also be plausible, such as three densely-routed wire groups each having three wires. In such and embodiment having three densely-routed wire groups, the method further includes receiving signal elements corresponding to a third group of symbols of the vector signaling codeword over a third densely-routed wire group of the multi-wire bus at a third set of MICs, and wherein the global MIC is further configured to receive the signal elements corresponding to the third group of symbols of the vector signaling codeword. 
     Extension to Additional Wire Groups 
     In some embodiments, the wire arrangements of  FIG. 1  may be extended to support additional wiring groups beyond the two groups of the previous example by introducing another inter-group space s and another set of wires of width w and spacing d. 
     As one familiar with vector signaling codes will observe, the same coding methodologies used for encoding signals on individual wires may be applied to encoding the common mode values of wire groups. Without limitation, these methods include differential signaling between the common mode values of pairs of groups (as in the previous example), differential signaling between the sum of common modes on two groups versus the common mode of another group, differential signaling between the sum of common modes of two groups versus the sum of common modes of two other groups, and extensions of these methods to larger sets of groups. 
     Normalizing Subchannel Gain 
     It may be observed that the MICs defined by matrix rows  1 ,  3 , and  5  of matrices D and E produce output values of ±⅔, whereas the MICs defined by matrix rows  2  and  4  produce output values of ±1. The loss in vertical eye opening compared to differential signaling is therefore 20*log 10(3)=˜9.5 dB. This output level variation is the result of our loosened definition of orthogonality for the receive matrix, as the non-unity values of the diagonal M T M=D represent non-unity gains for the corresponding sub-channels. In some embodiments, normalizing the matrix (i.e. scaling its elements such that the diagonal values are 1), results in a system having constant unity gain across all sub-channels. However, such known normalization methods may lead to suboptimal embodiments as the large number of distinct normalized coefficient values, in many cases including irrational values, are difficult to embody in a practical system. 
     At least one embodiment retains the un-normalized matrix with its convenient-to-implement coefficient values, and instead compensates for the variation of sub-channel amplitude by modifying the input signal amplitudes modulating the various sub-channel. For example, a hypothetical system having eight sub-channels of unity gain and one sub-channel of 0.8 gain will ultimately be SNR limited by the latter output. Thus, increasing the last sub-channel&#39;s transmission input to {+1.2, −1.2} rather than {+1, −1} will bring up the corresponding channel output. Alternatively, decreasing all other sub-channel inputs to {+0.8, −0.8} will lower the corresponding channel outputs, such that all channels have equal output levels and use less transmit power. 
     This compensation technique is not without cost, however. As taught by [Shokrollahi III], modifying the input vector in this manner leads to an increase in the alphabet size needed (and thus, the number of discrete signal levels the transmitter must generate) to communicate the codewords over the channel. [Shokrollahi III] teaches numeric methods to select suitable modulation amplitudes that result in closer matching of sub-channel outputs with minimal expansion of the alphabet size. 
     Applying the procedure taught by [Shokrollahi III], the optimal initial code set for Glasswing is calculated to be (0, ±⅜, ±¼, ±⅜, ±¼, ±⅜) with the corresponding code having an alphabet of size 10 given by (1, ⅞, ½, ¼, ⅛, −⅛, −¼, −½, −⅞, −1). The resulting codewords are shown in Table 1, with the new code herein called the 5b6w_10_5 code. 
     
       
         
           
               
               
               
             
               
                   
                 TABLE 1 
               
               
                   
                   
               
             
            
               
                   
                 ± [1, ¼, −⅛, ¼, −½, −⅞] 
                 ± [1, ¼, −⅛, −¼, −1, ⅛] 
               
               
                   
                 ± [¼, 1, −⅛, ¼, −½, −⅞] 
                 ± [¼, 1, −⅛, −¼, −1, ⅛] 
               
               
                   
                 ± [½, −¼, ⅞, ¼, −½, −⅞] 
                 ± [½, −¼, ⅞, −¼, −1, ⅛] 
               
               
                   
                 ± [−¼, ½, ⅞, ¼, −½, −⅞] 
                 ± [−¼, ½, ⅞, −¼, −1, ⅛] 
               
               
                   
                 ± [1, ¼, −⅛, −½, ¼, −⅞] 
                 ± [1, ¼, −⅛, −1, −¼, ⅛] 
               
               
                   
                 ± [¼, 1, −⅛, −½, ¼, −⅞] 
                 ± [¼, 1, −⅛, −1, −¼, ⅛] 
               
               
                   
                 ± [½, −¼, ⅞, −½, ¼, −⅞] 
                 ± [½, −¼, ⅞, −1, −¼, ⅛] 
               
               
                   
                 ± [−¼, ½, ⅞, −½, ¼, −⅞] 
                 ± [−¼, ½, ⅞, −1, −¼, ⅛] 
               
               
                   
                   
               
            
           
         
       
     
     With this code, all MICs as defined by matrix E produce output values of ±¾. The increase in vertical eye opening compared to the unmodified 5b6w code is 20*log 10((¾)/(⅔))=˜1 dB. The termination power of 5b6w_10_5 is about 88% of the termination power of the unmodified 5b6w code, so even at a smaller termination power, 5b6w_10_5 leads to a fractionally improved vertical eye opening. However, the implementation cost to obtain this improvement is the added complexity within the transmitter to encode data into an internal representation capable of selecting among ten rather than four symbol values per wire, and line drivers capable of generating ten discrete output levels rather than four. Such a transmitter embodiment would be fully compatible with any Glasswing receiver defined by matrix E, and would use less line driver power than an unmodified 5b6w transmit driver. Because of this generally disadvantageous cost/benefit tradeoff, most embodiments of Glasswing transmitters are expected to utilize unmodified 5b6w signal levels; where they are cost-effective, alternative embodiments incorporating the 5b6w_10_5 modifications may transparently be interchanged and/or interoperate with unmodified ones. 
     Addressing Transistor Mismatch 
     Especially with very small integrated circuit feature sizes, there can be considerable mismatch between “identical” transistors in a circuit design. As examples, consider two MIC designs as taught by [Holden I] for detection of the second and third rows of matrix E. The MIC detecting the second row utilizes a differential comparator input having one transistor on each input leg, making it more susceptible to process variations between those transistors, while the MIC detecting the third row has two transistors on each input leg, reducing its susceptibility to process variations. 
     One embodiment addresses such susceptibilities by increasing the number of transistors per differential input leg by, as one example, paralleling two or more transistors per input signal rather than utilizing a single transistor. This paralleling may be seen in matrix F, 
             F   =     [         1       1       1       1       1       1           3       0         -   3         0       0       0           2         -   4         2       0       0       0           0       0       0       3       0         -   3             0       0       0       2         -   4         2           1       1       1         -   1           -   1           -   1           ]           
which differs from matrix E in that its second and fourth rows have been multiplied by three, and its third and fifth rows have been multiplied by two. Thus, a MIC embodying the second row of matrix F would utilize three paralleled transistors per differential input leg where a MIC embodying the second row of matrix E would use a single transistor per differential input leg.
 
     EMBODIMENTS 
     Following are some embodiments that incorporate various aspects of the signaling and associated wire groupings described above. The term “normal matrix” is used to refer to matrices with integer values for ease of understanding, with the normalization factor specified separately. The term “symmetric-eye matrix” specifies the matrix variation that provides equal eye openings at the output of the receive comparators/amplifiers. 
     2b3w: 
     Normal Matrix: 
                   [         1       0         -   1             1         -   2         1         ]           
Normalization factor=2. The alphabet is {1,0,−1}. Eye openings are ±1, ± 3/2.
 
Symmetric-Eye Matrix:
 
                   [         3       0         -   3             2         -   4         2         ]           
Normalization factor=5. The alphabet is {1, ⅘, ⅕, −⅕, −⅘, −1}. All eye openings are ± 6/5. Routing can be done by having tight skew match across wires  1  and  3 , and less skew match on the middle wire.
 
     4b5w: 
     Normal Matrix: 
                   [         1       0         -   1         0       0           1         -   2         1       0       0           0       0       0       1         -   1             2       2       2         -   3           -   3           ]           
Normalization factor=4. The alphabet in this case is {1, ⅓, 0, −⅓, −1}. Eye openings are ±½, ±¾, ±½, ± 5/4.
 
Symmetric-Eye Matrix:
 
                   [         15       0         -   15         0       0           10         -   20         10       0       0           0       0       0       15         -   15             12       12       12         -   18           -   18           ]           
Normalization factor=37 to provide values between ±1. The alphabet size is 16, and the alphabet is [−37, −33, −32, −17, −13, −8, −7, −3, 3, 7, 8, 13, 17, 32, 33, 37]/37. All eye openings are 30/37˜0.81.
 
     Routing is in a dense group of 3 wires and a dense group of 2 wires: spacing of w-space-w-space-w 3×space w-space-w where space is 5 units, and w is 5 units. Skew between the group of 3 and group of 2 can be handled similarly to what is described for GW and skew between two groups of 3 wires. 
     8b9w: 
     Normal Matrix: 
                   [         1       0         -   1         0       0       0       0       0       0           1         -   2         1       0       0       0       0       0       0           0       0       0       1       0         -   1         0       0       0           0       0       0       1         -   2         1       0       0       0           0       0       0       0       0       0       1       0         -   1             0       0       0       0       0       0       1         -   2         1           1       1       1         -   2           -   2           -   2         1       1       1           1       1       1       0       0       0         -   1           -   1           -   1           ]           
Normalization factor=4. The alphabet in this case is {1, ½, 0, −½, −1]. Eye openings are ±½, ±¾, ±½, ±¾, ±½. ±½, ±¾.
 
Symmetric-Eye Matrix:
 
                   [         3       0         -   3         0       0       0       0       0       0           2         -   4         2       0       0       0       0       0       0           0       0       0       3       0         -   3         0       0       0           0       0       0       2         -   4         2       0       0       0           0       0       0       0       0       0       3       0         -   3             0       0       0       0       0       0       2         -   4         2           2       2       2         -   4           -   4           -   4         2       2       2           3       3       3       0       0       0         -   3           -   3           -   3           ]           
Normalization factor=10. The alphabet in this case is of size 21 and equals [−10, −9, −8, −6, −5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5, 6, 8, 9, 10]/10. The eye openings are ±⅗.
 
     Routing can be done in groups of three wires, distance 5 between wires in each group, distance 15 between groups. The two outer three wire groups have closer matching between groups than matching with the middle group of three wires. 
     Example signal levels, signal frequencies, and physical dimensions described herein are provided for purposes of explanation, and are not limiting. Different vector signaling codes may be used, communicated using more or fewer wires per group, fewer or greater numbers of signal levels per wire, and/or with different code word constraints. For convenience, signal levels are described herein as voltages, rather than their equivalent current values. 
     Other embodiments may utilize different signaling levels, connection topology, termination methods, and/or other physical interfaces, including optical, inductive, capacitive, or electrical interconnection. Similarly, examples based on unidirectional communication from transmitter to receiver are presented for clarity of description; combined transmitter-receiver embodiments and bidirectional communication embodiments are also explicitly in accordance with some embodiments. 
     The examples presented herein illustrate the use of vector signaling codes carried by parallel transmission line interconnections for intra-chip and chip-to-chip communication. However, those exemplary details should not be seen as limiting the scope of the described embodiments. The methods disclosed in this application are equally applicable to other interconnection topologies and other communication media including optical, capacitive, inductive, and wireless communications which may rely on any of the characteristics of the described embodiments, including but not limited to communications protocol, signaling methods, and physical interface characteristics. Thus, descriptive terms such as “voltage” or “signal level” should be considered to include equivalents in other measurement systems, such as “current”, “optical intensity”, “RF modulation”, etc. As used herein, the term “signal” includes any suitable behavior and/or attribute of a physical phenomenon capable of conveying information. The information conveyed by such signals may be tangible and non-transitory.