Skip to content

jsl/si/pairs

Package name: jsl/si/pairs

Differential Pair Topologies

This package contains the implementation of tools for working with diff-pair, dual-pair, and lane-pair types.

The idea is that differential pairs are a common transmission line pattern in most high speed designs. These package aims to make working with these structures easier.

Summary

LaneConstraint

Lane-Pair Constraint

Functions

Function Description
LaneConstraint (+ 1) Construct a Lane Constraint with a universal constraint for both Tx/Rx pairs.

General Definitions

Function Description
topo-pair Construct a chained topology of diff-pair objects including ports, components and modules.
reverse-lane Construct an in-place swap of the TX/RX pairs of a lane-pair bundle

Definitions

LaneConstraint

Lane-Pair Constraint

public defstruct LaneConstraint <: SI-Constraint
    pair-cst: SI-Constraint|[SI-Constraint, SI-Constraint]

  • pair-cst: SI-Constraint|[SI-Constraint, SI-Constraint] - Defines the constraint used for the lanes. User can either provide a single constraint object that will be applied to both the TX and RX pairs or separate constraint objects for each.

    In the tuple variant, the order is important and the constraints are ordered [TX, RX]

This type is used to define the SI-Constraints for a lane-pair bundle, typically used for things like USB3 superspeed lanes, 10G ethernet lanes, etc.

Functions

LaneConstraint

Construct a Lane Constraint with a universal constraint for both Tx/Rx pairs.

public defn LaneConstraint (single:SI-Constraint) -> LaneConstraint

  • Returns LaneConstraint

LaneConstraint

Construct a Lane Constraint with separate Constraints for Each Tx/Rx pair

public defn LaneConstraint (tx:SI-Constraint, rx:SI-Constraint) -> LaneConstraint

  • Returns LaneConstraint

General Definitions

topo-pair

Construct a chained topology of diff-pair objects including ports, components and modules.

public defn topo-pair (pair:KeyValue<JITXObject, JITXObject|KeyValue>)

This function is a generator and must be called from within a pcb-module context.

This function accepts a sequence of KeyValue JITXObjects. Each key or value may be:

  1. Bundle port instance - diff-pair, dual-pair or lane-pair
  2. An Instance - ie an instance of a pcb-module or pcb-component
  3. Another KeyValue (typically only in the value). Currently does not handle KeyValue as the key

If we encounter an instance - then we will use a require statement to extract out the diff-pair interfaces needed to construct our chained topology of diff-pairs.

This function is recursive. Hence, the KeyValue sequence should not include a cycle.

The first and last elements of the chained topology are expected to be ports of type diff-pair. Any other type of bundle is an error.

inst ESD : ESD-protector
inst block-cap : dp-coupler(...)
topo-pair(src => block-cap => ESD => dst)
  • These components provide supports statements for either dual-pair or lane-pair

  • Notice that the topology chain references the components directly. topo-pair

    will use require statements to extract out the necessary interfaces and create topology connections.

reverse-lane

Construct an in-place swap of the TX/RX pairs of a lane-pair bundle

public defn reverse-lane (p:JITXObject)

  • p: JITXObject - Port of type lane-pair or similar that we wish to swap the TX/RX pair on.

This function is a generator and must be called from within a pcb-module context.

Related Packages

Forwarded by package: jsl/si