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-structureand 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 are found. The implementer of a new
constraints type is responsible for implementing 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 thesrcanddstas 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-Constraintobject.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-Constraintobject.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