Skip to the content
4 layers100 × 80 mmEmb multirail smps, the printed circuit board in 3D

Compact multi-output switch-mode power supply in Altium: synchronous buck, boost and LDO stages on a 4-layer board, with loop compensation, thermal analysis and EMC pre-compliance.

Size
100 × 80 mm
Copper layers
4
Thickness
1.7 mm
Parts
79
Nets
57
Pads
268
Tracks, vias
538, 143
Pours
6
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
16 Oct 2026
Updated
16 Oct 2026

Overview

Emb multirail smps is an open-source printed circuit board by CGainsWorks, from the CGainsWorks/emb-multirail-smps repository on GitHub, published under the MIT licence. It is a 4-layer board of 100 × 80 mm with 79 parts on 57 nets, routed with 538 tracks and 143 vias.

It is built around the TPS54317RHFR, AO3400A and CSD18543Q3A, with the PMEG6010CEH and SMF36A among its other parts. Its parts include 28 capacitors, 16 resistors, 4 ICs, 4 transistors and 4 inductors. It belongs with the power boards of this library.

Main components

5

README

hardware/kicad/README.md

KiCad project

KiCad 8 schematic and four layer board for the supply. KiCad is free and the EDA tool a hardware team without an Altium licence would use; the brief named Altium, which is not available here.

Nothing here has been fabricated, assembled, powered or measured.

filewhat it is
emb-multirail-smps.kicad_schRoot sheet: the four stage sheets below and an overview
input_5v.kicad_schInput terminal, fuse, TVS, differential mode filter, +5V buck (LTC3891)
buck_3v3.kicad_sch+3V3 voltage mode buck (TPS54317) and its Type III network
boost_12v.kicad_sch+12V synchronous boost (TPS43061)
ldo_outputs.kicad_sch+1V8A LDO (LP5912-1.8), its input RC filter, preload and the output terminal
smps.kicad_symSymbols for the two controllers KiCad's library does not ship, drawn from their data sheet pin tables
emb-multirail-smps.kicad_pcbFour layer board, 100 by 80 mm, to docs/stackup.md
emb-multirail-smps.kicad_proProject, net classes and design rules
emb-multirail-smps.kicad_druOne custom rule: pad to pad gaps inside library land patterns

Where the values come from

Every part carries a Basis field:

  • model: the value the simulation in simulation/smps uses. The inductors, shunts, capacitor banks, dividers, compensation networks, the input filter and the LDO filter and preload.
  • datasheet: support parts sized from the controller's data sheet, with the equation or table quoted in the part's description or note. Timing resistors, bootstrap, soft start, bias and bypass capacitors. These are not simulated.
  • choice: a decision with no equation behind it, such as a pull-up value or a 0 ohm link.

Every part also has a real manufacturer part number in its MPN field. The headline ratings of each were checked on the manufacturer's or a distributor's listing; where the data sheet and the model disagree it is written down in outputs/VERIFY.csv. Nothing has been ordered.

Each feedback divider has a 0603 0 ohm link between the rail and the top of the divider (R14, R22, R32). Replacing it with 20 ohm gives the injection point the bring-up Bode measurement needs.

How it is checked

scripts/kicad/run_checks.sh does what CI does, in the pinned kicad/kicad:8.0.9 image:

  1. kicad-cli sch erc with every severity enabled. It has to report nothing at all, warnings included.
  2. kicad-cli sch export netlist, then scripts/kicad/check_netlist.py, which holds the exported netlist to the simulation: every R, L and C in every ngspice deck CI runs is matched to the part it stands for, by value (after the DC bias derating the model applies to ceramics) and by the nets it joins (after the 0 ohm links are closed); the inductors, shunts and capacitor banks are compared with smps.components; the compensation values with outputs/compensation_values.csv; and each regulated rail's set point is computed from the selected controller's reference and the divider. Change a value in KiCad and CI fails.
  3. With --board, kicad-cli pcb drc --schematic-parity. Errors fail; warnings are listed.

How it was made

The schematic was generated from simulation/smps/hardware.py by scripts/kicad/gen_schematic.py, in the label style: every pin has a short wire and a net label. That makes the connectivity explicit and checkable; it is less pleasant to read than a schematic drawn by hand. Regenerate it with

text
python scripts/kicad/gen_schematic.py --symbols <KiCad symbols directory>

and the check above confirms the result still matches.

The board was placed by scripts/kicad/gen_pcb.py, one region per stage with the switching loop parts in the first row of each. It was routed by scripts/kicad/route_board.sh: plane vias for every ground, VIN, +5V and +3V3 pad, 0.30 mm thermal vias under the exposed pads, Freerouting 2.4.1 for the rest, power tracks widened afterwards as far as clearance allows and up to three repair passes that take up whatever DRC objects to and route again.

The board is not finished. Five connections are unrouted (STATUS.md lists them) and neither the generated placement nor the autorouted copper has been through the review in docs/layout_rules.md. DRC is otherwise clean and CI holds it there.

Parts

79
QtyValueFootprintReferences
510uFCapacitor_SMD:C_0805_2012MetricC11, C13, C18, C19, C23
522uFCapacitor_SMD:C_1210_3225MetricC4, C5, C6, C9, C10
4100nFCapacitor_SMD:C_0402_1005MetricC16, C21, C24, Cc2
30Resistor_SMD:R_0603_1608MetricR14, R22, R32
3100kResistor_SMD:R_0402_1005MetricR13, R21, R40
347nFCapacitor_SMD:C_0402_1005MetricC17, C20, C27
20Resistor_SMD:R_0402_1005MetricR33, R34
2100nFCapacitor_SMD:C_0603_1608MetricC14, C26
210uFCapacitor_SMD:C_1210_3225MetricC1, C2
222uFCapacitor_SMD:C_1206_3216MetricC7, C8
2270pFCapacitor_SMD:C_0402_1005MetricCp1, Cp2
24.99kResistor_SMD:R_0402_1005MetricRb1, Rb3
2AO3400APackage_TO_SOT_SMD:SOT-23Q3, Q4
2CSD18543Q3APackage_SON:VSON-8_3.3x3.3mm_P0.65mm_NexFETQ1, Q2
11.3nFCapacitor_SMD:C_0402_1005MetricCf3
11.5uHInductor_SMD:L_Coilcraft_XAL4020-XXXL2
110.2kResistor_SMD:R_0402_1005MetricR1
110kResistor_SMD:R_0402_1005MetricR31
110uHInductor_SMD:L_Coilcraft_XAL7050-XXXL4
1115Resistor_SMD:R_0402_1005MetricR3
1147kResistor_SMD:R_0402_1005MetricR30
115nFCapacitor_SMD:C_0402_1005MetricCc1
1180Resistor_SMD:R_0603_1608MetricRpl1
11MResistor_SMD:R_0603_1608MetricR11
11uFCapacitor_SMD:C_0603_1608MetricC25
12.2uFCapacitor_SMD:C_1210_3225MetricC12
12.4kResistor_SMD:R_0402_1005MetricRc1
1210kResistor_SMD:R_0402_1005MetricR12
1220uFCapacitor_SMD:CP_Elec_10x10.5C3
122nFCapacitor_SMD:C_0402_1005MetricC22
122uHInductor_SMD:L_Coilcraft_XAL6060-XXXL3
126.1kResistor_SMD:R_0402_1005MetricRt1
13.3nFCapacitor_SMD:C_0402_1005MetricCf1
13.74kResistor_SMD:R_0402_1005MetricRb2
1330mResistor_SMD:R_0805_2012MetricRf1
13AFuse:Fuse_1206_3216MetricF1
13kResistor_SMD:R_0402_1005MetricRc2
14.42kResistor_SMD:R_0402_1005MetricRf2
14.7uFCapacitor_SMD:C_0805_2012MetricC15
144.2kResistor_SMD:R_0402_1005MetricRt2
146.4kResistor_SMD:R_0402_1005MetricR20
150mResistor_SMD:R_0805_2012MetricRs2
15mResistor_SMD:R_Shunt_Vishay_WSK2512_6332Metric_T1.19mmRs1
16.8uHInductor_SMD:L_Coilcraft_XAL8080-XXXL1
171.5kResistor_SMD:R_0402_1005MetricR10
175pFCapacitor_SMD:C_0402_1005MetricCf2
1LP5912-1.8DRVRPackage_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mmU5
1LTC3891EFE#PBFPackage_SO:HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP2.74x3.86mmU1
1OUTPUTSTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-10-5.08_1x10_P5.08mm_HorizontalJ2
1PMEG6010CEHDiode_SMD:D_SOD-123FD2
1SMF36ADiode_SMD:D_SOD-123FD1
1TPS43061RTERPackage_DFN_QFN:Texas_RTE_WQFN-16-1EP_3x3mm_P0.5mm_EP1.2x0.8mmU4
1TPS54317RHFRPackage_DFN_QFN:QFN-24-1EP_4x5mm_P0.5mm_EP2.65x3.65mmU3
1VIN 8-36VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-2-5.08_1x02_P5.08mm_HorizontalJ1

Similar boards

  • 4 layers102.5 × 62 mmSensor Cell with Comms, the printed circuit board in 3D

    Sensor Cell with Comms

    Molly-M-Laugh/Senior-Final

    A collection of documentation and files for our group's final senior design project

    93 parts
  • 2 layers57.4 × 48.5 mmStarter d11 rev2, the printed circuit board in 3D

    Starter d11 rev2

    Secoh/Electronics

    Educational etudes related to electronics, schematics, PCB layout, etc.

    52 partsMIT
  • 2 layers40 × 40 mmCorridor node, the printed circuit board in 3D

    Corridor node

    lucanastasio/myHomeAutomation

    Home automation stuff

    63 parts1
  • 2 layers68.6 × 53.3 mmEos ke16z board, the printed circuit board in 3D

    Eos ke16z board

    embeddedos-org/eCAD-Hardware-Products

    Hardware designs + EE docs + Board datasheets of Multiple products

    67 parts8MIT
  • 4 layers125 × 92 mmCarradio peripheral rev03, the printed circuit board in 3D

    Carradio peripheral rev03

    gschuurman/android_vendor_gschuurman_vehicle_interfaces

    vehicle interfaces for android automotive for a custom headunit

    269 parts
  • 6 layers160 × 100 mmAdrmu6layer, the printed circuit board in 3D

    Adrmu6layer

    marcoreps/ADRmu

    ADR1000 10V standard

    240 parts149
  • 2 layers186.2 × 66.3 mmRf main, the printed circuit board in 3D

    Rf main

    esden/mcHF-kicad

    This repository contains the KiCad import of the Altium design files for the mcHF QRP radio.

    314 parts3
  • 4 layers66 × 58.5 mmFOC Driver, the printed circuit board in 3D

    FOC Driver

    Loredati-svg/BLDC-FOC-Motor-Driver

    Single-motor BLDC/PMSM FOC driver: STM32G431 + DRV8323RH, 4-layer round PCB with on-board MA730 magnetic encoder. Motor block for a self-balancing robot. Designed in KiCad 10.

    96 parts

Questions

How big is the Emb multirail smps PCB?

It measures 100 × 80 mm and has 4 copper layers, 1.7 mm thick.

What parts does the Emb multirail smps use?

79 parts, built around the TPS54317RHFR, AO3400A, CSD18543Q3A and PMEG6010CEH. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Emb multirail smps KiCad files?

From the CGainsWorks/emb-multirail-smps repository on GitHub, at the commit this page was made from: the board is hardware/kicad/emb-multirail-smps.kicad_pcb and its schematic hardware/kicad/boost_12v.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Emb multirail smps design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).