import USB_C, ElectricPower, Resistor

usb_c = new USB_C

# Configure differential pair impedances
usb_c.rx.impedance = 90ohm +/- 10%
usb_c.tx.impedance = 90ohm +/- 10%
usb_c.usb3.usb2.dp.impedance = 90ohm +/- 10%
usb_c.usb3.usb2.dm.impedance = 90ohm +/- 10%

# Connect power reference for logic levels
power_3v3 = new ElectricPower
assert power_3v3.voltage within 3.3V +/- 5%
usb_c.usb3.usb2.dp.p.reference ~ power_3v3
usb_c.usb3.usb2.dp.n.reference ~ power_3v3
usb_c.usb3.usb2.dm.p.reference ~ power_3v3
usb_c.usb3.usb2.dm.n.reference ~ power_3v3

# CC resistors for device detection (5.1k for device, 56k for host)
cc1_resistor = new Resistor
cc2_resistor = new Resistor
cc1_resistor.resistance = 5.1kohm +/- 1%  # Device
cc2_resistor.resistance = 5.1kohm +/- 1%  # Device

usb_c.cc1 ~> cc1_resistor ~> power_3v3.lv
usb_c.cc2 ~> cc2_resistor ~> power_3v3.lv

# Connect to USB controller
usb_controller.usb_c ~ usb_c

Interfaces

cc1
Electrical
cc2
Electrical
rx
DifferentialPair
sbu1
Electrical
sbu2
Electrical
tx
DifferentialPair
usb3
USB3

Global Attributes

These attributes are available to all modules and interfaces in a design.
lcsc_id
str
Assign the LCSC ID of the module.If set, this will tell the picker to select that part from LCSC for this block.
manufacturer
str
This module’s manufacturer name, as a string.Only exact matches on the manufacturer’s name will be found by the picker. It’s recommended to fill this information based on what ato create component provides.
mpn
str
This module’s manufacturer part number, as a string.For the picker to select the correct part from the manufacturer, this must be set.
package
str
The package of the module.This drives which components can be selected, and what footprint is used.Must exactly match a known package name.
exclude_from_bom
bool
override_net_name
str
When set on an interface, this will override the net name of the interface.This is useful for renaming nets which are automatically generated.
required
bool
Only for ModuleInterfaces. If set to True, require that interface is connected to something outside of the module it’s defined in.
import USB_C, ElectricPower, Resistor

usb_c = new USB_C

# Configure differential pair impedances
usb_c.rx.impedance = 90ohm +/- 10%
usb_c.tx.impedance = 90ohm +/- 10%
usb_c.usb3.usb2.dp.impedance = 90ohm +/- 10%
usb_c.usb3.usb2.dm.impedance = 90ohm +/- 10%

# Connect power reference for logic levels
power_3v3 = new ElectricPower
assert power_3v3.voltage within 3.3V +/- 5%
usb_c.usb3.usb2.dp.p.reference ~ power_3v3
usb_c.usb3.usb2.dp.n.reference ~ power_3v3
usb_c.usb3.usb2.dm.p.reference ~ power_3v3
usb_c.usb3.usb2.dm.n.reference ~ power_3v3

# CC resistors for device detection (5.1k for device, 56k for host)
cc1_resistor = new Resistor
cc2_resistor = new Resistor
cc1_resistor.resistance = 5.1kohm +/- 1%  # Device
cc2_resistor.resistance = 5.1kohm +/- 1%  # Device

usb_c.cc1 ~> cc1_resistor ~> power_3v3.lv
usb_c.cc2 ~> cc2_resistor ~> power_3v3.lv

# Connect to USB controller
usb_controller.usb_c ~ usb_c