Skip to main content
All CollectionsConstraints
Differential pairs
Differential pairs

Use differential pair constraints to enable impedance-controlled routing for signals like USB, CAN, and HDMI

Updated over a week ago

⚠️ Note

Differential pair routing has the following initial limitations. We're already working to expand these constraints to enable the development of more sophisticated designs.

  1. Quilter cannot currently route differential pairs with multiple receivers ("multi-drop" or "fly-by" pairs). These will be detected but automatically ignored.

  2. Quilter cannot route differential pairs on 2-layer stack-ups to ensure they are always routed on top of a ground plane. We always route differential pairs as microstrip and can't yet do co-planar waveguide.

  3. Quilter cannot currently route differential pairs that transition layers. We can route on top and bottom signal layers but can't route pairs that travel through vias. Also coming soon!

What is a differential pair?

A differential pair consists of two traces that carry equal and opposite signals. Differential pairs are typically used to ensure adequate signal performance when routing digital communication protocols like USB, HDMI, and CAN.

To optimize for signal integrity and prevent electromagnetic interference (EMI), differential pairs are routed with:

  • Equal lengths to ensure signals arrive simultaneously

  • Controlled impedance to minimize crosstalk, prevent signal degradation, and reduce EMI

  • Consistent spacing to maintain specified differential impedance

Quilter supports automatic detection and routing of differential pairs as a dedicated constraint type.

How do I create differential pair constraints?

Quilter automatically detects differential pairs in your design by looking at net names with paired suffixes, such as +/-, A/B, P/M, P/N, and T/C, with optional additional characters.

Here's a complete list of the conventions Quilter can use to detect differential pairs.

Prefix

Description

Example

+ /

Plus / Minus

TX+ and TX-

A / B

A / B

SSTXA and SSTXB

P / M

Plus / Minus

RFoutP and RFoutM (last character)
USB_DPX and USB_DMX (second-to-last character)

P / N

Positive / Negative

DP and DN

t / c

True / Complement

ddr0_dqs_t and ddr0_dqs_c

Note: Quilter will not interpret net names that start with V as a differential pair to avoid confusion with power net names

If you'd like to add a differential pair constraint to your Quilter job, please label the corresponding net names using one of the above naming conventions.

Reviewing/approving differential pair constraints

When Quilter detects a potential differential pair, it presents it for validation as part of the "Impedance Control" section of the "Circuit Comprehension" step of job creation.

For each differential pair, you can specify:

  • Differential / single-ended impedance

  • Carrier frequency

Quilter uses this information to determine the appropriate trace with and spacing requirements for the specific stack-up that Quilter is using to generate your PCB layout.

If Quilter has incorrectly identified a differential pair, you can ignore it by toggling the "ignore" pill on the right of that differential pair.

How does Quilter calculate trace width/spacing rules for differential pairs?

Differential pair trace widths and spacings are calculated to meet the target impedance requirements using a 2D quasi-static field solver that considers each candidate's unique stack-up.

Note: Differential/single-ended impedances are currently limited to 100Ω differential (50Ω single-ended) and 85Ω differential (42.5Ω single-ended). We plan to add support for fully customized differential and single-ended impedance requirements shortly.

We utilize a standard 10% tolerance for differential impedance requirements and intend to expose user-definable tolerances for differential impedance calculations in the future.

FAQs

What is the highest frequency Quilter can handle?

Quilter's impedance control calculations are accurate and recommended for signals up to 6GHz.

Did this answer your question?