Altium Designer Documentation

Differential Pair Routing

Modified by Phil Loughhead on Jan 7, 2020

Parent article: The Routing

Explanatory diagram showing how differential signaling works

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.

Example of differential routing on a PCB

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:

  • To set each of the routing signal impedances to half the incoming differential cable impedance.
  • That each of the two signal lines is properly terminated in its own characteristic impedance at the receiver end.
  • That the two lines should be of equal length, to within tolerances of the logic family and the circuit frequency used in the design. The focus should be on preserving the timing; match the lengths close enough to satisfy the skew budget of the design. Example length tolerances include: high-speed USB, length mismatch should be no greater than 150 mils; DDR2 clocks need to be matched to within 25 mils.
  • Use the benefit of routing the two signals side-by-side to help achieve good quality routing of matched lengths. Where required, it is acceptable to separate to route around obstacles.
  • Layer changes are acceptable as long as the signal impedances are maintained.

For more information, refer to the article Differential Signaling Doesn't Require Differential Impedance, by Lee W. Ritchey, available from https://speedingedge.com/home/related-articles/.

Use this link to learn about High Speed Design in Altium Designer.

Use this link to learn about Controlled Impedance Routing in Altium Designer.

Defining the Differential Pairs on the Schematic

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. Placing a Differential Pair directive on each pair net applies a parameter to the net, which has a parameter Name of DifferentialPair and a Value of True.

Differential pair definitions are transferred to the PCB during design synchronization.

Example of Differential Pair directives on a schematic Place directives on the schematic to define differential pairs.

To apply directives to a net-type object, place a Parameter Set directive object so that it touches the net object as shown above. It is the presence of the design rule and/or class in that Parameter Set object that the software detects then outputs to the PCB during design synchronization.

Learn more about the Parameter Set object

Using a Blanket Directive to Identify Multiple Pairs

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 RIO_Nets, 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.

The automatic PCB rule creation feature does not support assigning the Differential Pair Routing rule to the created Differential Pair Class. It does support automatically assigning the nets to a Net Class though, if one is included in the Differential Pair directive. If this is done a single Differential Pair Routing rule will be created in the PCB editor targeting this Net Class. The rule can then be edited to target the Differential Pair class instead. If the Net Class is not included, individual Differential Pair Routing rules will be created for every differential pair under the blanket.

Example of how a Blanket directive can be used with a Differential Pair directive to target multiple nets

A Blanket can be used to configure multiple nets as differential pair members, create a Net Class of these nets, and apply a Differential Pair Routing pcdesign rule.

Transferring the Differential Pairs 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:

  • Comparator tab - Extra Differential Pairs (then the Different Differential Pair checks for subsequent updates, and the Rules options if you are also creating/changing design rules)
  • ECO Generation tab - Add Differential Pair (then the Change Differential Pair checks for subsequent updates, and the Rules options if you are also creating/changing design rules)
  • Class Generation tab - Generate Net Classes (if you are also creating a Net Class to use to scope a PCB Differential Pair Routing rule)

Viewing and Managing Differential Pairs on the PCB

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 ROCKET_IO_LINES. Pair V_RX0 is highlighted; the nets in this pair are V_RX0_N and V_RX0_P. The - and + displayed next to each member net name is a system flag indicating if it is the positive or negative member of the pair.

PCB panel in Differential Pair Editor mode Differential pairs can be viewed and managed in the Differential Pair Editor. 
Right-click in the Differential Pair Classes region to create a new class.

Defining Differential Pairs on the PCB

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.

Differential Pair dialog, used in the PCB editor to define a differential pair Quickly create pairs from the named nets.

If you are pairing nets that have a consistent naming scheme (i.e. they have a common prefix and a consistent positive/negative suffix, for example, TX0_P and TX0_N), you can use the Create Differential Pairs From Nets dialog. Click the Create From Nets button in the PCB panel in Differential Pairs Editor mode to open the dialog. Use the filters at the top of the dialog to show net pairs based on existing net names.

Defining a Differential Pair Class

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).

PCB editor Object Class Explorer, use this to create Differential Pair ClassesCreate Differential Pair Classes to simplify the process of creating design rules that apply to the pairs.

You also can create a new differential pair class by right-clicking in the Differential Pair Classes region of the PCB panel in Differential Pairs Editor mode.

Using xSignals with Differential Pairs

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.

xSignals can be used with differential pairsThese differential pairs have been defined as xSignals; the route length includes the series component. 

xSignals can be used to scope design rules including the Matched Length and Length rules.

Learn more about Defining High Speed Signal Paths with xSignals

Applicable Design Rules

To interactively route a differential pair, create and configure the following two design rules in the PCB Rules and Constraints Editor dialog (Design » Rules):

  • Differential Pairs Routing - defines the routing width of the nets in the pair, the separation (gap) between the nets in the pair, and the overall uncoupled length (the pair becomes uncoupled when the gap is wider than the Max Gap setting). Set the scope of this rule to target objects that are a differential pair, e.g., IsDifferentialPair or 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.

  • Electrical Clearance - defines the minimum clearance between any two primitive objects (e.g., pad-pad, track-pad) on either any net, the same net, or between different nets. Set the scope of this rule to target objects that are members of a differential pair, e.g., InDifferentialPair, and select the appropriate object-types In the constraints region of the dialog, as shown below.

Important Note: As you route a differential pair, the routed nets in the pair will be separated by the current Min/Preferred/Max Gap setting defined in the applicable Differential Pair Routing design rule (press Shift+6 to cycle through the Gap modes during routing, check the Status bar to see which mode is being applied). However, during design rule checking, all electrical objects will be tested using the applicable Electrical Clearance design rule. If the nets in the pair are placed closer together than the minimum setting allowed by the applicable Electrical Clearance design rule, you will need to add an additional Electrical Clearance design rule targeting the differential pairs, allowing them to have a clearance equal to the Diff Pair Routing Gap setting. This rule should also have the setting that defines the Net types to be tested set to Same Differential Pair, as shown in this image.

Setting the Scope of the Design Rules

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:

  • InAnyDifferentialPair - is the object in any differential pair.
  • InDifferentialPair('D_V_TX1') - targets both nets in the differential pair named D_V_TX1.
  • InDifferentialPairClass('ROCKET_IO_LINES') - targets all nets in all pairs belonging to the differential pair class called ROCKET_IO_LINES.
  • (IsDifferentialPair And (Name = 'D_V_TX1')) - targets the differential pair object that has a name of D_V_TX1.
  • (IsDifferentialPair And (Name Like 'D*')) - targets all differential pair objects whose name starts with the letter D.

Using the Differential Pair Rule Wizard to Define the Rules

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.

Routing a Differential Pair

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:

  • Shift+R to cycle through the conflict resolutions routing modes (Walkaround, Push, Hug and Push, Stop at First Obstacle, Ignore Obstacles)
  • Shift+Spacebar to cycle through the available corner styles (45 degree corner, 45 degree arc in corner, 90 degree corner, 90 degree arc in corner)
  • Press 3 to cycle possible diff pair routing widths (User Choice, Rule Min, Rule Preferred, Rule Max)
  • Press Shift+6 to cycle possible diff pair gaps (Rule Min, Rule Preferred, Rule Max)
  • To switch layers and insert vias: Press the * key on the numeric keypad; or use the Ctrl+Shift+Wheel Scroll shortcut combination; then
    • Press 4 to cycle possible via sizes (User Choice, Rule Min, Rule Preferred, Rule Max)
    • Press 5 to cycle possible via patterns during a layer change
    • Press 6 to cycle possible via stacks, or press 8 to display a list to select from (learn more about controlling the vias placed during interactive routing)
  • Shift+F1 to display all of the available in-command shortcuts
  • In the arc in corner modes, press the "," key to decrease the maximum arc radius, and the "." key to increase the maximum arc radius. The arc size can be changed interactively by moving the cursor. The setting defines the maximum allowable arc radius, which is displayed on the Status bar when you are routing.

Many of the settings, such as the current routing mode, width, gap and via size, are displayed on the Status bar (shown below) or the Heads Up display (Shift+H to toggle it on/off).

Many of the differential pair routing behaviors are the same as single-net interactive routing.

Learn more about Interactive Routing

Improving the Quality of the Routing

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.

  • Gloss - focuses on improving the trace geometry, attempting to reduce the number of corners and shorten the overall route length. Gloss preserves the existing trace width and differential pair gap. Glossing respects the current Routing Gloss Effort setting configured in the PCB - Interactive Routing page of the Preferences dialog ( show image).
  • Retrace - assumes the overall geometry is satisfactory, focusing instead on verifying that the routing meets the design rules. Where Gloss preserves the existing trace width and pair gap, Retrace changes them to Preferred. Retrace is an excellent tool to use when a Differential Pair Routing design rule has changed, and that change needs to be applied to existing routing.

The animation in the previous section, Routing a Differential Pair, includes a simple demonstration of glossing with the Routing Gloss Effort set to Strong.

Learn more about Post-Route Glossing and Retracing

Strategies for Selecting the Routing

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.

Select Within or Select Touching

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:

Left Mouse Button click and drag from left to right, to select objects that are completely within 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.
Left Mouse Button click and drag from right to left, to select objects that are touching 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.

Extending the Selection

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.

To restrict the selection process to only select connection lines, hold the Alt key as you click or click and drag.

Demonstration of Routing Selection Techniques

Demonstration of the selection techniques.

To learn more about the various selection strategies, read the Post-Route Glossing and Retracing page.

Interactively Modifying the Differential Pair Routing

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 with 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.  

Using the loop removal feature to interactively re-route a differential pair - re-routing along a new path, the old routing loop is automatically removed.
Pairs can also be modified by dragging one route so that it pushes the other (Shift+R during dragging to cycle the mode).

To learn more, refer to Modifying the Routing.

Displaying the Available Clearance

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 Designer 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.

Simple demonstration of enabling the Clearance Display mode while routing a differential pairDynamically display the clearance boundaries during differential pair routing.

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.

Matching the Lengths of Differential Pairs

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.

Use the Heads Up display to check the route lengths during differential pair routingThe current route length of each net in the pair is displayed in the Heads-up display (Shift+H to toggle on/off).

The PCB panel is used to examine objects in the workspace, and includes modes for examining Nets, Differential Pairs and xSignals, amongst others. The panel includes details about each net / differential pair / xSignal, including the signal length and the delay - right-click in each section of the panel to display a context menu of commands for that section. For example, when the panel is in Nets mode, right-click in the Nets section of the panel and use the Columns sub-menu to enable or disable details such as Signal Length and Delay. When there are Length and / or Matched Length rules applied, the Signal Length column for nets that fail the design rule will highlight in orange (less than target length) or red (exceeds target length).

Use the PCB panel to monitor the progress of length matchingUse the PCB panel to monitor the progress of length matching.

Learn more about the PCB panel

Matched Length and Length Design Rules

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.

Length and Matched Length design rules can be scoped by Length Units, or Delay Units. If the rules are scoped by delay, the Length Tuning Gauge will also display using delay.

Within-Pair and Between Pair Design Rules

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:

  1. Define a Matched Length design rule that applies across (between) the pairs (achieved by selecting the Group Matched Lengths option). Scope the rule to apply to the required pairs (or xSignals), as shown in the image below.

Matched Length design rule, configured to check the lengths between targetted pairsCreate a matched length rule to define the length requirements between the differential pairs, or in this example, between the xSignals.

  1. Define another Matched Length design rule that applies within the pair (achieved by selecting the Within Differential Pair Length option). This rule ensures the lengths of the two nets within each pair are within tolerance. Note that this rule must be scoped using a Where the Object Matches setting that targets differential pairs, as shown below. This rule should have a higher priority than the between pairs rule.

Matched Length design rule, configured to check the lengths within each targetted pairCreate a second matched length rule to define the length requirements within the pairs.

Length Tuning a Differential Pair

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:

  1. The length of a differential pair can be accurately tuned using the Interactive Diff Pair Length Tuning command on the Route menu. During length tuning, you can use shortcuts to interactively adjust the accordion style and size, or press Tab to open the Properties panel in Differential Pair Length Tuning mode. In the panel, the target length is defined:
    • 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 length of a differential pair can be interactively tuned to match the lengths of other pairs

  1. To tune a net within a pair, use the Interactive Length Tuning command on the Route menu. If you attempt to tune the longer net in the pair, the message Target Length Shorter than Old Length will appear.

The Length Tuning Gauge is used to check that the tuned length is within the rule requirements Tune the lengths of differential pairs first, then tune the length of the shorter net within a pair.

If you do not get tuning accordions appearing during length tuning it is most likely that the current settings are not suitable for the space available to place an accordion. If this occurs during tuning, press Tab to display the Properties panel in Differential Pair Length Tuning mode, and check that the settings in the Pattern section of the panel are sensible. For example:

  • The Max Amplitude value may be too large
  • When the Style is Mitered Arcs, the Miter percentage may be too great to form an arc for the current Amplitude and Space
  • The Style may be set to Rounded, which cannot be used for differential pairs

A good option is to set the Style to Mitered Lines, click the Pause button to resume length tuning and then use the 1 & 2 shortcuts to interactively adjust the Miter, the 3 & 4 shortcuts to adjust the Space (pitch), and the the , & . shortcuts to adjust the Amplitude. When the tuning is looking how you want it, press the Spacebar to cycle to your preferred Style, Mitered Arcs is a good choice for differential pairs.

Refer to the Length Tuning page to learn more, where you will find a detailed list of the shortcuts that can be used to change the accordion style, amplitude and pitch. The page also explains how the software decides which rule settings to obey when there are overlapping settings in the Length and Matched Length design rules.

Demonstration of Length Tuning and Modifying the Accordions

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.

The length of a differential pair can be tuned by adding length tuning accordions. The accordion is an object that can be moved, reshaped and deleted.

See Also

## Thanks to Robert Feranec of the FEDEVEL Academy (www.fedevel.com) for the use of the iMX6 Rex development board in images on this page (http://www.imx6rex.com/).

 

 

Found an issue with this document? Highlight the area, then use Ctrl+Enter to report it.

Contact Us

Contact our corporate or local offices directly.

You are reporting an issue with the following selected text
and/or image within the active document:
ALTIUM DESIGNER FREE TRIAL
Altium Designer Free Trial
Let’s get started. First off, are you or your organization already using Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

In that case, why do you need an evaluation license?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You actually don’t need an evaluation license for that.

Click the button below to download the latest Altium Designer installer.

Download Altium Designer Installer

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Please fill out the form below to get a quote for a new seat of Altium Designer.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

If you are on Altium Subscription, you don’t need an evaluation license.

If you are not an active Altium Subscription member, please fill out the form below to get your free trial.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Why are you looking to evaluate Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

You came to the right place! Please fill out the form below to get your free trial started.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Great News!

Valid students can get their very own 6-month Altium Designer Student License for FREE! Just fill out the form below to request your Student License today.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

That’s great! Making things is awesome. We have the perfect program for you.

Upverter is a free community-driven platform designed specifically to meet the needs of makers like you.

Click here to give it a try!

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.