
# IPCB_DifferentialPairsRoutingRule interface

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

```csharp
public interface IPCB_DifferentialPairsRoutingRule : IPCB_Rule
```

**Namespace:** PCB · **Assembly:** Altium.SDK.Interfaces

**Inherits:** [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md) → [IPCB_Rule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md)

**Derived:** [IPCB_DifferentialPairsRoutingRule2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_DifferentialPairsRoutingRule2.md)

## Remarks

Differential pair 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 the objective is to maintain the properties required to ensure the differential signal arrives in good condition at the target component as it travels from the external cabling.

The IPCB_FanoutControl rule determines how BGAs on a PCB document is going to be fanned in respect to vias placement for routing.

This interface defines the minimum clearance between any two primitive objects on a copper layer.

The PrimitivesViolate method checks if two primitives violate the minimum clearance or not.

The Gap property determines the gap size of the track segments.

## Properties

| Property | Type | Access | Description |
| --- | --- | --- | --- |
| [FavoredImpedance](#favoredimpedance) | `double` | get; set |  |
| [ImpedanceDriven](#impedancedriven) | `bool` | get; set |  |
| [MaxGap](#maxgap) | `int` | get; set |  |
| [MaxImpedance](#maximpedance) | `double` | get; set |  |
| [MaxUncoupledLength](#maxuncoupledlength) | `int` | get; set |  |
| [MaxWidth](#maxwidth) | `int` | get; set |  |
| [MinGap](#mingap) | `int` | get; set |  |
| [MinImpedance](#minimpedance) | `double` | get; set |  |
| [MinWidth](#minwidth) | `int` | get; set |  |
| [PreferedGap](#preferedgap) | `int` | get; set |  |
| [PreferedWidth](#preferedwidth) | `int` | get; set |  |

### FavoredImpedance

*No description yet.*

```csharp
double GetState_FavoredImpedance();
void SetState_FavoredImpedance(double argValue);
```

**Type:** `double` · **Access:** read/write

### ImpedanceDriven

*No description yet.*

```csharp
bool GetState_ImpedanceDriven();
void SetState_ImpedanceDriven(bool argValue);
```

**Type:** `bool` · **Access:** read/write

### MaxGap

*No description yet.*

```csharp
int GetState_MaxGap(V7_LayerBase argL);
void SetState_MaxGap(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

### MaxImpedance

*No description yet.*

```csharp
double GetState_MaxImpedance();
void SetState_MaxImpedance(double argValue);
```

**Type:** `double` · **Access:** read/write

### MaxUncoupledLength

*No description yet.*

```csharp
int GetState_MaxUncoupledLength();
void SetState_MaxUncoupledLength(int argValue);
```

**Type:** `int` · **Access:** read/write

### MaxWidth

*No description yet.*

```csharp
int GetState_MaxWidth(V7_LayerBase argL);
void SetState_MaxWidth(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

### MinGap

*No description yet.*

```csharp
int GetState_MinGap(V7_LayerBase argL);
void SetState_MinGap(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

### MinImpedance

*No description yet.*

```csharp
double GetState_MinImpedance();
void SetState_MinImpedance(double argValue);
```

**Type:** `double` · **Access:** read/write

### MinWidth

*No description yet.*

```csharp
int GetState_MinWidth(V7_LayerBase argL);
void SetState_MinWidth(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

### PreferedGap

*No description yet.*

```csharp
int GetState_PreferedGap(V7_LayerBase argL);
void SetState_PreferedGap(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

### PreferedWidth

*No description yet.*

```csharp
int GetState_PreferedWidth(V7_LayerBase argL);
void SetState_PreferedWidth(V7_LayerBase argL, int argValue);
```

**Type:** `int` · **Access:** read/write · **Index:** `argL` ([V7_LayerBase](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/V7_LayerBase.md))

The accessors are extension methods of `IPCB_DifferentialPairsRoutingRuleHelper` (`using PCB;`).

## Inherited members

- From [IPCB_Rule](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md): [ActualCheck](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck), [ActualCheck_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#actualcheck_1), [CheckBinaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkbinaryscope), [CheckUnaryScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#checkunaryscope), [CollisionExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#collisionexpansion), [Comment](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#comment), [DataSummaryString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#datasummarystring), [DefinedByLogicalDocument](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#definedbylogicaldocument), [DRCEnabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#drcenabled), [Export_ToParameters_1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#export_toparameters_1), [GetWhatsThisHelpString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#getwhatsthishelpstring), [IsUnary](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#isunary), [LayerKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#layerkind), [Name](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#name), [NetScope](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscope), [NetScopeMatches](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#netscopematches), [Priority](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#priority), [RuleKind](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#rulekind), [Scope1Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1expression), [Scope1Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope1includes), [Scope2Expression](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2expression), [Scope2Includes](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scope2includes), [ScopeDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopedescriptorstring), [ScopeKindIsValid](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#scopekindisvalid), [ShortDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#shortdescriptorstring), [ViolationDescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Rule.md#violationdescriptorstring)
- From [IPCB_Primitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md): [AllowGlobalEdit](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#allowglobaledit), [BeginModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#beginmodify), [Board](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#board), [BoundingRectangle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangle), [BoundingRectangleChildren](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectanglechildren), [BoundingRectangleForPainting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforpainting), [BoundingRectangleForSelection](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#boundingrectangleforselection), [CancelModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#cancelmodify), [Component](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#component), [Coordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#coordinate), [DescriptorString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#descriptorstring), [DetailString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#detailstring), [Dimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#dimension), [DrawAsPreview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drawaspreview), [DRCError](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#drcerror), [Enabled](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled), [Enabled_Direct](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_direct), [Enabled_vComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcomponent), [Enabled_vCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vcoordinate), [Enabled_vDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vdimension), [Enabled_vNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vnet), [Enabled_vPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabled_vpolygon), [EnableDraw](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#enabledraw), [EndModify](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#endmodify), [Export_ToParameters](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#export_toparameters), [FlipXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#flipxy), [GraphicallyInvalidate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#graphicallyinvalidate), [Handle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#handle), [Identifier](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#identifier), [InBoard](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inboard), [InComponent](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incomponent), [InCoordinate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#incoordinate), [Index](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#index), [InDimension](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#indimension), [InNet](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#innet), [InPolygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inpolygon), [InSelectionMemory](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#inselectionmemory), [IsAssyTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_bottom), [IsAssyTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isassytestpoint_top), [IsElectricalPrim](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iselectricalprim), [IsFreePrimitive](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#isfreeprimitive), [IsHidden](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ishidden), [IsKeepout](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#iskeepout), [IsPreRoute](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#ispreroute), [IsSaveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#issaveable), [IsTenting](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting), [IsTenting_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_bottom), [IsTenting_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istenting_top), [IsTestPoint_Bottom](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_bottom), [IsTestPoint_Top](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#istestpoint_top), [Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#layer), [MiscFlag1](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag1), [MiscFlag2](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag2), [MiscFlag3](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#miscflag3), [Moveable](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#moveable), [MoveByXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movebyxy), [MoveToXY](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#movetoxy), [Net](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#net), [ObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectid), [ObjectIDString](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#objectidstring), [PadCacheRobotFlag](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#padcacherobotflag), [PasteMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#pastemaskexpansion), [Polygon](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygon), [PolygonOutline](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#polygonoutline), [PowerPlaneClearance](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneclearance), [PowerPlaneConnectStyle](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplaneconnectstyle), [PowerPlaneReliefExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#powerplanereliefexpansion), [Preview](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#preview), [ReliefAirGap](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefairgap), [ReliefConductorWidth](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefconductorwidth), [ReliefEntries](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#reliefentries), [Replicate](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#replicate), [RequiredParamterSpace](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#requiredparamterspace), [RotateBy](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#rotateby), [Selected](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#selected), [SolderMaskExpansion](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#soldermaskexpansion), [SwapLayerPairs](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#swaplayerpairs), [TearDrop](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#teardrop), [UnionIndex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#unionindex), [UniqueId](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid), [UniqueID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#uniqueid-1), [Used](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#used), [UserRouted](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#userrouted), [V7Layer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#v7layer), [ViewableObjectID](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB_Primitive.md#viewableobjectid)
