edakit documentation

HINT

Patterns that need judgement, as notes – 32 codes.

Each engine decides one kind of relation; a finding's code is ENGINE.relation. Severities are the catalog's defaults – a project's domains may set others; a grade is a sub-case with its own severity, a topic the part of a code a domain switches on.

HINT.datasheet notes of the parts entries

note

A parts entry's own warnings – hints of the part, hint of a connected pin (an ESP32 pin of ADC2: no analog reads while Wi-Fi is on) – are shown for every part and pin of the graph they belong to.

Why
A datasheet's warning that no check can decide is still knowledge; it belongs where the part is used.
What to do
Consider the note where the part is used; what is taken care of: accept HINT.datasheet <place> with how.
Sources
  1. edakit handbook 4.1 (hints and hint in a parts entry)

HINT.bulk bulk capacitor at the power input

note

Bulk capacitor at the power input: consider it where it applies.

Why
A supply cable has inductance. With only ceramic capacitors at the input, plugging in rings, and the voltage can overshoot to about twice the supply. Load steps (a servo starting, LEDs switching) also need charge close to the input.
What to do
An electrolytic or polymer capacitor of 10–100 µF near the input connector - its series resistance damps the ringing - rated at least 1.5 × the input voltage (LIM.v).
Sources
  1. Linear Technology AN88, Ceramic Input Capacitors Can Cause Overvoltage Transients (2001) – https://www.analog.com/media/en/technical-documentation/application-notes/an88f.pdf

Applies where matcher power_input

Replaces H-1

HINT.gate MOSFET gate resistor

note

MOSFET gate resistor: consider it where it applies.

Why
The gate capacitance and the inductance of the drive loop form a resonant circuit; a fast edge makes it ring, which can exceed VGS max and radiate. A GPIO that switches a small MOSFET slowly rarely needs anything.
What to do
10–100 Ω in series with the gate, close to the gate, when the driver is fast or far from the gate; keep the gate-source resistor (LVL.undefined).
Sources
  1. TI SLUA618A, Fundamentals of MOSFET and IGBT Gate Driver Circuits (2018), 2.8 Effects of parasitic components – https://www.ti.com/lit/ml/slua618a/slua618a.pdf

Applies where matcher driven_gate

Replaces H-2

HINT.debounce debounce buttons and switches

note

Debounce buttons and switches: consider it where it applies.

Why
Mechanical contacts bounce: Ganssle measured about 1.6 ms on average and up to 6 ms, one switch 157 ms. A counter or an interrupt sees several presses.
What to do
Debounce in firmware: sample every 5–10 ms and accept a level after it was stable several times. An RC filter with a Schmitt-trigger input only where firmware cannot, for example a wake-up from sleep.
Sources
  1. Jack Ganssle, A Guide to Debouncing – http://www.ganssle.com/debouncing.htm

Applies where matcher read_switch

Replaces H-3

HINT.inductive inductive load off the board

note

Inductive load off the board: consider it where it applies.

Why
A motor, solenoid or relay at the end of a cable stores energy in its coil like one on the board, but REQ.missing sees only coils that are parts of the graph. When the transistor switches off, the coil's voltage spike lands on it.
What to do
If the load at this connector is inductive: a diode across the connector's load pins on the board, cathode at the supply pin; a Schottky for PWM.
Sources
  1. TE Connectivity, The Application of Relay Coil Suppression with DC Relays (white paper) – https://www.te.com/en/products/relays-and-contactors/relays/intersection/relay-coil-suppression-dc-relays.html

Applies where matcher transistor_at_connector

Replaces H-4

HINT.switcher switching regulator layout

note

Switching regulator layout: consider it where it applies.

Why
The loop of input capacitor, switch and diode or second switch carries pulsed current; its area radiates and its inductance rings. A ceramic input capacitor helps only next to the IC's VIN pin.
What to do
Input capacitor next to the VIN and GND pins, the loop as small as possible, and the loop listed in layout.loops of the graph so that GEO.loop checks it.
Sources
  1. TI SNVA021C, AN-1149 Layout Guidelines for Switching Power Supplies (2013), 3 Filter capacitors – https://www.ti.com/lit/an/snva021c/snva021c.pdf

Applies where matcher switching_regulator

Replaces H-5

HINT.lithium lithium cells need protection

note

Lithium cells need protection: consider it where it applies.

Why
Li-ion and LiPo cells must not be over-discharged (below about 2 V per cell), overcharged or short-circuited, and protection circuits are mandatory for Li-ion packs. Alkaline and NiMH cells tolerate all of this far better.
What to do
For lithium cells: protected cells or a protection IC between holder and circuit; a cut-off in the firmware is not enough while the MCU is off. For alkaline or NiMH cells nothing is needed.
Sources
  1. Battery University BU-304, Why are Protection Circuits Needed? – https://batteryuniversity.com/article/bu-304-why-are-protection-circuits-needed
  2. Battery University BU-304a, Safety Concerns with Li-ion – https://batteryuniversity.com/article/bu-304a-safety-concerns-with-li-ion

Applies where matcher unprotected_cell

Replaces H-6

HINT.esd ESD at external connectors

note

ESD at external connectors: consider it where it applies.

Why
A connector that a person touches or plugs a cable into sees electrostatic discharges of several kilovolts. A line that runs straight to an IC pin relies on the IC's internal protection.
What to do
For lines that leave the enclosure: an ESD diode (TVS) per line, as near to the connector as the design rules allow; a series resistor on slow signal lines.
Sources
  1. TI SLVA680A, ESD Protection Layout Guide (2022) – https://www.ti.com/lit/an/slva680/slva680.pdf

Applies where matcher connector_signal

Replaces H-7

HINT.two_supplies two supplies on one net

note

Two supplies on one net: consider it where it applies.

Why
Where two supplies meet on one net, the higher one feeds the other whenever its path has nothing that blocks: primary cells get charged, a PC's USB port takes current, a body diode conducts and heats. A single P-MOSFET switched off by the other supply is no block – its body diode conducts from drain to source. PATH.reverse looks at a reversed source only, and the simulation shows the back-feed only in a scenario with both supplies on and the other one higher. Whether it matters – cells that may be charged, a host that tolerates it, an operating rule – is a judgement.
What to do
A blocking element in every path that must not be fed: a Schottky diode (0.3–0.5 V drop), two P-MOSFETs back-to-back with a common source (block power-or-pmos), or an ORing controller. Or an operating rule that firmware or manual enforce (one of the two unplugged). The hint names the net and marks the supplies that reach it without a block; record how it is handled: "accept": {"HINT.two_supplies": "Q8/Q9 back-to-back, D40"}.
Sources
  1. AOS AO3401A, Rev 3.1 (December 2023), p. 2: body diode forward voltage VSD -0.7 V typ., -1 V max. at IS = -1 A and VGS = 0 V, body-diode continuous current IS -2 A – the diode conducts with the MOSFET off – https://datasheet.lcsc.com/datasheet/pdf/fee353dd1e9e0bc90b295f14f381aa4c.pdf?productCode=C15127
  2. Lesson of pytree (D-44, 2026-10-23): with one AO3401A cutting three AA cells off while USB-C was plugged, fresh lithium cells (5.4 V) fed through its body diode, about 0.7 W and up to 125 °C on a touchable underside; a second AO3401A back-to-back fixed it
  3. Lesson of pytree (D-47, USB tree, 2026-10-25): the module's 5V pin is its USB VBUS without a diode and J1 feeds the same rail through D32 – a source at J1 above the PC's VBUS feeds the PC through the module (about 0.2 A at 5.25 V against 4.75 V, second check M-1); accepted with an operating rule

Applies where matcher two_supplies

Replaces H-8

HINT.readback read-back of a serial output

note

Read-back of a serial output: consider it where it applies.

Why
Shift registers and constant-current LED drivers shift on the rising clock edge and change their serial output a propagation delay after it – the STP08CP05 typically 21–24 ns and at most 32 ns at 3.3 V, the TLC5916 12–30 ns at 3 V. SPI mode 0 samples on that same rising edge: a read-back in mode 0 works only while the delay is longer than the MCU's input hold time, and only the datasheet's minimum delay counts – the STP08CP05 states none. Mode 1 samples on the falling edge, but shifts the MCU's own data out on the rising edge, where the part samples its serial input. The SPI mode is the firmware's, so no program decides this from the graph, and the question gets lost between the concept and the code.
What to do
Look up the output's delay after the clock edge (out_edge and t_pd_ns on the pin of the parts entry) and the MCU's SPI input hold time in the mode the firmware uses. If the minimum delay is not safely longer: read back by bit-bang, sampling after the falling edge, or test the SPI read on the first board with bit-bang as the planned fallback. Record the decision in the graph: "accept": {"HINT.readback": "…"}.
Sources
  1. ST DocID13524 Rev 8 (STP08CP05, August 2018), table 8 Switching characteristics: CLK-SDO tPLH 21/28 ns (typ/max) at VDD 3.3 V and 17/22 ns at 5 V, tPHL 24/32 ns at 3.3 V and 19/25 ns at 5 V, no minimum; table 9 and figure 8: data shifts and SDO changes on the rising CLK edge
  2. TI SLVS695D (TLC591x, June 2007, revised January 2015), pin functions: CLK "Clock input for data shift on rising edge"; 7.7 Switching Characteristics (VDD 3 V): tPLH4 and tPHL4 CLK to SDO 12/20/30 ns (min/typ/max)
  3. Wikipedia, Serial Peripheral Interface, section Mode numbers (read 2026-10-26): mode 0 (CPOL 0, CPHA 0) shifts data out on the falling SCLK and samples on the rising SCLK; mode 1 shifts on the rising and samples on the falling SCLK

Applies where matcher read_back

Replaces H-9

HINT.motor_supply motor supply: bulk capacitor and returned energy

note

A motor on the board: consider the bulk capacitor at its driver's motor supply and where its returned energy goes.

Why
A motor draws its start current from the supply in pulses and gives energy back when it brakes or its driver switches off. Without a bulk capacitor at the driver the supply rings and dips; behind a series diode the returned energy has nowhere to go and lifts the motor supply above the driver's rating (maker-coverage MOT 5, MOT 9).
What to do
A bulk electrolytic at each driver's motor supply pin, sized from the driver's datasheet; no series diode in front of the motor supply, or a clamp (TVS, a braking resistor) behind it. Run the start and the stall as load steps in a transient run (edakit handbook 5.2).
Sources
  1. docs/concepts/done/maker-coverage.md, appendix MOT 5 (TI DRV8833 datasheet, tagged to verify) and MOT 9 (Pololu A4988 product page, tagged extracted)

Applies where kinds motor, solenoid

HINT.heater a heater needs a second interruption

note

A heater on the board: consider a second, independent way to switch it off.

Why
The MOSFET or solid-state relay that switches a heater fails closed often enough; then the firmware can no longer stop it, and a heated bed or a cartridge runs away (maker-coverage MOT 30).
What to do
A thermal fuse at the heater, a relay or the supply's enable that a watchdog or the firmware's thermal protection drops, independent of the switching transistor.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix MOT 30: Marlin Configuration.h (thermal protection), Klipper Config_Reference, Voron documentation – read in full in the maker-coverage research

Applies where kinds heater

HINT.audio_ground audio: ground loops and shared returns

note

A speaker or an analog path on the board: consider where its ground returns and what shares it.

Why
Hum and buzz come from loops through USB or mains earth, from large currents returning under an input's reference, from an amplifier's supply shared with switching loads or a radio, and from RF rectified at an input (maker-coverage AUD 6, AUD 8).
What to do
One return point for the audio path; the amplifier's supply filtered from switching loads and the radio; an RC low-pass or a ferrite at inputs on a board with a radio.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix AUD 6 (ESP-IDF ADC documentation, read in full) and AUD 8 (OpenEnergyMonitor documentation, read in full)

Applies where kinds speaker

HINT.class_d filterless class-D output on a cable

note

A bridge-tied output reaches a connector: consider a filter at the output.

Why
A filterless class-D amplifier relies on the speaker's inductance near the board; on a lead its switching edges radiate (maker-coverage AUD 1, HT-13).
What to do
A ferrite or an LC filter at the outputs above the lead length the amplifier's datasheet allows; the speaker on short, twisted leads.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix AUD 1 (PAM8403 and Adafruit MAX98357A, tagged to verify)

Applies where matcher btl_output

HINT.audio_switching switching in the audio band

note

A switching regulator, a charge pump or a PWM net on a board with an audio path: consider what it puts into the audio band.

Why
Charge pumps whine near 10 kHz, boost converters burst at light load, LED and tap-tempo PWM ticks through supply and ground into the signal (maker-coverage AUD 12, GTP 17).
What to do
Switching above 20 kHz or filtered from the audio rail; a separate return for the switching current; PWM of LEDs on a board with audio above the audio band.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix GTP 17 (ElectroSmash CE-2 analysis and Bontempo, read in full) and AUD 12 (TC1044S, LT1054, tagged to verify)

Applies where matcher switching_near_audio

HINT.signal_ceramic class-2 ceramic in a signal path

note

A class-2 ceramic capacitor (X5R, X7R, Y5V …) on a net with an analog pin: consider whether it sits in the signal path.

Why
The capacitance of class-2 ceramics changes with the voltage across them, so a signal through one is distorted; C0G and film capacitors do not (maker-coverage GTP 24, GTI 36).
What to do
C0G or film in the signal path; class-2 ceramics for decoupling only.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix GTI 36 (PJRC Audio library, read in full)

Applies where matcher ceramic_in_signal_path

HINT.jack_battery battery switched by the input jack

note

A battery on a board with an instrument input: consider how it is switched off.

Why
Pedals and active instruments switch the battery through the ring of the input or output jack: a cable left plugged drains it, a stereo cable leaves the circuit off, and a DC jack's switch lug that does not break battery plus lets both supplies meet (maker-coverage GTP 32, GTI 8).
What to do
The battery's minus through the jack's ring contact as the circuit expects, the DC jack's lug breaking battery plus; say in the documentation that the cable switches it on.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix GTP 32 (ElectroSmash analyses, read in full)

Applies where matcher battery_with_jacks

HINT.pedal_supply a pedal's supply among others

note

An instrument board with a supply input: consider the other pedals and amplifiers on the same supply and ground.

Why
Positive-ground pedals put their sleeves on +9 V and short a shared supply; daisy chains form ground loops; a series part in the DC jack's ground leg is bypassed by the audio cables' shields (maker-coverage GTP 2, GTP 35, GTI 32).
What to do
A centre-negative 9 V input with reverse protection in the plus leg; say whether the board needs an isolated outlet.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix GTP 2 (ElectroSmash germanium fuzz and Rangemaster) and GTP 35 (ElectroSmash CE-2), read in full

Applies where matcher pedal_power_input

HINT.string_ground the player on the amplifier's ground

note

An instrument input: consider what ties the player to ground.

Why
The bridge ground connects the player's hand to the amplifier's ground; a fault there, or a capacitor from mains to chassis, puts the player in the path (maker-coverage GTI 7, GTI 27).
What to do
No capacitor from mains to chassis on the instrument's side; a resistor or capacitor in the string ground only of a safety class rated for it.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix GTI 7 and GTI 27 (tagged extracted)

Applies where matcher instrument_input

HINT.jack_supply a supply on a jack contact

note

A jack whose tip, ring or a switch contact carries a supply (roles tip, ring, sleeve, tip_switch, ring_switch, sleeve_switch): consider what happens while a plug goes in and comes out.

Why
A plug's tip slides across the ring and sleeve springs on its way in and out: a supply on the tip or ring is shorted to the sleeve – usually ground – for a moment and fed into whatever the plug's contacts touch; split keyboards with TRRS links between their halves are known to fail when plugged live (maker-coverage HT-7).
What to do
A series resistor or a PTC between the supply and the jack, a switch contact that connects the supply only with the plug home, or no hot-plug stated in the documentation; accept the hint with the reason where the supply is current-limited anyway.
Sources
  1. docs/concepts/done/maker-coverage.md, HT-7 (QMK on TRRS links between the halves of a split keyboard; asp_pro's expression pedal on a TRS jack)

Applies where matcher jack_supply

HINT.relay_load relay contacts switching a load off the board

note

A relay whose contacts (common, no, nc) reach a connector or run through a cable: consider the load they switch.

Why
A relay's contact rating is stated for a resistive load: an LED driver or a switch-mode supply draws many times its current for a moment when switched on, a motor or solenoid arcs when switched off – contacts weld or wear long before their rated current; the load is off the board, so nothing in the graph tells what it is (maker-coverage HT-14).
What to do
The load's inrush and its kind against the relay's ratings for that kind of load (the datasheet's tables), an NTC or soft start for a capacitive load, a snubber or a diode across an inductive one; accept the hint naming the load.
Sources
  1. docs/concepts/done/maker-coverage.md, HT-14 (appendix AUD 20)

Applies where matcher relay_off_board

HINT.flicker LED flicker from PWM

note

A net with pwm_hz lights LEDs: consider whether its frequency flickers.

Why
Dimmed by PWM, an LED flickers at the PWM frequency; at a few hundred hertz people see it in motion and cameras record it as bands – Arduino's analogWrite runs at about 490 Hz (maker-coverage LED 18).
What to do
A PWM frequency high enough for the use – IEEE 1789 relates frequency and modulation depth to the risk –, or a constant-current driver dimmed by its current.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix LED 18 (Arduino analogWrite reference, read in full; IEEE 1789-2015, tagged extracted)

Applies where matcher pwm_leds

HINT.boost_enable a boost converter switched off by its enable

note

A boost converter whose enable an MCU drives: consider what its output does with EN low.

Why
Without a load disconnect a boost converter's inductor and diode still connect its input to its output: with EN low the output sits one diode below the input instead of at 0 V (maker-coverage PWR 15).
What to do
A converter with load disconnect, or a switch in its output path, where the load must be off. With behaviour boost the simulation shows the level in a load with EN low; an expect of the load on the output net holds it.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix PWR 15 (MT3608, tagged extracted)
  2. TI SLVA191A (Load Disconnect for the TPS6510x, May 2004, revised February 2017), abstract: 'Many boost converters have an external rectifier diode. The input voltage … is connected to the output voltage when the device is disabled' – https://www.ti.com/lit/an/slva191/slva191.pdf
  3. Xi'an Aerosemi MT3608 data sheet Rev1.1, p. 1 fig. 1 and p. 5 fig. 2: inductor and diode outside the IC, the only switch from SW to GND; p. 2 EN 'a low input turns it off' – LCSC's copy for C84817

Applies where matcher boost_enable

HINT.usb_budget the current a USB port gives

note

A USB receptacle that powers the board: consider what the port gives – 100 mA before the device is configured, 500 mA after (USB 2.0), 900 mA on USB 3.2 single lane, 1.5 A or 3 A only where a Type-C source advertises it on CC and the board reads the advertisement.

Why
A board that takes what its LEDs, motors or radio need from VBUS works at a phone charger and browns out or trips a laptop's port: the host gives five unit loads only after enumeration, and 1.5 A or 3 A only to a sink that reads the Rp advertisement on CC (maker-coverage PWR 25, LED 7, LED 8, MCU 35). Rd alone on CC says the board is a sink, not how much it may draw.
What to do
Keep the board's draw within 500 mA (100 mA before configuration) – count it with edakit sim against the source's i_max_a –, or read the advertisement (a CC comparator or a PD controller) and limit the load to it, or supply the heavy load from its own input.
Sources
  1. Universal Serial Bus Specification Revision 2.0 (April 27, 2000), 7.2.1: a unit load is 100 mA, up to five unit loads after configuration – https://www.usb.org/document-library/usb-20-specification
  2. USB Type-C Cable and Connector Specification Release 2.0 (August 2019), 2.3.4 and Table 2-1: Default (500 mA USB 2.0, 900 mA or 1,500 mA USB 3.2), USB Type-C Current @ 1.5 A and @ 3.0 A – https://www.usb.org/document-library/usb-type-cr-cable-and-connector-specification-release-20
  3. catalog/tables/usb.toml [budget], [typec_current]

Applies where matcher usb_port

HINT.usb_inrush more than 10 µF on USB VBUS

note

A USB receptacle whose VBUS net carries more than 10 µF directly (the capacitors' value_f): consider a soft start or less capacitance ahead of it – USB 2.0 allows a device 10 µF at attach; HINT.bulk asks for a bulk capacitor at the same input, and the two meet here.

Why
At attach the device's capacitance charges from the hub's VBUS; above 10 µF in parallel with 44 Ω the hub's VBUS droops more than 330 mV and the other ports' devices may reset (USB 2.0, 7.2.4.1). A bulk capacitor at a power input is good advice for a supply cable (HINT.bulk) and too much for a USB port.
What to do
Keep at most 10 µF on VBUS and put the bulk capacitance behind a load switch with soft start (or a regulator that limits its inrush), or accept the hint with the inrush measured or the port known (a charger, not a hub).
Sources
  1. Universal Serial Bus Specification Revision 2.0 (April 27, 2000), 7.2.4.1 Inrush Current Limiting: the maximum load at the downstream end of a cable is 10 µF in parallel with 44 Ω; hub VBUS droop at most 330 mV; more capacitance needs surge current limiting – https://www.usb.org/document-library/usb-20-specification
  2. catalog/tables/usb.toml [attach]

Applies where matcher usb_attach_capacitance

HINT.power_path a load on the charging cell

note

A charger (behaviour charger) whose battery pin feeds a load – an IC's supply pin, an LED, a motor – with nothing between that the input switches off: consider a power path. The graph shows one as a MOSFET whose gate the charger's input holds (AN1149's P-MOSFET), or as a diode onto a rail the input feeds as well; a charger with a system output of its own keeps the load off its battery pin. The cell's protection IC and a divider into an input are no load.

Why
A linear charger ends its charge once the current into the cell falls below a fraction of the programmed current – TP4056 1/10, MCP73831-2AC 7.5 %. A load on the cell draws through the charger too: the charger measures cell and load together, and while the load takes more than the termination current the charge never ends and the cell is held at the float voltage; cell and load also share the programmed current (Microchip AN1149, p. 5). No run shows it – the simulation has no end of charge (HINT.charge_termination).
What to do
Feed the load from the input while it is there and from the cell only without it: a Schottky from the input to the system rail and a P-MOSFET from the cell to the rail whose gate the input holds, with a pull-down (AN1149 fig. 5–7, block lipo-charger), or a charger with a power-path output. Or a charger without automatic termination, or a load the firmware switches off while charging – accept the hint naming it.
Sources
  1. Microchip AN1149, Designing A Li-Ion Battery Charger and Load Sharing System With Microchip's Stand-Alone Li-Ion Battery Charge Management Controller, DS01149C (2008), p. 5 'Connecting the system load to the battery': (1) the charge may never end – termination is based on the ratio of charge current to the preset constant current, and a system drawing from the battery keeps the charge current from meeting it; (2) the total system current is limited by the charge current; (3) a switch that turns the system off before charging; note: chargers without automatic termination (MCP73811/2) for a load on the cell; fig. 5–7 p. 5–6: a P-channel MOSFET from the cell to the system load whose gate is high while VIN is present, RPULL 100 kΩ to ground, a Schottky D1 from the input to the load – https://ww1.microchip.com/downloads/en/AppNotes/01149c.pdf
  2. NanJing Top Power ASIC Corp. TP4056 REV_2.4, p. 2: terminates the charge cycle when the charge current drops to 1/10 of the programmed value after reaching the float voltage; p. 9: once terminated, all loads on the BAT pin must be supplied by the battery – https://datasheet.lcsc.com/datasheet/pdf/d328ee101cbb1f3719611cd61db479c2.pdf?productCode=C16581
  3. Microchip MCP73831/2 DS20001984H (June 2020), p. 4 and p. 26: charge termination at ITERM/IREG 7.5 % (5.6–9.4 %) for option AC – https://ww1.microchip.com/downloads/en/DeviceDoc/MCP73831-Family-Data-Sheet-DS20001984H.pdf
  4. docs/concepts/done/maker-coverage.md, HT-5 and appendix PWR 2

Applies where matcher loaded_cell

HINT.charge_termination a charger's end of charge is not simulated

note

A linear charger (behaviour charger): consider the end of its charge cycle – the termination, the recharge and the status outputs that follow them; the simulation charges while the cell is below the float voltage and never terminates.

Why
A charger ends the charge in its constant-voltage phase once the current has stayed below a fraction of the programmed current for a filter time – TP4056 1/10 (ITERM 120–140 mA at RPROG 1.1 kΩ, 0.8–4 ms), MCP73831-2AC 7.5 % (5.6–9.4 %, 0.4–3.2 ms) –, latches it off, and starts again once the cell has fallen below a recharge threshold (TP4056 100–200 mV below the float voltage, about 4.05 V; MCP73831-2AC 96.5 % of VREG). The TP4056 does not terminate while it trickle-charges or while its thermal regulation limits the current. An operating point has no history: the simulation's charger leaves the termination out (handbook 5.1), so no run shows the end of charge, the recharge, or what CHRG, STDBY and STAT do then (rules-at-scale.md, decision 17).
What to do
Read the end of the charge cycle in the charger's datasheet – the termination fraction, its filter time, the recharge threshold – and check what follows from it on the board: what the status outputs do at the end of charge and what reads them, whether anything on the cell keeps the current above the threshold (HINT.power_path), a full charge on the first board. Accept the hint with how it is handled.
Sources
  1. NanJing Top Power ASIC Corp. TP4056 REV_2.4, p. 2: terminates when the charge current drops to 1/10 of the programmed value after reaching the final float voltage; p. 5: ITERM 60/70/80 mA at RPROG 2.2 kΩ and 120/130/140 mA at 1.1 kΩ, tTERM 0.8/1.8/4 ms, ΔVRECHRG 100/150/200 mV, tRECHARGE 0.8/1.8/4 ms (min/typ/max); p. 9: termination when PROG stays below 100 mV for the filter time, the charge current latched off, C/10 termination disabled in trickle charging and thermal limiting, a new cycle below the 4.05 V recharge threshold – https://datasheet.lcsc.com/datasheet/pdf/d328ee101cbb1f3719611cd61db479c2.pdf?productCode=C16581
  2. Microchip MCP73831/2 DS20001984H (June 2020), p. 4: ITERM/IREG 5.6/7.5/9.4 %, VRTH/VREG 94/96.5/99 %; p. 5: tTERM 0.4/1.3/3.2 ms; 4.7 and 4.8 p. 14: terminated in constant-voltage mode when the average charge current falls below the factory-set percentage, latched off (Charge Complete), a new cycle below the recharge threshold; p. 26: option AC – ITERM/IREG 7.5 %, VRTH/VREG 96.5 % – https://ww1.microchip.com/downloads/en/DeviceDoc/MCP73831-Family-Data-Sheet-DS20001984H.pdf
  3. edakit handbook 5.1, behaviour charger (sim/netlist.py ic_charger): termination belongs to the charge cycle, not to an operating point
  4. docs/concepts/done/rules-at-scale.md, decision 17 (2026-10-31): behaviour over time gets no state model; a hint names the risk where the part is used

Applies where matcher charger

HINT.protection_timing a cell protection's release and delays are not simulated

note

A cell protection IC (behaviour protection): consider its release voltages and its detection delays – the simulation switches the cell off and on at the detection thresholds, the moment the cell crosses them.

Why
A protection IC cuts the cell off only after a delay, and lets it go again at other voltages or events. PUOLOP's DW01A opens the discharge MOSFET 55 ms typ., 200 ms max. after the cell falls below 2.40–2.60 V and releases it above 2.80–3.00 V; it opens the charge MOSFET 110/200 ms after 4.25–4.35 V and releases below 4.05–4.15 V; an overcurrent trips 7/20 ms after 130–170 mV across the MOSFETs, a short 400/600 µs after 0.82–1.75 V. Its timing diagrams show the discharge coming back when a charger is connected after an overdischarge and when the load is removed after an overcurrent, the charge when a load is connected after an overcharge. An operating point has no history: the simulation's protection is a cell coming from the normal range (handbook 5.1), and a transient run switches at a threshold without delay – a load step shorter than the delay cuts the cell off there and not on the board, and no run shows the board staying off until its release (rules-at-scale.md, decision 17).
What to do
Hold the board's load steps – a motor start, a radio burst, capacitors charging – against the overcurrent threshold and its delay, and the cell's voltage under load against the overdischarge threshold; decide how the board starts again after a cut-off. Accept the hint with how it is handled.
Sources
  1. PUOLOP DW01A data sheet Rev B (2016-04-12), p. 4: VOC 4.25/4.30/4.35 V, VOCR 4.05/4.10/4.15 V, VOD 2.40/2.50/2.60 V, VODR 2.80/2.90/3.00 V, VEDI 130/150/170 mV, Vshort 0.82/1.36/1.75 V (min/typ/max); TOC 110/200 ms, TOD 55/200 ms, TEDI 7/20 ms, Tshort 400/600 µs (typ/max); p. 5–7 timing diagrams 1–3, read from the graphs: after an overcharge OC returns to VCC when a load is connected, after an overdischarge OD returns when a charger is connected, after an overcurrent or a short OD returns when the load is removed – https://datasheet.lcsc.com/datasheet/pdf/0d2b2b5e8d1207bf276387cb4ff3a495.pdf?productCode=C351410
  2. edakit handbook 5.1, behaviour protection (sim/netlist.py ic_protection): no hysteresis, no delays – the state of a cell coming from the normal range
  3. docs/concepts/done/rules-at-scale.md, decision 17 (2026-10-31): behaviour over time gets no state model; a hint names the risk where the part is used

Applies where matcher cell_protection

HINT.pd_negotiation a USB PD sink's negotiation is not simulated

note

A USB PD sink (behaviour pd_sink): consider the board at 5 V before the negotiation and at the requested voltage after it, and what PG and the CC lines do – the simulation takes VBUS at the voltage a scenario's source gives.

Why
At attach a Type-C source puts vSafe5V on VBUS and only then starts the USB PD communication, carried on the CC wire (USB Type-C R2.0, 4.5.2.2.9.1, 4.6.2.4): the voltage the sink's configuration requests (REQ.value/pd_request) follows once source and sink have agreed, and only from a source that offers it – the CH224 manual does not say what the CH224K does when the source does not. The CH224K signals power good on PG, active low and open drain, and talks to the source on CC1 and CC2 itself, in its reference schematic straight to the receptacle (manual V2.1, table 4-2, 6.2). The simulation's pd_sink is the VDD shunt alone (handbook 5.1): no negotiation, no PG, no CC (rules-at-scale.md, decision 17).
What to do
Run the parts on VBUS at both voltages – a scenario with the source at 5 V and one at the requested voltage –, switch on by PG (or in firmware) what needs the requested voltage, and say what the board does when a source does not offer it; the CC lines from the receptacle to the PD sink as its reference schematic draws them. Accept the hint with how it is handled.
Sources
  1. WCH CH224 手册1 (CH224 data sheet, manual 1), V2.1 (PDF of 2025-01-23), table 4-2 p. 3: CH224K CC1, CC2 'Type-C CC 信号线' (the Type-C CC lines), PG 'OD, 默认 Power Good 指示,低电平有效' (open drain, by default the Power Good indication, active low); 6.2 p. 9 CH224K reference schematic: CC1 and CC2 straight to the receptacle, PG left open; the manual gives no timing for PG and does not say what happens when the source does not offer the requested voltage – https://datasheet.lcsc.com/datasheet/pdf/4f12eebccb4eda2c0038806df0155265.pdf?productCode=C970725
  2. USB Type-C Cable and Connector Specification Release 2.0 (August 2019), 4.5.2.2.9.1 p. 177: a source supplies VBUS within tVBUS ON of entering Attached.SRC and does not initiate USB PD communications until VBUS reaches vSafe5V; 4.6.2.4 p. 220: USB PD communication is Bi-phase Mark Coded on the CC wire, VBUS operationally stable before it starts – https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf
  3. edakit handbook 5.1, behaviour pd_sink (sim/netlist.py ic_pd_sink): the VDD shunt; the requested voltage is REQ.value/pd_request's, the charger the project's source
  4. docs/concepts/done/rules-at-scale.md, decision 17 (2026-10-31): behaviour over time gets no state model; a hint names the risk where the part is used

Applies where matcher pd_sink

HINT.input_polarity a power input without a polarity check

note

A supply connector the graph does not mark as reversible: consider whether it can be plugged the wrong way round. Not a battery holder – PATH.reverse checks every one as a source that may be reversed.

Why
There is no polarity standard for many plugs: JST-PH battery packs differ between vendors, barrel jacks are centre-positive or – after Boss – centre-negative; PATH.reverse checks a connector only when it is marked reversible (maker-coverage PWR 7, PWR 32).
What to do
Give it "source": "reversible" so that PATH.reverse checks what a reversed source reaches, or a keyed connector whose polarity cannot be swapped.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix PWR 7 and PWR 32 (tagged extracted)

Applies where matcher unmarked_power_input

HINT.thermal_copper thermal resistance needs its copper

note

A part whose temperature rests on rth_ja_k_per_w: consider whether the layout gives the copper that figure assumes.

Why
Rth(j-a) is measured on the datasheet's test board – often a large copper area; on a small pad the part runs hotter than LIM.t computes (maker-coverage MOT 11, PWR 3, PWR 12).
What to do
The copper and vias of the datasheet's layout under the part, named in the hand-over (layout.notes); or a figure for the board's copper.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix PWR 3, PWR 12, MOT 11 (tagged to verify)

Applies where matcher rated_by_copper

HINT.cable_line a signal line on a cable

note

A signal net runs through a cable: consider what the cable's length and the world at its end do to it.

Why
A long lead picks up interference and has capacitance: an input needs a stronger pull and filtering, an output's edges ring, a clock or data line needs its return beside it (maker-coverage MOT 31, AUD 28–30, LED 4).
What to do
Inputs: a pull-up of 10 kΩ or less, an RC with a Schmitt-trigger input, a TVS; outputs: a series resistor at the source; data and clocks: a return wire beside each signal, twisted pairs.
Sources
  1. docs/concepts/done/maker-coverage.md, appendix MOT 31 (Marlin and Voron documentation, read in full)

Applies where matcher cable_line