# Differential Pairs

Generates length and impedance-controlled differential pairs for high-speed digital signals.

{% hint style="warning" %}
**Differential Pair Routing Limitations**

Differential pair routing has the following limitations. We're 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 **avoids 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 are not yet able to do co-planar waveguide.
   {% endhint %}

### Automatic Detection

Nets with specific attributes will be automatically classified as differential pairs. The rules for this classification are:

* Nets must be in `differentialpair` or synonymous net class (`75ohm` etc)
* Net names must end in a set of supported paired suffixes that include any of the following:

<table><thead><tr><th width="120.1015625">Suffix</th><th width="178.6796875">Description</th><th>Example</th></tr></thead><tbody><tr><td><code>+</code> / <code>–</code> </td><td>Plus / Minus</td><td><code>TX+</code> and <code>TX-</code></td></tr><tr><td><code>A</code> / <code>B</code></td><td>A / B</td><td><code>SSTXA</code> and <code>SSTXB</code></td></tr><tr><td><code>P</code> / <code>M</code></td><td>Plus / Minus</td><td><code>RFoutP</code> and <code>RFoutM</code> (last character)<br>​<code>USB_DPX</code> and <code>USB_DMX</code> (second-to-last character)</td></tr><tr><td><code>P</code> / <code>N</code></td><td>Positive / Negative</td><td><code>DP</code> and <code>DN</code></td></tr><tr><td><code>t</code> / <code>c</code></td><td>True / Complement</td><td><code>ddr0_dqs_t</code> and <code>ddr0_dqs_c</code></td></tr></tbody></table>

{% hint style="info" %}
**Avoiding Power Nets**\
Quilter will not interpret net names that start with `V` as a differential pair to avoid confusion with power net names
{% endhint %}

### Recommended Patterns

Quilter starts by searching for accepted net classes, so make sure your pairs are part of an accepted net class. It then filters out net pairs ending with P and N to eliminate any single-ended impedance nets.&#x20;

**Pairs with inline resistors or capacitors**

Differential pairs with resistors or capacitors in series will be detected separately by their net names and displayed in the UI as two separate differential pairs. Don't worry, though - these are combined during compilation.

### Constraint Details

<figure><img src="https://1761213452-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FL9R6Vsa5jGn27oTws0tG%2Fuploads%2FbqJCZNvIhMsX5GEKFC4l%2Fimage.png?alt=media&#x26;token=b4686236-ad5c-48b3-a8db-eedf06367402" alt=""><figcaption></figcaption></figure>

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

For each differential pair, you must specify:

* Positive paired net name
* Negative paired net name
* Target differential impedance
* Associated single-ended impedance
* Carrier frequency (in GHz)

Quilter uses this information to determine the appropriate trace width 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 clicking the `Remove` button on the row for that differential pair.

{% hint style="info" %}
**Supported differential impedance values**\
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.
{% endhint %}

### Physics Rule Checks

The PRCs that validate this constraint after compilation are:

**Length Mismatch** evaluates the difference in overall trace length between the two either two nets or the trace path between two pins in separate nets

**Uncoupled Spacing** calculates the maximum trace length in which the differential pair is uncoupled. The nominal spacing is determined based on desired differential impedance and the specific stackup. A differential pair trace segment is considered “uncoupled” if it’s projected distance from the other trace in the other net is outside of a tolerance of 10% when compared to the nominal spacing.

**Ground Plane Overlap** determines if the ground plane below net traces overlaps at all relevant points.

### FAQs

<details>

<summary>What is the highest frequency Quilter can handle?</summary>

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

</details>
