jsl/si/constraints¶
Package name: jsl/si/constraints
Summary¶
Data Types¶
DiffPair-Constraint¶
Diff-Pair Signal Integrity Constraint
Functions¶
Function | Description |
---|---|
diffpair-constrain | Constrain Interface for DiffPair-Constraint |
DiffPair-Constraint | Constructor for a Differential Pair Constraint object |
SI-Constraint¶
Base type for the Signal Integrity Constraint object
Functions¶
Function | Description |
---|---|
constrain-topology (+ 3) | Construct and Constrain a Signal Topology |
Definitions¶
DiffPair-Constraint¶
Diff-Pair Signal Integrity Constraint
public defstruct DiffPair-Constraint <: SI-Constraint :
loss: Double
route-struct: DifferentialRoutingStructure
skew: Toleranced
-
loss: Double
- Max Loss Limit in dB -
route-struct: DifferentialRoutingStructure
- Differential Routing Structure for defining the geometry of the diff-pair The user will define apcb-differential-routing-structure
and then pass that by ref to this field. This will define how this differential pair realizes in the board view. -
skew: Toleranced
- Intra-pair Timing Skew Limit in Seconds This value is typically something like0 +/- (10.0e-12)
This is a basic concrete implementation of a SI-Constraint
. It
is typical in diff-pairs to need to define only the
skew and the loss. There are typically no inter-pair timing
constraints for things like USB3 or DisplayPort.
Functions¶
diffpair-constrain¶
Constrain Interface for DiffPair-Constraint
public defn diffpair-constrain (cst:DiffPair-Constraint, src:JITXObject, dst:JITXObject) -> False
- Returns
False
Making this function public makes it easier to derive from DiffPair-Constraint and override it's constrain method.
References¶
DiffPair-Constraint¶
Constructor for a Differential Pair Constraint object
public defn DiffPair-Constraint ( -- skew:Toleranced, loss:Double, route-struct:DifferentialRoutingStructure) -> DiffPair-Constraint
- Returns
DiffPair-Constraint
SI-Constraint¶
Base type for the Signal Integrity Constraint object
public deftype SI-Constraint
The user is expected to derive from this type and
implement the constrain
function according to their
needs.
Multis¶
constrain¶
Add SI constraints to the passed port endpoints.
public defmulti constrain (cst:SI-Constraint, src:JITXObject, dst:JITXObject) -> False
cst: SI-Constraint
- The constraint object with state infosrc: JITXObject
- One endpoint port of the topology to constrain.dst: JITXObject
- Other endpoint port of the topology to constrain. This port must match in type withsrc
- Returns
False
Derived types must implement this function and provide the necessary constraint functions for their particular application.
When constraining the topology, the find-signal-end
function will be used on the src
and dst
so that the proper
endpoints of the topology for found. The implementer of a new
constraints
type is responsible for implmenting this.
Functions¶
constrain-topology¶
Construct and Constrain a Signal Topology
public defn constrain-topology (body, src:JITXObject, dst:JITXObject, cst:SI-Constraint)
body: false
- Function that will construct the topology. This function is passed thesrc
anddst
as arguments. The user is responsible for constructing the topology between the source and destination.src: JITXObject
- One endpoint port of the topology. This can be any type of port (SinglePin, Bundle, or PortArray) but it must match with the expected port type for theSI-Constraint
object.dst: JITXObject
- The other endpoint port of the topology. Must match in type withsrc
.cst: SI-Constraint
- Constraint object that defines the features of the signals defined by the topology.
This function is used with the within
clause to allow
the user to construct the topology inside the body of the
within
clause. This function then handles setting the
constraints on the diff-pair channel after the topology
is constructed via the SI-Constraint
object.
The topology construction uses the src
and dst
endpoints
directly.
inst ESD : ESD-protector
within [src, dst] = constrain-topology(usb-conn.data, MCU.data, usb2-constraints):
require prot:dual-pair from ESD
topo-net(src => port.A => prot.B => dst)
constrain-topology¶
Constrain a trivial topology
public defn constrain-topology (src:JITXObject, dst:JITXObject, cst:SI-Constraint)
src: JITXObject
- One endpoint port of the topology. This can be any type of port (SinglePin, Bundle, or PortArray) but it must match with the expected port type for theSI-Constraint
object.dst: JITXObject
- The other endpoint port of the topology. Must match in type withsrc
.cst: SI-Constraint
- Constraint object that defines the features of the signals defined by the topology.
This implements a point-to-point topology and applies the constraints object.
This function does not get used by a within
clause and is just a pure function.
constrain-topology¶
Construct and Constrain a Topology
public defn constrain-topology (body, dp:KeyValue<JITXObject, JITXObject>, cst:SI-Constraint)
Similar to the other constrain-topology
function except that the src
and dst
arguments are passed as a KeyValue
instead of individually.
This function typically gets used via a within
clause.
constrain-topology¶
Constrain a Trivial Topology
public defn constrain-topology (dp:KeyValue<JITXObject, JITXObject>, cst:SI-Constraint)
This implements a point-to-point topology and applies the constraints object.
This function does not get used by a within
clause and is just a pure function.
This function is similar to the other constrain-topology
definition for trivial
topologies except that the src
and dst
are encoded as a KeyValue
object.
Related Packages¶
Forwarded by package: jsl/si