Source code for jitxlib.protocols.ethernet.mdi.mdi100base_tx
from __future__ import annotations
from jitx import current
from jitx.common import LanePair
from jitx.si import (
DiffPairConstraint,
DifferentialRoutingStructure,
SignalConstraint,
dataclass,
)
from jitx.toleranced import Toleranced
[docs]
class MDI100BaseTX(LanePair):
[docs]
@dataclass
class Standard:
skew = Toleranced(0, 750e-12)
"Intra pair skew - Allowable delay difference as a `Toleranced` value in Seconds."
loss = 12
"Max allowable power loss limit in dB."
impedance = Toleranced.percent(100, 10)
"The expected differential impedance for the differential pairs in Ohms"
[docs]
class Constraint(SignalConstraint["MDI100BaseTX"]):
diffpair_constraint: DiffPairConstraint
def __init__(
self,
standard: MDI100BaseTX.Standard,
structure: DifferentialRoutingStructure | None = None,
):
if structure is None:
structure = current.substrate.differential_routing_structure(
standard.impedance
)
self.diffpair_constraint = DiffPairConstraint(
skew=standard.skew, loss=standard.loss, structure=structure
)
[docs]
def constrain(self, src: MDI100BaseTX, dst: MDI100BaseTX):
self.diffpair_constraint.constrain(src.TX, dst.TX)
self.diffpair_constraint.constrain(src.RX, dst.RX)