Files
Akhil Velagapudi 6247ee421d Warn on legacy Component() inputs (#820)
* Warn on legacy Component() inputs

Emit a deprecated.component_property warning whenever Component() is
called with a legacy properties[...] key that has a typed kwarg
replacement (do_not_populate, Exclude_from_bom, type, mpn, manufacturer,
datasheet, description, and casing variants), or when mpn=/manufacturer=
are used instead of part=Part(...). Legacy values continue to be
honored; the warning just nudges users toward the endorsed forms.

Migrate examples, stdlib, and test fixtures off these legacy inputs
where the surrounding code is not specifically exercising the legacy
fallback path.

* Expose add_property as builtin.add_property and deprecate the global

Adds builtin.add_property as the endorsed entry point. The bare global
add_property still works for backwards compatibility but now emits a
deprecated.add_property warning. Stdlib callers are migrated to
builtin.add_property.

* Cleanup: warn on Description key, simpler add_property message, drop a stray mpn

* Warn on legacy module DNP property keys

Module(..., properties={...}) and add_property(...) / builtin.add_property(...)
now emit deprecated.module_property warnings when they use the legacy DNP key
spellings (do_not_populate, Do_not_populate, DNP, dnp). Pass dnp=True to
Module(...) instead. Legacy values still flow through to conversion.

* Consolidate module DNP deprecation helpers

Extract a shared warn_deprecated_module_property() to remove duplicated
diagnostic-emission boilerplate between the add_property and
properties-dict warning helpers.

* Address PR review: route sourcing keys to part=Part(...), trim changelog

- Remove mpn/Mpn/manufacturer/Manufacturer from LEGACY_COMPONENT_PROPERTY_KEYS
  so they share the same part=Part(...) suggestion as the kwarg path instead
  of producing a misleading two-hop deprecation (legacy -> deprecated kwarg).
- Collapse three verbose changelog entries into two short ones.

* Tighten changelog entries for legacy-properties deprecations
2026-05-18 18:14:26 -04:00

270 lines
5.2 KiB
Python

load("@stdlib/interfaces.zen", "Gpio", "Analog", "Pwm")
Capacitor = Module("@stdlib/generics/Capacitor.zen")
Resistor = Module("@stdlib/generics/Resistor.zen")
HighSideCurrentSense = Module("../HighSideCurrentSense/HighSideCurrentSense.zen")
L6387E = Module("../L6387E/L6387E.zen")
POWER_GATE_DRIVE = io(Power)
POWER_PHASE = io(Power)
POWER_3V3 = io(Power(voltage="3.3V"))
PWM_LOW = io(Pwm)
PWM_HIGH = io(Pwm)
ISENSE = io(Analog)
PHASE_BEMF = io(Analog)
PHASE_OUT = io(Net)
P_GROUND = io(Ground)
D_GROUND = io(Ground)
GPIO_BEMF = io(Gpio)
POWER_PHASE_POST_SHUNT = Power()
VBOOT_NET = Net()
HIGH_SIDE_GATE_P1 = Net()
HIGH_SIDE_GATE_P2 = Net()
LOW_SIDE_GATE_P1 = Net()
LOW_SIDE_GATE_P2 = Net()
# Gate Driver
L6387E(
name="L6387ED",
package="SOIC",
bootstrap_cap_value="1uF 10%",
VCC=POWER_GATE_DRIVE,
GND=P_GROUND,
VBOOT=VBOOT_NET,
OUT=PHASE_OUT,
LIN=Gpio(PWM_LOW),
HIN=Gpio(PWM_HIGH),
LVG=LOW_SIDE_GATE_P1,
HVG=HIGH_SIDE_GATE_P1,
)
Component(
name="D_BOOTSTRAP",
symbol=Symbol(library="./B05100W-TP.kicad_sym"),
footprint="Diode_SMD:D_SOD-123",
part=Part(mpn="B05100W", manufacturer="Diodes Incorporated"),
description="Schottky Diode",
properties={
"voltage": "100V",
"current": "1A",
},
pins={
"A": POWER_GATE_DRIVE,
"K": VBOOT_NET,
},
)
Capacitor(
name="C_VCC",
value="470nF 10%",
voltage="25V",
package="0402",
P1=POWER_GATE_DRIVE,
P2=P_GROUND,
)
Capacitor(
name="C_HIGH_IN",
value="100pF 10%",
voltage="25V",
package="0402",
P1=PWM_HIGH,
P2=P_GROUND,
)
Capacitor(
name="C_LOW_IN",
value="100pF 10%",
voltage="25V",
package="0402",
P1=PWM_LOW,
P2=P_GROUND,
)
# Fets
HighSideCurrentSense(
name="R_SHUNT",
ref_config="MIDSUPPLY",
shunt_value="0.010ohm 1%",
shunt_package="2512",
POWER_BUS_IN=POWER_PHASE,
POWER_BUS_OUT=POWER_PHASE_POST_SHUNT,
POWER_3V3=POWER_3V3,
ISENSE_OUT=ISENSE,
GND=D_GROUND,
)
Component(
name="STL100N8F7-high",
symbol=Symbol(library="./STL100N8F7.kicad_sym"),
footprint="Package_TO_SOT_SMD:TO-252-2",
part=Part(
mpn="STL100N8F7",
manufacturer="STMicroelectronics",
),
description="N-Channel MOSFET",
properties={
"voltage": "80V",
"current": "100A",
"rds_on": "7.5mOhm",
},
pins={
"G": HIGH_SIDE_GATE_P2,
"D_1": POWER_PHASE_POST_SHUNT,
"D_2": POWER_PHASE_POST_SHUNT,
"D_3": POWER_PHASE_POST_SHUNT,
"D_4": POWER_PHASE_POST_SHUNT,
"D_5": POWER_PHASE_POST_SHUNT,
"S_1": PHASE_OUT,
"S_2": PHASE_OUT,
"S_3": PHASE_OUT,
},
)
Component(
name="STL100N8F7-low",
symbol=Symbol(library="./STL100N8F7.kicad_sym"),
footprint="Package_TO_SOT_SMD:TO-252-2",
part=Part(
mpn="STL100N8F7",
manufacturer="STMicroelectronics",
),
description="N-Channel MOSFET",
properties={
"voltage": "80V",
"current": "100A",
"rds_on": "7.5mOhm",
},
pins={
"G": LOW_SIDE_GATE_P2,
"D_1": PHASE_OUT,
"D_2": PHASE_OUT,
"D_3": PHASE_OUT,
"D_4": PHASE_OUT,
"D_5": PHASE_OUT,
"S_1": P_GROUND,
"S_2": P_GROUND,
"S_3": P_GROUND,
},
)
# Connecting Components
Resistor(
name="R_HIGH_GATE",
value="33ohms 1%",
package="0402",
P1=HIGH_SIDE_GATE_P1,
P2=HIGH_SIDE_GATE_P2,
)
Resistor(
name="R_LOW_GATE",
value="33ohms 1%",
package="0402",
P1=LOW_SIDE_GATE_P1,
P2=LOW_SIDE_GATE_P2,
)
# Gate-Source discharge resistors
Resistor(
name="R_HIGH_GS",
value="10kohm 1%",
package="0402",
P1=HIGH_SIDE_GATE_P2,
P2=PHASE_OUT,
)
Resistor(
name="R_LOW_GS",
value="10kohm 1%",
package="0402",
P1=LOW_SIDE_GATE_P2,
P2=P_GROUND,
)
PHASE_R_OUT = Net()
Resistor(
name="R_OUT",
value="1ohm 1%",
package="0603",
P1=PHASE_OUT,
P2=PHASE_R_OUT,
)
Capacitor(
name="C_OUT",
value="10nF 1%",
voltage="100V",
package="0603",
P1=PHASE_R_OUT,
P2=P_GROUND,
)
Capacitor(
name="C_IN",
value="10uF 20%",
voltage="100V",
package="1210",
P1=POWER_PHASE,
P2=P_GROUND,
)
# Bemf
Component(
name="bemf_d1",
symbol=Symbol(library="./BAT30KFILM.kicad_sym"),
footprint="Diode_SMD:D_SOD-123",
part=Part(mpn="BAT30KFILM", manufacturer="STMicroelectronics"),
description="Schottky Diode",
properties={
"voltage": "30V",
"current": "200mA",
},
pins={
"A": PHASE_BEMF,
"K": POWER_3V3,
},
)
BEMF_R_NET = Net()
Resistor(
name="bemf_r_top",
value="120kohm 1%",
package="0402",
P1=PHASE_OUT,
P2=PHASE_BEMF,
)
Resistor(
name="bemf_r_bottom",
value="4.7kohm 1%",
package="0402",
P1=BEMF_R_NET,
P2=PHASE_BEMF,
)
Component(
name="bemf_d2",
symbol=Symbol(library="./BAT30KFILM.kicad_sym"),
footprint="Diode_SMD:D_SOD-123",
part=Part(mpn="BAT30KFILM", manufacturer="STMicroelectronics"),
description="Schottky Diode",
properties={
"voltage": "30V",
"current": "200mA",
},
pins={
"A": BEMF_R_NET,
"K": GPIO_BEMF,
},
)