# 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="/files/Gw3vzgKzcRuKg8bwisXy" 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.quilter.ai/physics-constraints/differential-pairs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
