Skip to content

Releases

0.1.45241

Choose a tag to compare

@afkiwers afkiwers released this 11 Nov 04:13

Full Changelog: 0.1.44625...0.1.45241

0.1.44625

Choose a tag to compare

@afkiwers afkiwers released this 06 Nov 21:40

0.1.44625

Analysis

  • Via and pin joints spread their current over the grid nodes round the barrel, so results no longer jump when a via gains a joint.
  • Plane screening (off by default: Preferences, analysis.plane_screening, --plane-screening on|off) models a plane with copper above and below it as two face sheets. Split-layer boards need about 1.1x the iterations instead of 1.3–3.8x.
  • Electro-thermal rounds keep the first solve's mesh, and the thermal mesh no longer depends on the last bits of the heat.
  • Audit fixes: partial-inductance kernels depend only on their cache key, plane-strip resistance no longer freezes at high frequency, a loop gain below 1 at DC keeps its phase margin, and a path's Bode plot shows only the op-amp channels the signal passes.

Plugin window

  • Maps and plots are no longer drawn on the GUI thread during a paint. A "Drawing the map…" card with a moving bar shows while a view takes longer than a quarter of a second.
  • The tab strip is cached, and a Windows-only 390 ms freeze in Run checks is gone. The worst stall in a Simulate on the test board went from 457 ms to about 230 ms.

Docs

  • The README has current screenshots, plus new ones of a power stage's hot loop, the cross-section and spectrum, and the Fixes tab with a proposed filter.

0.1.44089

Choose a tag to compare

@afkiwers afkiwers released this 03 Nov 04:16

GroundTruth – changes since 0.1.44041

New

  • Trace a path between two pads. Select the two end pads in KiCad and press Add KiCad selection. GroundTruth traces every route between them, through any two-pin part and through labelled op-amps, comparators and buffers. If there's more than one route, you pick one, shortest first.
  • Path map tool. tools/dev/path_map.py BOARD --from PIN --to PIN lists every route between two points and everything that hangs on it: parts to ground and supplies, bias op-amps and their dividers, IC pins. It can also write JSON and a Graphviz graph.
  • Multi-channel op-amps and comparators. One GT field can describe every channel of a dual or quad. Write groups (amp_in:2, amp_inv:1, amp_out:14, amp_in:4, …) or the compact form (amp_in:[2,4], amp_inv:[1,5], amp_out:[14,6], buf_in:[…], buf_out:[…]). Incomplete or mismatched labels are reported instead of silently ignored.
  • Inductor DCR checked against the Parts tab. The Parts tab's column is now R / DCR, and it marks the 50 mΩ placeholder. A converter's Inductor DCR shows ◇ when it matches the inductor's R and ! when it differs. An empty DCR now uses the inductor's real R.
  • Reset one field. Click a field's ! mark, or right-click the field, to take its value back from the schematic or the Parts tab.
  • Receiver pins filter. Filter the list as you type, Select all / Deselect all for the pins shown, and a count of ticked pins.
  • Loading card. While a board loads, a card in the tab area shows the board, the current step and its progress, so the empty tabs don't look like lost settings.

Fixed

  • A path whose board-wide plane model doesn't converge now gets a result from its route model, instead of "solver did not converge". A note says that plane resonances are left out.
  • Zones that KiCad filled but that came out empty no longer bring up the refill question on every load.
  • Every settings form scrolls, so its buttons stay reachable on smaller screens.
  • A busy clipboard now shows "Clipboard busy" instead of blocking the window with an error box.
  • A converter's DCR beside the Parts tab's placeholder no longer counts as a missing loss input.

For developers

  • tools/make_pcm_package.py --local builds a package for local testing without the release key. That package doesn't update compute servers.

0.1.44041

Choose a tag to compare

@afkiwers afkiwers released this 02 Nov 20:18

GroundTruth 0.1.44041

Since the last tag (0.1.43975, commit 685176d), one change has been merged:

Clearer forms on every tab

  • Every tab's settings form is now split into titled sections, like the Converters tab. Each section has a short note on what it's for, its fields are indented under it, and a line separates it from the next.
    • Signal paths: Path, Signal, Source and load, Bode sweep
    • Bridges: Bridge, Conducted emission, Operating point, Switches, Motor, Sweep, Selected leg
    • DC loads: Rail, Loads
    • Power integrity: Supply, Target, Regulator, Read at
    • Signal integrity: Differential pair, Pair checks, Impedance target, Limits. These replace the tab's old headings.
  • Hovering a field's label shows the same tooltip as the field itself.
  • Multi-line fields and lists have their label aligned to their top.

0.1.43975

Choose a tag to compare

@afkiwers afkiwers released this 02 Nov 09:15

GroundTruth 0.1.43975: changes since 0.1.43621

New

  • Efficiency over load current: every Simulate now draws each power stage's efficiency and losses, stacked by cause, against its load current.
    • New Converters fields: Q_g, gate-drive voltage, controller I_q, the currents to sweep, and a CSV of bench measurements to overlay.
  • Conducted-emission classes as in TI WEBENCH: CISPR 22 CLASS A / B and CISPR 25 CLASS 1–5, chosen per stage. A new help section explains each class, with graphs.
  • Example filter schematics on the Fixes tab: each design change is shown with an example schematic of its filter or snubber. Right-click to open it in a window, save it as PNG, or copy the parts.
  • Draw hot loop on board: each power stage's hot loop of the last Simulate, drawn on a User layer.
  • Current capacity limit under Preferences › Thermal.
  • Terminal metal per terminal: a metal pin value and a Terminal Contact field say where a part's die or clip joins its terminal.
  • Clear past jobs: under Preferences › Compute server, protected by a password.

Improved

  • Plane-pair inductance: now about 13–20 % lower than before on 0.2 mm FR4, after a cross-check with KiPI. Loop and power-integrity inductances drop accordingly.
  • Converters form: grouped into titled sections, each with a one-line note. Integrated stage greys out High side, Low side and Switch node.
  • Results tab: "Draw on board ▾" and "Further analysis ▾" drop-downs. Thermal moved into the Results tab.
  • Issues tab: sort by any column, a "Show checks" list, and zoom to every issue.
  • Parts tab: sort by column, and column widths are kept.
  • Spread spectrum: the rate field's hint follows the mode, and the field is greyed for random.

Fixed

  • The conducted limit line is drawn over each band's full width, so a band holding a single harmonic now shows its limit.
  • The window failed to open ("timer can only be started from the main thread").
  • Drawing many arrows timed out.
  • Commits to KiCad failed with several editors open.
  • Text overlapped in the Fixes schematics.
  • A reference net deleted from the board blocked every run. It is now offered for removal.

0.1.43621

Choose a tag to compare

@afkiwers afkiwers released this 30 Oct 22:14

⚠️ Before you upgrade

The plugin's identifier changed from io.github.iwers.groundtruth to io.github.afkiwers.groundtruth, to follow
KiCad's add-on guidelines. KiCad treats it as a new package:

  1. In Plugin and Content Manager → Installed, uninstall the old GroundTruth first, or every button shows
    twice.
  2. Install the new package and restart KiCad. KiCad fetches the plugin's dependencies again (several hundred MB),
    so it can take a couple of restarts before the buttons show.

Your Preferences are kept. A GPU (PyTorch) or Intel MKL install has to be repeated in the new environment.

New in 0.1.43621

  • Logic buffers (Schmitt triggers) in signal paths. A path through a buffer such as an SN74LVC2G17 is now one
    path. Simulate drives the part after the buffer with the buffer's own edge (its rise time and supply swing), and
    the Bode plot ends at the buffer's input. A Schmitt input is checked as a victim against its own hysteresis.
    • How a part is recognised as a buffer: set it with GT = buf_in:1, buf_out:6, or with the symbol fields
      Threshold Rising, Threshold Falling or Hysteresis, with Rise Time, Zout and Cin
      optional.
    • What detection runs through: the buffer itself, and an input RC filter resistor of up to 100 kΩ in front
      of it.
  • Motor bridges with per-phase current sensing. When each phase's low side returns to ground through its own
    shunt (or some do and some don't), detection still finds one bridge. Each leg's hot loop closes through its
    shunt, and the Bridges tab shows and edits each leg's return net and shunt.
  • 4-terminal (Kelvin) shunts. Only the force pads carry the current, picked by their copper area, so custom
    pads work too. A bridge whose phases return through Kelvin shunts is detected as one bridge.
  • Return-current arrows in their own colour. On the heatmaps and in the HTML report, the return current's
    arrows are drawn in their own colour (cyan by default), while the current's own stay white. Change the colour in
    Preferences → Heatmaps → Return current arrows.

Improved

  • Simulate's progress bar now moves with the number of solves, as in "solve k of ≤ n". The n is a true upper
    limit: when a model finishes refining early, n drops and the bar jumps forward; it never goes backwards. It also
    moves through a motor bridge's solves; with a bridge alone in the run it used to sit at 100 %.
  • Reading the board while KiCad is busy: while KiCad runs a long operation such as Fill All Zones, GroundTruth
    waits for up to 10 minutes and shows how long it has waited, and Cancel stops it. Before, it failed after 5 s.
  • Transistors modelled as a short or a resistor (a surge stopper's or an ideal diode's FET) join drain and
    source only, never the gate.
  • The window's title shows the version: " – GroundTruth 0.1.xxxxx".
  • Message boxes have a Copy button and scroll when the message is long.
  • Bridges tab: the sweep fields say they are optional and run in addition to the operating point. An ⓘ button
    opens the help at the sweep.

Help and documentation

  • Bridges tab help: the four Results views, why a leg's hot loop stops at the phase node, motoring and
    generating, what the loop inductance covers, what a higher or lower value means and how to lower it, and why the
    map is at 100 MHz.
  • Help tables: names in the first column are no longer broken mid-word.
  • README: a new "Getting there" section shows the two toolbar buttons and how Add selected net works, for
    one net or a whole path selected with Ctrl+click.
  • Package: it now links the source, the issue tracker and the guides.

For developers

  • tools/dev/bridge_ground_check.py and tools/dev/input_path_check.py explain how detection reads a bridge's
    grounds and a power stage's input path. They are read-only and meant for boards that can't be shared.
  • tools/install_plugin.py removes a development copy left under the old identifier.

0.1.43323

Choose a tag to compare

@afkiwers afkiwers released this 29 Oct 23:29

GroundTruth 0.1.43323: changes since 0.1.43124

  • Current-density maps are more accurate. Every map shows the same sheet current in the copper that the thermal solve uses. Where current enters a plane, the routes, hot-loop, board-wide and sharper maps now read 0 there. Copper with no current shows in the log scale's lowest colour instead of the background colour. An invalid value (infinite or NaN) is blanked and counted instead of breaking the figure.

  • Arrows are no longer left out where current flows. They now reach down to the heatmap's log floor (1/1000 of the peak). Every region that carries current gets at least one arrow. The limit for arrows drawn on the board is raised to 3000.

  • Draw arrows on board with "main layers" or "all layers" draws every layer the maps show, together. Supply arrows go on User.7 and return arrows on User.6, up to 6000 arrows shared among the layers. The legend names the layers and the layer with the peak.

  • Markers can be turned on and off. The Results tab has a Markers box to show all, none or some of them. Its ▾ menu switches each kind on its own:

    • via markers and part markers;
    • the shares written at the markers;
    • switch pins and switch names;
    • issue rings and the hot spot;
    • the route, part outlines and part names.

    The choices are kept between sessions. Exported reports and each Simulate's saved report show the same markers.

  • One window per layer. A ⤢ <layer> button next to the map toolbar opens that layer alone in a maximised window. It follows the tab's view, arrows, scale and markers.

  • Fix: zooming with the toolbar's rectangle no longer pushes the map under the colour bar.

0.1.43124

Choose a tag to compare

@afkiwers afkiwers released this 27 Oct 11:29

GroundTruth 0.1.43124: release notes (changes since 0.1.42863)

Update the plugin and every compute server together. Plugin and server versions must match, and the server now runs a new job type.

New

  • Terminal sheet resistance. A new part field, Terminal Sheet Resistance (Ω/□), or Terminal Metal (thickness and material), models an inductor's clip, a capacitor's or resistor's end cap, a FET's lead frame or a diode's tab as a resistive sheet over its pads. The part's current enters it evenly. Without either field the terminal stays a perfect plate.

  • Terminal current in maps (Preferences › Heatmaps): optionally adds the current flowing in parts' terminals to the copper's, so a lead frame no longer leaves a sharp edge in the map.

  • All layers in the Results tab's Layer list: every copper layer of the board, in stack order.

  • Return current on its own drawing layer. Draw arrows on board puts return-current arrows on User.6 (drawing.return_layer), the rest on User.7. Each layer gets a text block beside the board saying what it shows: view, layer share, nets, peak, busiest via.

  • Voltage spacing follows the solder mask (IPC-2221B Table 6-1):

    • B4 where the mask covers both conductors and the gap;
    • the larger of B2 and A6 for an exposed pad;
    • B2 for bare copper in an opening.

    Mask openings, margins and via tenting are read from the board. A new setting, Solder mask (Preferences › Run checks, or safety.solder_mask: ipc | bare), leaves the mask out for designs that must be spaced as bare copper.

  • Bulk edit in the Converters tab: select several stages. Fields they share show their value and differing ones show *. Only the fields you change are applied.

  • New warning, dc_path_missing: a stage whose output connector isn't reached from its inductor is now flagged, with the connector that is reached.

  • Electro-thermal coupling on the compute server: Thermal with coupling now runs every round on the server, as one job.

  • Example: an MFB low-pass filter project with its reference transfer function.

Improved

  • Clicking an issue zooms to it in KiCad for:
    • voltage spacing: both nets' copper at the gap;
    • part issues (capacitor voltage, resistor power, part temperature, ESD, decoupling): the part.
  • Current density maps now show the same quantity everywhere: the sheet current in the copper. Route and hot-loop maps no longer go dark where current enters a plane at a via or pad.
  • Map rendering: idle copper is drawn in the darkest colour instead of white, and a bad value is blanked and counted instead of breaking the map.
  • Board arrows stay on their own net's copper, so narrow tracks between pours keep their arrows.
  • Help: how ideal and op-amp transfer functions are derived, and long code lines now wrap.

Fixed

  • The voltage-spacing check depended on the order nets were listed, and could miss pairs.
  • A FET's drain-tab and switch-tab terminals ignored the terminal sheet field.
  • The server-update texts said running jobs finish first. Updating actually cancels them at once.
  • A server older than the plugin now reports a version mismatch instead of "unknown job kind".

Re-run after updating

  • Simulate: route and hot-loop maps, and terminal current in maps.
  • Run checks: the mask-aware voltage spacing.
  • Expect different numbers:
    • Voltage spacing: fewer issues on masked boards, since B4 allows 0.13 mm at 31-100 V instead of B2's 0.6 mm.
    • Hot-loop peak sheet current: slightly higher (about +3 % on a test buck), because feed points now count.

0.1.42863

Choose a tag to compare

@afkiwers afkiwers released this 25 Oct 19:26

GroundTruth 0.1.42863

Faster Simulates

  • Faster sparse solver. The preconditioner's factorisation can now use Apple Accelerate (macOS 15.5+) or Intel MKL PARDISO (Windows, optional) instead of SuperLU: factorisations 10–50× faster in a third to a half of the memory, so more solves run side by side. Results are the same to the solver's tolerance. Choose it under Preferences › Sparse solver (default: auto), with analysis.sparse in the settings file, or with --sparse on the command line.
  • Memory-aware scheduling. Each round of solves is admitted by the memory it actually needs, so large boards no longer run one solve at a time.
  • Lighter GMRES. The Krylov basis is stored in single precision with double-precision arithmetic (half the memory), and solves stop as soon as the true residual meets the tolerance.
  • On an 8-thread Mac at 8× resolution: a six-net job went from 974 s to 431 s, and a four-converter job from 4 520 s to 2 669 s.

New installers

  • tools/install_sparse.cmd (Windows): installs Intel MKL into the plugin's Python for PARDISO. Run once with KiCad closed.
  • The Mac compute-server installer now builds the Apple Accelerate helper itself (needs Xcode's command line tools).

Fixes

  • Cbias: a capacitor on an op-amp output that the DC operating point can't place gets the op-amp's supply as its bound again.
  • clearance_voltage: a pair beside a part's own pads could be missed depending on net order, and pairs were named in an order that changed between runs. Both fixed.

Note for anyone with a clone

The repository's history was rewritten. Re-clone, or run git fetch followed by git reset --hard origin/main.