Insertion Loss Constraint¶
The insertion-loss
statement is used to apply an insertion loss constraint on a
signal topology. This constraint is used by the routing engine when routing a signal
on the board.
This statement is only valid within the pcb-module
context.
Signature¶
; Key-Value Endpoint Variant
insertion-loss(<REF>) = <InsertionLossConstraint>
; Explicit Endpoint Variant
insertion-loss(<REF-1>, <REF-2>) = <InsertionLossConstraint>
The insertion-loss
statement expects two endpoints. Each endpoint is
a ref to a SinglePin
port of a component or module instance. Each of these
ports must be part of a valid topology.
In most applications, the endpoints are the extrema of a signal topology.
The Constraint¶
An instance of InsertionLossConstraint
is applied to the insertion-loss
statement.
defstruct InsertionLossConstraint <: SignalConstraint :
min-loss:Double
max-loss:Double
defn InsertionLossConstraint (loss:Toleranced) -> InsertionLossConstraint:
...
The min-loss
and max-loss
are relative attenuation limits in units of dB. max-loss
must be greater than min-loss
.
This insertion loss features of the signal's route are determined by the DifferentialRoutingStructure
as applied via the structure statement.
Usage¶
pcb-differential-routing-structure diff-90:
...
pcb-bundle usb2-data:
data : diff-pair
pcb-component PIC16F1455:
port bus : usb2-data
...
pcb-component USBMicroB:
port bus : usb2-data
...
pcb-module usb2:
inst MCU : PIC16F1455
inst conn : USBMicroB
; Construct the Topology - Note that these statements
; can operate on the bundle types (in this case `diff-pair`)
net (MCU.bus.data, conn.bus.data)
topology-segment(MCU.bus.data, conn.bus.data)
; Insertion Loss constraints require a routing structure application
; to know how to compute the loss metric for each layer and route
; type in a design. See the `structure` statement docs for more info.
structure(...) = diff-90
val max-loss = InsertionLossConstraint(
min-max(0.0, 12.0)
)
; Insertion Loss Constraints are applied on SinglePin ports
; so this requires two statements for a `diff-pair` bundle.
insertion-loss(MCU.bus.data.P => conn.bus.data.P) = max-loss
insertion-loss(MCU.bus.data.N => conn.bus.data.N) = max-loss
; Equivalent Representation
; insertion-loss(MCU.bus.data.P, conn.bus.data.P) = max-loss
; insertion-loss(MCU.bus.data.N, conn.bus.data.N) = max-loss
In this example, the insertion loss is applied to the extrema of
each of the P
and N
signals of the diff-pair
bundle.
Notice that the insertion-loss
statement applies to SinglePin
objects. The JSL library provides tools for applying these primitives
to more complicated Bundle
and PortArray
structures.