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 theTX
andRX
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:
- Bundle port instance -
diff-pair
,dual-pair
orlane-pair
- An
Instance
- ie an instance of apcb-module
orpcb-component
- Another
KeyValue
(typically only in thevalue
). Currently does not handleKeyValue
as thekey
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 eitherdual-pair
orlane-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 typelane-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