High-Speed Routing¶
You can follow along with the tutorial in the video above. Below is a written version of the key steps and code for quick reference.
Before Starting
You should have built the design from Tutorial: Power circuits and power layout.
1. Introduction¶
This tutorial demonstrates how to route high-speed signals (specifically Gigabit Ethernet) in JITX. It covers pin swapping, adding ESD diodes inline, specifying a 100 Ω differential structure, checking skew, and automatically inserting length-compensation “bumps.”
2. Resources¶
- Awesome JITX – a collection of shared libraries
- Starting code: JITX Project – Created from the layout tutorial
- Final tutorial code – Reference designs created during this video
- Board View UI Documentation
3. Overview¶
This guide covers:
- Gigabit Ethernet Connectors – how to add RJ45 modules from the library
- Pin Assignment (Swapping) – letting JITX reassign pairs for easier routing
- Substrate & Impedance – specifying a 100 Ω differential structure and checking skew
- Multi-Stage Topology – including ESD diodes in-line
- Length Matching – automatically adding “bumps” to meet Gigabit constraints
4. Add the Ethernet Connectors¶
- Use a parametric library part for RJ45, such as JD0-0001NL from connectors:
inst ethernet-jack : connectors/components/JD0-0001NL/connector[2]
-
This creates two RJ45 connectors, each with integrated magnetics, LED pins, and the MDI (media-dependent interface) for 1000Base-T signals.
-
After compilation, you will see these connectors in your schematic and on the board.
5. Pin Assignment & MDI Bundles¶
5.1 Using “Require” for MDI¶
You can use require statements to connect to interfaces using swappable pin assignment
require eth0 : MDI-1000Base-T from ethernet-jack[0]
require eth1 : MDI-1000Base-T from ethernet-jack[1]
net (eth0 eth1)
- This automatically connects all RX/TX differential pins for each connector.
- JITX can also swap or reassign these differential pairs automatically during routing, indicated by purple rat lines.
More on require
More on supports
6. Substrate & Impedance Constraints¶
6.1 Substrate Model¶
High-speed lines need controlled impedance. helpers.stanza
defines the board stackup:
public val substrate = jlc-pcb/stackups/JLC04161H-1080/JLC04161H-1080()
- This substrate includes layer definitions, copper thickness, DFM rules, and impedance controlled routing rules.
- Changing the substrate automatically updates routed geometries to maintain correct impedance.
6.2 MDI-1000Base-T Constraint¶
Specify a 100 Ω differential structure and its skew/loss limits:
val mdi-constraint = MDI-1000Base-T-Constraint(
route-struct = diff-routing-struct(substrate, 100) ; 100 ohms
)
- This enforces 100 Ω differential routing and manages MDI skew and loss parameters.
7. Multi-Stage Topology: ESD Protection¶
7.1 ESD Diodes¶
For Gigabit Ethernet, add ESD or TVS diodes between the RJ45 and the PHY. In code:
val esd = diodes/ESD224DQAR/create-esd-pool(4, GND)
- Creates a “pool” of ESD diodes sufficient for 4 differential pairs.
- Each pair passes through these diodes on the way to the switch.
7.2 Switch & Constrain-Topology¶
Include your Ethernet switch (e.g., KSZ9563) and define the pass-through path from the switch MDI to the RJ45:
inst netsw : microchip-networking/components/KSZ9563/circuit(substrate)
for i in 0 to 2:
require eth : MDI-1000Base-T from ethernet-jack[i]
require sw-mdi : microchip-networking/components/KSZ9563/MDI-1000BaseT-With-LEDs from netsw.netsw
within [src, dst] = constrain-topology(sw-mdi.MDI => eth, mdi-constraint):
require protected-pairs:dual-pair[4] from esd
for p in 0 to 4:
topo-pair(src.TP[p] => protected-pairs[p].A => protected-pairs[p].B => dst.TP[p])
- Signals physically flow Switch → ESD → RJ45.
- The same constraints (skew, loss, etc.) apply end to end.
8. High-Speed Routing & Skew Matching¶
8.1 Differential Routing¶
- Use
Shift + I
to add insertion points for differential pairs. - Press
Q
to autoroute pairs with the correct spacing. - Manual approach:
Shift + Q
to enter manual routing mode.Ctrl + A
to see valid pin swaps (purple lines show swappable pins).
8.2 Length Matching¶
- Check the “Issues” panel for skew or mismatch warnings.
- Add control points (hold
2
+ click/drag) for length matching segments. - Size segments for length matching; JITX automatically inserts serpentine “bumps” or “loops” to correct skew.
Setting length matching¶
9. Final Checks¶
- The “Issues” panel shows any remaining mismatches or constraints (e.g., skew, length, or topology).
- Once no warnings remain, your Gigabit lines meet design rules and constraints.
10. Practical Tips¶
- Place ESD Diodes Near Connectors or PHY
- Short paths help reduce EMI and improve protection.
- Use Substrate Definitions
- Code-based geometry auto-updates if the stackup changes.
- Pin Swaps
- Let JITX handle reassignments to avoid crossing lines. Purple rat lines indicate swappable pins.
- Length Matching
- Adjust control points or region size for serpentines.
- Monitor the Issues panel to confirm no remaining skew.