Parent page: PCB Layout & High Speed Design
A differential signaling system is one where a signal is transmitted down a pair of tightly coupled carriers, one of these carrying the signal, the other carrying an equal but opposite image of the signal. Differential signaling was developed to cater for situations where the logic reference ground of the signal source could not be well connected to the logic reference ground of the load. Differential signaling is inherently immune to common mode electrical noise, which is the most common interference artifact present in an electronic product. Another major advantage of differential signaling is that it minimizes electromagnetic interference (EMI) generated from the signal pair.
Differential pair PCB routing is a design technique employed to create a balanced transmission system able to carry differential (equal and opposite) signals across a printed circuit board. Typically this differential routing will interface to an external differential transmission system, such as a connector and cable.
It is important to note that while the coupling ratio achieved in a twisted pair differential cable may be better than 99%, the coupling achieved in differential pair routing will typically be less than 50%. Current expert opinion is that the PCB routing task is not to try to ensure a specific differential impedance is achieved, rather, to focus on ensuring the differential signal arrives in good condition at the target component as it travels from the external cabling.
According to Lee Ritchey, a noted industry high-speed PCB design expert, successful differential signaling requires:
Differential pairs are defined on the schematic by placing a Differential Pair directive (Place » Directives) on each of the nets in the pair. Note that the net pair must be named with net label suffixes of _N and _P.
Differential pair definitions are transferred to the PCB during design synchronization.
If there are a large number of pairs to be defined, an alternate approach is to also place a Blanket directive. This allows you to apply directives to multiple nets that are under the blanket (the software detects nets whose Net Label hotspot is within the blanket boundary). The blanket is then tagged by a single Differential Pair directive, as shown in the image below.
The image also shows that as well as directing that the contained nets be defined as differential pair members (via the presence of the Differential Pair directive), the directive also instructs all contained nets to become members of the Net Class
RocketIO, the pairs to become members of the Differential Pair Class
ROCKET_IO_LINES, and also to create a Differential Pair Routing rule. Because there is a Net Class specified in the same Differential Pair directive, in the PCB editor this rule will be scoped to target the
RocketIO Net Class when you transfer the design to the PCB editor.
If you have placed Differential Pair directives on nets in the schematic, the default project options settings will result in the differential pairs members being created on the PCB. The following options in the Options for PCB Project dialog are used to configure this:
Differential pair definitions are viewed and managed in the PCB panel set to Differential Pairs Editor. The image below shows the pairs that belong to the Differential Pair Class
V_RX0 is highlighted; the nets in this pair are
V_RX0_P. The - and + displayed next to each member's net name is a system flag indicating if it is the positive or negative member of the pair.
Differential pairs can be defined on the schematic and also in the PCB Editor. To create a differential pair object in the PCB editor, click the Add button in the Differential Pairs region of the PCB panel in Differential Pairs Editor mode. In the resulting Differential Pair dialog, select existing nets for both the positive and negative nets, give the pair a name then click OK. Note that any two nets can be chosen as the differential pair members when they are defined in the PCB editor.
Often there is more than one differential pair that needs to be targeted by a design rule. In this situation, you can define classes of differential pairs, clustering them into logical groups. Classes are defined in the Object Class Explorer dialog (Design » Classes).
Main article: Defining High Speed Signal Paths with xSignals
If your differential pairs have series components in the signal path, you might find it worthwhile to create xSignals. An xSignal is a designer-defined signal path between two nodes. They can be two nodes within the same net or they can be two nodes in different nets. Using an xSignal, you can define the signal path so that it includes the net on either side of a series component. Route length calculations for xSignals include the length of the path through the series component, as shown by the thin line that is displayed when an xSignal is selected in the xSignals mode of the PCB panel.
To interactively route a differential pair, create and configure the following two design rules in the PCB Rules and Constraints Editor dialog (Design » Rules):
InDifferentialPairClass('All Differential Pairs'). Note that the Min/Preferred/Max Gap settings can be used during routing but not during design rule checking. During design rule checking the distance between the nets in a pair is tested by the applicable Electrical Clearance design rule, as explained in the highlight box below.
InDifferentialPair, and select the appropriate object types In the constraints region of the dialog, as shown below.
The scope of the design rule defines the set of objects to which you want the rule applied. Since a differential pair is an object, you can use queries like the following examples:
Click the Rule Wizard button below the Nets region in the PCB panel in Differential Pairs Editor mode to open the Differential Pair Rule Wizard to walk you through the process of setting the required design rules. Note that the scope used for the created rules will depend on what was selected when the Rule Wizard button was clicked. If one pair was selected, the rules will target the nets in that pair, but if a differential pair class was selected, then the rules will target the nets and all pairs in that class.
Related article: Interactive Routing
Differential pairs are routed as a pair - that is, you route two nets simultaneously. To route a differential pair, select Interactive Differential Pair Routing from the Route menu. You will be prompted to select one of the nets in the pair; click on either to start routing. The video below shows a differential pair being routed.
During differential pair routing you can perform the following functions:
Main article: Post-Route Glossing and Retracing
The PCB editor includes powerful tools for improving the quality of existing routing. These tools are known as Glossing and Retracing and both are available in the Route menu.
The animation in the previous section, Routing a Differential Pair, includes a simple demonstration of glossing with the Gloss Effort (Routed) set to
Selection is a core activity in all areas of the design process, including working with existing routing. Whether you're about to gloss or you want to delete some routing, the routes need to be selected first.
In the PCB editor, selection can either be objects that are within the selection rectangle or touching the selection rectangle. This is controlled by the direction you move the mouse as you draw the selection rectangle:
|Select Within - click and drag a blue rectangle from left to right to select all visible, unlocked objects that are completely within the selection rectangle.|
|Select Touching - click and drag a green rectangle from right to left to select all visible, unlocked objects that touch the selection rectangle.|
A common situation is when you need to select many objects that are touching, for example, the track segments in a routed net, or the connection lines in an unrouted net. It is relatively easy to select a set of track segments that run parallel to each other using the Select Touching technique just described, however, interactively selecting entire routes can be difficult.
This can easily be achieved by selecting one or more track segments, then extending the selection to include touching track segments. This is done using the Tab key, as demonstrated in the video below.
Main article: Modifying the Routing
During routing there will be many instances where you need to change some of the existing routing, for example, you might not be happy with the pad exits and you want to re-shape them (as shown in the video below). While you can change the existing routing using a drafting type approach of clicking and dragging track segments, it is often easier to simply re-route.
To do this, select the Route » Interactive Differential Pair Routing command, then click anywhere on the existing routing. Proceed to route the new path, coming back to meet the existing routing where required. This will create a loop between the old path and the new path. When you right-click or press Esc to terminate the route, the redundant segments are automatically removed, including any redundant vias. Differential pair routing is slightly different from single net routing. Single net routing can be configured so that the last segment is hollow (the look-ahead segment); this segment is not placed when you click. Differential pair routing does not include look-ahead segments, so when you click you will place all visible segments. Position the cursor to ensure that there are no redundant segments.
If you are adjusting differential pairs by manually dragging track segments, you can either push one pair member with the other or drag each independently.
PCB designers can spend a lot of time adjusting the routing, perhaps due to a late design change, or to achieve completion of their design. This can mean pushing and shoving existing routing, dragging vias, and nudging components.
Complimenting the support for glossing of neighbor routes, via dragging is also supported. Via dragging supports Neighbor Glossing, configured through the Interactive Via Dragging mode of the PCB editor's Properties panel. Press Tab during via dragging to access the panel and adjust the settings.
To recognize the members in a differential pair, the concept of Coupling is used. When the software recognizes objects that belong to a differential pair it will attempt to drag the pair's partner track or via if the Keep Coupled option is enabled in the Interactive Sliding or the Interactive Via Dragging modes of the Properties panel.
To confirm that the partner objects are coupled, the software checks that the objects:
2 * Preferred Gap
Have you ever been stuck during routing, wondering why the route won't fit through that gap? This frustration is even more likely during differential pair routing. Altium NEXUS includes a feature to help with this, called dynamic display of clearance boundaries. When enabled, the no-go clearance area defined by the existing objects + the applicable clearance rule is displayed as shaded polygons within a local viewing circle, as shown in the video below. Press Ctrl+W to toggle the feature on and off.
The display area can be restricted to a region around the current cursor location, or it can be the entire screen. This is controlled by the Reduce Clearance Display Area sub-option on the PCB Editor - Interactive Routing page of the Preferences dialog.
Differential pairs are often used in high-speed designs due to their inherent immunity to noise, and the fact that they simplify the challenge of providing a high-quality return path for the signals. However, like single-sided signals, their lengths must be managed to ensure the signal timing requirements are met.
During differential pair routing, the length of each of the two nets in the pair is displayed on the Status bar, and also in the Heads-up display (Shift+H to toggle on/off). The length values displayed in the PCB panel are updated when you drop out of routing a pair.
Length and Matched Length design rules can be defined to ensure that the flight time and skew timing requirements are met. As well as being used during a design rule check (DRC), these rules are also used during interactive length tuning.
The Matched Length design rule detects the longest pair targeted by the rule scope and uses the Average Length value of that pair as the reference to compare the other targeted pairs, requiring their lengths to be within + or - the Tolerance defined in the rule. The Average Length value is shown in the Differential Pairs Editor mode of the PCB panel.
It is likely that you will have matched length requirements between the pairs, and also within each pair.
To manage this, create suitable Matched Length design rules:
Main article: Length Tuning
The length of pairs, and the nets within each pair, are tuned using the two length tuning commands. To tune the lengths:
From the applicable Length and/or Matched Length design rules
From a user-selected routed diff pair
Manually, enter the value in the Target Length field
The video shows pair lengths being tuned against other pairs (based on xSignal lengths) by adding length tuning accordions. The shorter member of each pair is then length-tuned against the longer member of that pair. The video then shows how pairs can be moved and reshaped interactively, how a tuning accordion can be deleted, and how a new accordion can be shaped during placement using shortcuts.