Impedance Control
Set up differential pair or single-ended impedance-controlled lines.

Overview
Impedance control in Flux is defined at a part level instead of at a project level. Meaning that parts that require impedance control or differential pair routing come pre-configured with all the required parameters. This implementation greatly simplifies the routing process and reduces busy work.
Learn more about impedance control in this tutorial.
Configuring Impedance Control
There are two ways of configuring impedance control for a part:
- Automatic setup: this is the recommended process as it only requires part pins to be properly named.
- Manual setup: it’s also possible to manually add parameters directly to the pins.
Automatic Setup
Flux will automatically add the right parameters to every terminal in the part if the “Part Type” property is set to any of the supported interfaces listed below.
Supported Interfaces |
---|
USB A, USB B, USB C, HDMI, PCIe x1, PCIe x2, PCIe x4, PCIe x8, PCIe x16, MIPI CSI, MIPI DSI, DDR3, DDR4 |
For an interface to be automatically configured, the terminal's name in the part need to follow one of the following names_
Compatible Terminal Names | |
---|---|
USB 2.0 | "d+" "d-" dp dn dm "data+" "data-" dp1 dn2 p n usb_dp usb_dm |
USB 3. | txp txn "tx+" "tx-" txm sstxp1 sstxn1 "dptx+" "dptx-" "superspeed_tx+" "superspeed_tx-" "rx+" "rx-" rxp rxn rxm ssrxp1 ssrxn1 "rx2+" "rx2-" "dprx2+" "dprx2-" "superspeed_rx2+" "superspeed_rx2-" vbus |
MIPI | "dp0+" "dp0-" "dp1+" "dp1-" "dp2+" "dp2-" "dp3+" "dp3-" "dp4+" "dp4-" data_p0 data_n0 data_p1 data_n1 data_p2 data_n2 data_p3 data_n3 data_p4 data_n4 "d0+" "d0-" "d1+" "d1-" "d2+" "d2-" "d3+" "d3-" "d4+" "d4-" "clk+" "clk-" clock_p clock_n |
HDMI | "data0+" "data0-" "data1+" "data1-" "data2+" "data2-" "data3+" "data3-" "d0+" "d0-" "d1+" "d1-" "d2+" "d2-" "d3+" "d3-" "in_d0+" "in_d0-" "in_d1+" "in_d1-" "in_d2+" "in_d2-" "in_d3+" "in_d3-" "out_d0+" "out_d0-" "out_d1+" "out_d1-" "out_d2+" "out_d2-" "out_d3+" "out_d3-" data0_p data0_n data1_p data1_n data2_p data2_n data3_p data3_n "tmds data0+" "tmds data0-" "tmds data1+" "tmds data1-" "tmds data2+" "tmds data2-" "tmds data3+" "tmds data3-" "tmds data 0+" "tmds data 0-" "tmds data 1+" "tmds data 1-" "tmds data 2+" "tmds data 2-" "tmds data 3+" "tmds data 3-" "tmds clock+" "tmds clock-" "tmds_d0+" "tmds_d0-" "tmds_d1+" "tmds_d1-" "tmds_d2+" "tmds_d2-" "tmds_d3+" "tmds_d3-" "tmds_ck+" "tmds_ck-" "d_in0+" "d_in0-" "d_in1+" "d_in1-" "d_in2+" "d_in2-" "d_in3+" "d_in3-" "clk+" "clk-" "clock+" "clock-" clock_p clock_n in_clkp in_clkn out_clkp out_clkn |
PCI | a2 a3 a5 a6 a14 a15 a17 a18 a11 a12 rxa0p rxa0n rxa1p rxa1n rxa2p rxa2n rxa3p rxa3n tx0p tx0n tx1p tx1n tx2p tx2n tx3p tx3n |
Manual Setup
If you’re configuring impedance control for an interface that is not currently supported, you’ll need to add the parameters to every terminal manually. Below is a list of all the parameters that need to be configured:
Flux-Defined properties
Defined at component level
- Bus Type: target interface. For example HDMI, PCIe or USB
Defined at terminal level
- Bus Group: this property defines the different differential pairs. Some interfaces might require many different bus groups (like ethernet), while others only require one (like USB2.0). For example, if a microcontroller contains two USB buses, terminals for one bus should contain “Bus Group” = USB_1 and terminals in the second bus should contain “Bus Group” = USB_ 2
- Pair Role: defines what type of role the terminal has. For example CLK, D1, D2, D3, D4, TX, TX1, TX2, TX3, RX, RX1, RX2, RX3, etc.
- Controlled Impedance Pair: this should be a unique name that identifies the pair. This is particularly important for parts that contain more than one bus. For example in a part with two USB buses, you will have two Data 1 pairs. In that case one pair could be named “Data1_Bus1” and the other pair “Data1_Bus2”. You can follow any naming convention you prefer, the only requirement is that each pair has a unique “Controlled Impedance Pair” string.
Impedance Constraints
- Controlled Impedance: target impedance, measured in Ohms.
- Controlled Impedance Tolerance: how much the actual impedance can vary with respect to the “Controlled Impedance” property, measured in %.
These rules configure the impedance parameters that need to be obeyed and are usually part of the interface specifications. For example, USB 3.2 Gen 2 (10 Gbps) requires VBUS=90Ω±15% and D+ and D- =90Ω±7.5%
Differential Pair Constraints
- PN Skew Max: the maximum time difference tolerated for signals between the two terminals in the pair, measured in pico-seconds.
- Pin Delay: specifies the time delay from the IC to the terminal connection point, measured in ps.
Bus Constraints
- Pair to Pair Skew Max: the maximum time difference tolerated for signals between the two different pairs in a bus, for example, data and clock lines.
Limitations
The following features will be supported in the next releases:
Squiggles
Multi-tracing for bus:
- PCIe
- HDM
- Ethernet
DRC Checks
- DRC for length matching
- DRC for ground underneath
- DRC for trace spacing (uncoupled length)