Ki-PIDA is a native KiCad plugin designed for Direct Current (DC) Power Integrity (PI) analysis. It allows PCB designers to simulate voltage drops (IR drop), current densities, and thermal rise directly within the KiCad Pcbnew environment, eliminating the need for expensive proprietary tools or complex external workflows.
Modern electronics operate with tight voltage margins. An IR drop of just 30mV can lead to system instability in sub-1.0V Socs. High current densities also pose thermal risks and reliability hazards like electromigration.
Ki-PIDA democratizes high-end PI analysis by:
- Ensuring Stability: Detect voltage violations at the layout stage.
- Reducing Iterations: Identify "neck-down" regions and hotspots before prototyping.
- Seamless Workflow: Interactive layout-driven analysis without leaving KiCad.
- Native Integration: Built for KiCad 9.0+ using the Python Scripting API.
- Power Tree Management: Auto-discover power rails and manage complex hierarchies including VRM efficiency modeling.
- Hybrid 2.5D Solver: Fast and accurate simulation using an optimized resistive mesh approach.
- Multi-Physics Support: Coupled electro-thermal simulation to account for temperature-dependent copper resistivity.
- Multi-Rail Analysis: Simulate complex power trees with nested regulators (Buck, LDO) and enforce correct dependency solving.
- Project Persistence: Automatically saves your power tree configuration (sources, loads, regulators) in the project directory, so you don't lose your setup.
- Visual Feedback: Interactive heatmaps for voltage and current density, with dedicated tabs for each power rail in the system.
Ki-PIDA is designed to run within the KiCad 9.0+ environment. Follow these steps to install and enable the plugin:
Ki-PIDA communicates with KiCad via the new IPC-based API.
- Open KiCad.
- Go to Preferences > Common.
- Under the API section, check the box for Enable API.
- Restart KiCad if prompted.

- Locate your KiCad plugins directory:
- Windows:
%APPDATA%\kicad\9.0\plugins - Linux:
~/.local/share/kicad/9.0/plugins - macOS:
~/Library/Application Support/kicad/9.0/plugins
- Windows:
- Download or clone this repository.
- Copy the
KiPIDAfolder into thepluginsdirectory.
Note
Ki-PIDA includes a self-contained dependency manager that will automatically install required libraries (NumPy, SciPy, Shapely, Matplotlib) upon first launch if they are missing from your KiCad Python environment.
Follow these steps to perform a DC Power Integrity analysis on your board.
Open your PCB layout in KiCad Pcbnew and click the Ki-PIDA icon in the top toolbar to open the analyzer.
- Auto-Discovery: Upon launch, Ki-PIDA scans your board for power rails and attempts to load any existing configuration from
kipida_config.jsonin your project folder. - Add Roots: Identify your main input rails (e.g.,
+12V_IN,VBUS). - Define Regulators: Use the + Regulator button to create relationships between rails (e.g.,
12V -> 5V). Ki-PIDA supports:- Linear Regulators (LDOs): Pass current 1:1 from input to output.
- Switching Regulators (Buck/Boost): Conserve power based on efficiency (e.g., 90%).
- Multi-Output Support: Handle PMICs where one component drives multiple output rails.
Identify where power enters this net:
- Click + Source.
- Select the source component (e.g., a regulator
U1or connectorJ1). - In the dialog, check the Pads that are connected to the power net.
- Click OK.
Identify the components consuming power:
- Click + Load.
- Select the sink component (e.g., MCU
U2or FPGAU3). - Enter the Total Current (A) consumed by this component (e.g.,
0.5for 500mA). - Check the Pads through which the current is drawn.
- Click OK.
Before running, you can adjust the Mesh Resolution (mm). A value of 0.1mm is usually sufficient for accurate results.
- Click Run Simulation.
- The solver analyzes the power tree topology to determine the correct solution order (Leaf-to-Root) for current propagation.
- Example: For a
12V -> 5V -> 3.3Vchain, it solves 3.3V first, applies that load to the 5V rail, solves 5V, and finally solves the 12V input.
Once "Simulation Success" appears, the UI will jump to the Results tab.
- Rail Selection: A tab will be created for each power rail in your system.
- Per-Rail Visualization: Inside each rail's tab, you can view:
- 3D View: A 3D voltage plot of the entire net.
- Layer Views: Individual 2D heatmaps for every layer containing copper for that net.
Tip
Use the Enable Debug Log checkbox if you encounter issues during meshing or solving to see more detail in the Log tab.
Ki-PIDA is built on a modular architecture designed for performance and maintainability.
- Extractor (
extractor.py): Interfaces with the KiCad API to pull filled zone geometry, track layouts, and physical stackup data. - Mesher (
mesh.py): Discretizes continuous copper geometry into a 2D/3D resistive grid (Rasterization). - Solver (
solver.py): Uses an Admittance Matrix (Stamps method) and optimized SciPy sparse solvers (SuperLU/CG) to solve the electrical system. - Visualizer (
visualizer.py): Generates heatmaps via Matplotlib and renders them as overlays in KiCad.
The tool utilizes a Hybrid 2.5D Finite Difference Method (FDM). It represents PCB layers as 2D grids of resistors connected vertically by via/PTH resistor elements. This provides the ideal balance between the speed of a 2D solver and the accuracy of a full 3D FEM for planar PCB structures.
- Languages: Python 3.9+
- UI: wxPython
- Math: NumPy & SciPy
- Geometry: Shapely
As of the current version, Ki-PIDA implements a functional end-to-end pipeline for DC IR drop analysis.
- Comprehensive Extraction: Extracts tracks, pads, and filled zones (respecting thermal reliefs and voids) from KiCad 9.0+ boards.
- 3D Meshing Engine: Converts geometry into a resistive mesh across multiple layers, correctly modeling via and PTH conductances.
- Robust Linear Solver: Solves the circuit using SciPy's sparse matrix backend. Includes island detection to warn about floating sections of copper that could cause numerical issues.
- Automated Diagnostics: Detects isolated copper nodes and disjoint electrical islands during the solve phase.
- Automated Rail Discovery: Instantly find power nets based on zone connectivity.
- Granular Control: Assign sources and loads down to the individual pad level.
- In-Memory Visualization: Instant generation of color-coded heatmaps to inspect voltage distribution without exporting files.
- Phase 1 (Current): DC IR Drop, basic thermal checks, and power tree UI.
-
Phase 2: AC Impedance Analysis (
$Z$ vs Frequency) and decoupling capacitor optimization. - Phase 3: Full 3D Thermal modeling with airflow convection.

