Bus Encoding to Prevent Crosstalk Delay Bret Victor and Kurt Keutzer Department of Electrical Engineering and Computer Sciences University of California, Berkeley {bret, keutzer}@eecs.berkeley.edu Abstract— The propagation delay across long on-chip buses is increasingly becoming a limiting factor in high-speed designs. Crosstalk between adjacent wires on the bus may create a significant portion of this delay. Placing a shield wire between each signal wire alleviates the crosstalk problem but doubles the area used by the bus, an unacceptable consequence when the bus is routed using scarce top-level metal resources. Instead, we propose to employ data encoding to eliminate crosstalk delay within a bus. This paper presents a rigorous analysis of the theory behind “self-shielding codes”, and gives the fundamental theoretical limits on the performance of codes with and without memory. Specifically, we find that a 32-bit bus can be encoded with 40 wires using a code with memory or 46 wires with a memoryless code, in comparison to the 63 wires required with simple shielding. 1. Introduction As device geometries shrink, chip sizes increase, and clock speeds get faster, interconnect delay is becoming increasingly significant. In particular, the propagation delay through long cross-chip buses is already proving to be a limiting factor in the speed of some designs, and this trend will only get worse. It has been shown that the delay through a long bus is strongly a function of the coupling capacitance between the wires. Especially detrimental to the delay is the Miller-like effect when adjacent wires simultaneously transition in opposite directions. When the cross-coupling capacitance is comparable to or exceeds the loading capacitance on the wires, the delay of such a transition may be twice or more that of a wire transitioning next to a steady signal. We call this delay penalty the “crosstalk delay”. In some high-speed designs where crosstalk delay would have limited the clock speed, the technique of shielding was used. This involves putting a grounded wire between every signal wire on the bus. Although this certainly is effective in preventing crosstalk within the bus, it has the effect of doubling the wiring area. Cross-chip buses often must be routed in higher metal layers, which are scaled more slowly than the rest of the geometry in order to prevent an unacceptable increase in resistance. Thus, routing resources are scarce at these levels, and it can be difficult to justify doubling the bus width. However, if we abstract the concept of shielding and just look at the signals on the wires of a shielded bus, we can think of it as a very simple bus encoding. Two wires are used for every data bit. A data bit of “0” is encoded as a “00” signal on the wires, and a “1” is encoded as “10”. The purpose of this “encoding” is to prevent adjacent wires from transitioning in opposite directions, and this particular encoding achieves that goal by forcing every other wire to a steady value. But the question arises: Are there other possible encodings that can achieve the same goal, but with fewer wires? Such encodings may require extra logic or memory elements, but as the speed of logic goes up and the relative area consumed by logic goes down, such a tradeoff seems increasingly valid. Indeed, such encodings exist. We will refer to them as “self-shielding” or “crosstalk-immune” codes. In this paper, we will approach this subject from a rigorous theoretical standpoint. Rather than giving ad-hoc designs and heuristic methods, or prematurely attempting to design for efficient implementation, we will instead develop the theory behind crosstalk-immune coding, describe the fundamental capabilities and limitations that the theory implies, and give methods for generating optimal sets of codewords. Such an analysis is always necessary before good codes can be designed and implemented. 2. Background We can model the chain of communication as shown in Figure 1. Adopting some terminology from coding theory, we say that the data words to be encoded are represented by symbols. The mapping between symbols and actual data words is an implementation step and will not be discussed here. The values placed on the channel by the encoder are called codewords, and the mapping between symbols and codewords is called a codebook. If the codebook changes with time, then the encoding is said to have memory. Specific to crosstalk-immune coding is the notion of which codewords can follow which. The fundamental rule is Encoder Sender Decoder Receiver b b n channel Figure 1: Model of Communication Chain codeword at time 1: 0010 0000 0100 0100 ↓ ↓ ↓ ↓ codeword at time 2: 0110 1111 0001 0010 valid valid valid invalid Figure 2: Examples of valid and invalid transitions