Repository navigation
Production JLCPCB Manufacturing
Status: Draft Project: Enigma-NG Author: Izzyonstage & GitHub Copilot Version: v.0.1.0 Associated Hardware Revision: Rev A Last Updated: 2026-05-11
This document defines the JLCPCB fabrication and assembly constraints that apply across all Enigma-NG boards. Board-level design specifications and the Global Routing Specification (GRS) should reference this document rather than restating these constraints individually.
JLCPCB stackup codes follow the pattern: JLC + 0N (layer count, zero-padded) + 16 (1.6mm
nominal board thickness) + 21 (copper weight: 2oz outer / 1oz inner) + -PPPP (primary prepreg type).
| Code segment | Meaning | Example value |
|---|---|---|
JLC |
JLCPCB identifier | fixed |
04 or 06
|
Layer count (4-layer or 6-layer) |
04, 06
|
16 |
Board thickness (1.6mm nominal) | 16 |
21 |
Copper weight (2oz outer / 1oz inner) | 21 |
-3313 or -3313
|
Primary prepreg type (outermost dielectric layer) | -3313 |
System stackup codes:
| Stackup code | Layer count | Boards |
|---|---|---|
JLC041621-3313 |
4-layer, 2oz outer / 1oz inner | ROT, STA, EXT, REF, ENC, JM, AM, USM (8 boards) |
JLC061621-3313 |
6-layer, 2oz outer / 1oz inner | CTL (CI required), PM (CI not required) |
Note: Older documents (pre-DEC-065) used the codes
JLC04161H-7628andJLC06161H-2116. These codes were incorrect interpretations of the JLCPCB stackup naming scheme and have been replaced throughout.JLC041621-3313andJLC061621-3313are the correct, authoritative codes.
This is the standard stackup for all Enigma-NG boards except the Controller Board and Power Module.
Physical stackup (JLCPCB-authoritative):
| Layer / Material | Thickness (mil) | Thickness (mm) | Copper Weight |
|---|---|---|---|
| L1 — Outer Copper | 2.76 | 0.070 | 2oz |
| Prepreg — 3313 RC57% | 3.62 | 0.092 | — |
| L2 — Inner Copper | 1.18 | 0.030 | 1oz |
| Core — FR4 (1/1oz without copper) | ~48.5 | ~1.231 | — |
| L3 — Inner Copper | 1.18 | 0.030 | 1oz |
| Prepreg — 3313 RC57% | 3.62 | 0.092 | — |
| L4 — Outer Copper | 2.76 | 0.070 | 2oz |
| Total | ≈ 1.6 mm ✓ |
Prepreg dielectric properties (3313 RC57%): h = 0.092 mm, Eᵣ = 4.2
Controlled-impedance trace widths — JLCPCB calculator authoritative (non-coplanar):
| Target | Type | Layer | Trace Width | Spacing |
|---|---|---|---|---|
| 50Ω SE | Microstrip | L1 (outer) | 0.1425 mm (5.61 mil) | — |
| 50Ω SE | Stripline | L2 (inner) | 0.1478 mm (5.82 mil) | — |
| 90Ω diff | Diff microstrip | L1 (outer) | 0.1468 mm (5.78 mil) | 0.2032 mm (8.00 mil) |
| 100Ω diff | Diff stripline | L2 (inner) | 0.1128 mm (4.44 mil) | 0.2032 mm (8.00 mil) |
IPC-2141A accuracy warning: IPC-2141A estimates deviate significantly from the JLCPCB calculator for this stackup: outer 50Ω IPC estimate is approximately −9% low; inner 50Ω IPC estimate is approximately +13% high. Use JLCPCB calculator values only. Do not use IPC-2141A.
Boards using this stackup: Rotor (A+B), Stator, Extension, Reflector, User Settings Module (USM), Actuation Module, Encoder, JTAG Module
Design rule reference: design/Standards/Global_Routing_Spec.md §2.3.1 (standard 4-layer) and §2.3.2 (inverted 4-layer — JTAG Module, Actuation Module)
This stackup is used by the Controller Board and the Power Module.
Physical stackup (JLCPCB-authoritative):
| Layer / Material | Thickness (mil) | Thickness (mm) | Copper Weight |
|---|---|---|---|
| L1 — Outer Copper | 2.76 | 0.070 | 2oz |
| Prepreg — 3313 RC57% | 3.62 | 0.092 | — |
| L2 — Inner Copper | 1.18 | 0.030 | 1oz |
| Core (L2–L3) — 1/1oz without copper | 17.72 | 0.450 | — |
| L3 — Inner Copper | 1.18 | 0.030 | 1oz |
| Prepreg — 2116 RC54% | 4.29 | 0.109 | — |
| Prepreg — 2116 RC54% | 4.29 | 0.109 | — |
| L4 — Inner Copper | 1.18 | 0.030 | 1oz |
| Core (L4–L5) — 1/1oz without copper | 17.72 | 0.450 | — |
| L5 — Inner Copper | 1.18 | 0.030 | 1oz |
| Prepreg — 3313 RC57% | 3.62 | 0.092 | — |
| L6 — Outer Copper | 2.76 | 0.070 | 2oz |
| Total | ≈ 1.6 mm ✓ |
Controlled-impedance trace widths — JLCPCB calculator authoritative (non-coplanar):
| Target | Type | Layer | Trace Width | Spacing |
|---|---|---|---|---|
| 50Ω SE | Microstrip | L1 or L6 (outer) | 0.1425 mm (5.61 mil) | — |
| 50Ω SE | Stripline | L2 (inner, ref L1/L3) | 0.1387 mm (5.46 mil) | — |
| 90Ω diff | Diff microstrip | L1 or L6 (outer) | 0.1468 mm (5.78 mil) | 0.2032 mm (8.00 mil) |
| 100Ω diff | Diff stripline | L2 (inner, ref L1/L3) | 0.1123 mm (4.42 mil) | 0.2032 mm (8.00 mil) |
IPC-2141A accuracy warning: IPC-2141A estimates deviate significantly from the JLCPCB calculator for this stackup: outer 50Ω IPC estimate is approximately −9% low; inner 50Ω IPC estimate is approximately +21% high. Use JLCPCB calculator values only. Do not use IPC-2141A.
Boards using this stackup:
| Board | CI service required? | Reason |
|---|---|---|
| Controller Board | Yes — required | USB 3.0 SS, USB 2.0, HDMI, Ethernet BI_D diff pairs on inner layers; TDR-verified widths mandatory |
| Power Module | No — not required | Power-dominated board; no high-speed differential pairs requiring TDR-verified widths |
Design rule reference: design/Standards/Global_Routing_Spec.md §2.3.3
The following table records all JLCPCB stackup options evaluated during the stackup selection process (DEC-065). Options not selected are retained here for traceability.
| Code | Layers | Thickness | Outer Cu | Inner Cu | Prepreg | Status |
|---|---|---|---|---|---|---|
JLC041621-3313 |
4L | 1.6mm | 2oz | 1oz | 3313 RC57% | ✅ Selected — system standard 4-layer |
JLC061621-3313 |
6L | 1.6mm | 2oz | 1oz | 3313 + 2116 | ✅ Selected — system standard 6-layer |
JLC04161H-7628 |
4L | 1.6mm | 2oz | 1oz | 7628 | ❌ Eliminated — incorrect code interpretation; 7628 prepreg gives higher Eᵣ, requiring narrower traces than calculator confirms |
JLC06161H-2116 |
6L | 1.6mm | 2oz | 1oz | 2116 | ❌ Eliminated — incorrect code interpretation; replaced by JLC061621-3313 |
JLC041621-7628 |
4L | 1.6mm | 2oz | 1oz | 7628 | ❌ Not selected — 7628 prepreg is higher loss at GHz frequencies vs 3313 |
JLC041221-3313 |
4L | 1.2mm | 2oz | 1oz | 3313 | ❌ Not selected — 1.2mm thickness non-standard for system; connector mating assumes 1.6mm |
Source: JLCPCB PCB Capabilities — verify all values in this section against the live page before design sign-off, as JLCPCB periodically update their published limits.
All boards are fabricated using JLCPCB's standard PCB service. The following constraints apply and must be respected in all board designs.
| Parameter | Constraint | Notes |
|---|---|---|
| Minimum trace width | 0.09mm (3.5 mil) | GRS specifies 0.127mm CI minimum; 0.20mm signal minimum — both are above this limit |
| Minimum trace spacing | 0.09mm (3.5 mil) | GRS 10 mil (0.254mm) clearance requirement is more conservative |
| Minimum via drill | 0.2mm (drill); 0.45mm (pad) | Standard vias only; see §2.1 |
| Blind / buried vias | Not supported | No blind or buried vias on any board |
| Minimum hole size (drill) | 0.2mm | Mechanical NPTH and PTH |
| Minimum annular ring | 0.1mm (one side) | GRS specifies 6.0mm ENIG ring for mounting holes (far exceeds minimum) |
| Board thickness | 1.6mm nominal (±10%) | All boards in this design target 1.6mm |
| Surface finish | ENIG (Electroless Nickel Immersion Gold) | System-wide; provides flat, solderable, gold-plated surface |
| Copper weight | 2oz finished copper | System-wide; matches GRS §1.1 trace width calculations |
| Solder mask | Both sides | LPI solder mask on all boards |
| Silkscreen | Both sides | See GRS §10.1 for pin-1 silkscreen requirements |
| Min silkscreen line width | 0.153mm | |
| Max board size | 500mm × 470mm | Enigma-NG boards are well within this limit |
| Panelisation | Available (V-cut, tab-route) | May be useful for small boards (Rotor, USM) |
JLCPCB standard service supports through-hole vias only. Blind and buried vias are not available on the standard 4-layer or 6-layer service.
| Via type | Supported | Notes |
|---|---|---|
| Through-hole via | ✔ Yes | Standard; min drill 0.2mm, min pad 0.45mm |
| Blind via | ❌ No | Not available on standard service |
| Buried via | ❌ No | Not available on standard service |
| Micro-via | Available; requires advanced/HDI service tier — verify current offering on JLCPCB capabilities page | |
| Back-drill | Available; requires explicit quotation — verify current offering on JLCPCB capabilities page |
JLCPCB offers a PCBA (PCB Assembly) service with SMT component placement. The following constraints must be understood and accounted for in board designs.
| Constraint | Detail |
|---|---|
| SMT assembly side | Single-sided only on standard service |
| THT placement | Manual fit required (not included in JLCPCB PCBA standard service) |
| Double-sided SMT | Available on Economic PCBA service with limitations; requires explicit quotation |
Design note for Reflector Board: The Reflector is a single-sided SMT assembly. All SMT components must be on the same board face to use JLCPCB standard PCBA. This is an explicit design constraint, not a limitation — see
design/Electronics/Reflector/Design_Spec.md.
All THT components (headers, connectors, DIP switches, pin headers, through-hole capacitors) require manual fitting after JLCPCB PCBA. These components are excluded from the JLCPCB PCBA BOM and assembled separately. Each board design spec identifies which components are manually fitted.
| Library type | Description | Assembly surcharge |
|---|---|---|
| Basic | Pre-loaded in JLCPCB feeders; no extra fee | None |
| Preferred | JLCPCB preferred parts; low surcharge | Low |
| Extended | Requires feeder setup fee per unique part | ~$3 per unique part |
Note: Where a BOM entry shows
Global sourcing / consignmentin the JLCPCB PN column, the component must be sourced and consigned to JLCPCB separately.
| Parameter | Value |
|---|---|
| PCBA MOQ (standard) | 2 boards per order |
| PCBA MOQ (prototype) | 5 boards (Economic PCBA) |
| Document | Relationship |
|---|---|
design/Standards/Global_Routing_Spec.md |
System-wide routing rules; references this document for stackup details |
design/Electronics/Controller/Design_Spec.md §9 |
Controller-specific 6-layer stackup (JLC061621-3313) |
design/Electronics/Rotor/Design_Spec.md §4 |
Rotor 4-layer stackup (JLC041621-3313) |
design/Electronics/Stator/Design_Spec.md §7 |
Stator fabrication requirements |
design/Electronics/Power_Module/Design_Spec.md §8 |
Power Module fabrication requirements |
-
Design Log
- DEC-001 3v3-enig-used-throughout-3v3-system-removed-from-btb-interconnect
- DEC-002 poe-option-a2-selected-coilcraft-poe600f-12ld
- DEC-003 poe-output-12v-or-ing-priority-logic-required
- DEC-004 supercap-charge-current-05a-under-poe
- DEC-005 tps25980-efuse-replaces-tps259474l
- DEC-006 stusb4500-negotiates-15v5a-75w
- DEC-007 dual-interleaved-lmq61460-q1-5v-buck-12a
- DEC-008 tps25750-emulates-5v5a-pd-profile-to-cm5
- DEC-009 legacy-controller-probe-access-pin-14-reassigned-to-sw-led-ctrl
- DEC-010 inc-14-deferred-legacy-probe-access-esd-protection-post-prototype
- DEC-011 all-power-rails-on-power-module-3v3-enig-serves-rotor-stack
- DEC-012 u4-tps25750-replaced-with-tps25751drefr-nrnd-resolution
- DEC-013 l3-emi-inductor-changed-to-bourns-srp1265a-100m
- DEC-014 controller-board-uses-erf8-female-on-both-btb-connectors-for-blind-mate-assembly
- DEC-015 link-beta-connector-reduced-from-80-pin-to-40-pin-erf8-020-erm8-020
- DEC-016 jtag-controlled-impedance-and-series-termination
- DEC-017 minimum-4-layer-stackup-for-all-non-controller-boards
- DEC-018 connector-pinout-ownership-model
- DEC-019 poe-transformer-topology-acf-option-a-selected
- DEC-020 gnd-chassis-rib-clearway-enig-bond
- DEC-021 supercapacitor-bank-upgrade-2x2-2s2p-2x3-2s3p
- DEC-022 jdb-ft232h-clock-source-dedicated-12mhz-smd-crystal-selected
- DEC-023 jdb-gnd-chassis-omitted-mounting-holes-tied-to-gnd
- DEC-024 jdb-is-complete-jtag-master-controller-jtag-lines-are-pass-through
- DEC-025 cm5-shutdown-mechanism-hardware-driven-ltc3350-software-support-deferred
- DEC-026 rotor-position-encoder-as5600-replaced-with-single-track-capacitive-encoder
- DEC-027 rotor-position-readback-via-jtag-virtual-jtag-user0-udr
- DEC-028 split-dual-board-rotor-architecture
- DEC-029 supercapacitor-hold-up-specification-25f-abracon-cells-2s4p-20-s-at-15w
- DEC-030 5v-main-backup-switchover-transient-fix-r14-r30-c35
- DEC-031 cm5-virtual-keyboard-key-injection-feature-architecture
- DEC-032 settings-board-panel-mount-configuration-controls-with-cm5-override
- DEC-033 dsi1-display-connector-provision-for-optional-lid-touchscreen
- DEC-034 switch-hardware-refresh-settings-board-toggle-discrete-rgb-led-ruggedized-pm-sw1
- DEC-035 hid-keyboard-and-lightboard-use-a-40-position-qwerty-derived-layout-for-the-64-character-code-space
- DEC-036 link-beta-former-monitor-pins-reallocated-as-grouped-power-rails
- DEC-037 link-beta-pin-map-regrouped-around-dedicated-jtag-and-i2c-guard-bands
- DEC-038 controller-centric-dock-architecture-replaces-legacy-link-alpha-link-beta-backplane
- DEC-039 enclosure-connected-boards-use-gnd-chassis-daughterboards-are-exempt
- DEC-040 diagnostics-banks-removed-from-active-design-specs-pending-coupon-review
- DEC-041 encoder-modules-use-epm570-with-digital-debounce-and-role-by-programming
- DEC-042 encoder-port-pin-8-carries-hid-local-enc-active-n
- DEC-043 shared-actuation-module-replaces-direct-controller-servo-gpio
- DEC-044 fdc2114-internal-oscillator-selected-clkin-gnd
- DEC-045 rotor-samtec-erm8erf8-connectors-require-esd-protection
- DEC-046 bypassdecoupling-capacitor-voltage-rating-50v-retained-on-all-non-pm-boards
- DEC-047 or-ing-mosfet-corrected-to-csd17578q5a
- DEC-048 esd-protection-extended-to-host-side-rotor-facing-btb-connectors
- DEC-049 rotor-internal-headers-renamed-to-j-convention-connector-count-updated-to-8-bom-unified
- DEC-050 encoder-blade-terminal-refdes-corrected-from-bt-to-j-convention
- DEC-051 settings-board-renamed-to-user-settings-module-board-code-sbd-usm
- DEC-052 variant-specific-fdc2114-refdes-use-ab-suffix-convention
- DEC-053 extension-port-connector-upgraded-from-bhr-20-vua-20-pin-to-2bhr-30-vua-30-pin
- DEC-054 signal-net-renamed-pwr-but-pwr-but-n-active-low-suffix-conformance
- DEC-055 f-108-system-wide-reference-designator-and-requirement-id-consecutive-renumbering
- DEC-056 relocate-investigation-documents-to-board-owned-folders
- DEC-057 daughterboard-mounting-hole-specification-and-standoff-bom-ownership
- DEC-058 jdb-connector-upgrade-hat-headers-to-df40c-20-btb
- DEC-059 erm8erf8-stacking-height-confirmed-rotor-stack-assembly-specification-created
- DEC-060 jtag-daughterboard-renamed-to-jtag-module-jdb-prefix-replaced-with-jm
- DEC-061 pass-7-review-corrections-ctlstarotencamgrsstatus-updates
- DEC-062 ctl-poe-t1-selection-tdk-b82806d0060a120-topology-acf-flyback-acf-forward
- DEC-063 ctl-poe-l1-selection-yageo-pa4343333nlt-acf-forward-output-inductor
- DEC-064 ctl-poe-c17-final-part-selection-kemet-c0805c223k2racauto-22nf-200v-x7r-0805
- DEC-065 system-wide-stackup-code-correction-and-jlcpcb-authoritative-impedance-values
- DEC-066 grs-canonical-pcb-stackup-authority-consolidation
- DEC-067 am-sw1sw2-tactile-switch-rating-accepted-for-production
- DEC-068 pm-per-input-bulk-capacitors-and-output-source-quality-bulk-banks
- DEC-069 pm-per-input-polyfuse-protection-and-uvlo-resistor-recalculation
- DEC-070 mcp23017-i²c-silicon-restriction-gpb7gpa7-review-and-cfg-apply-n-reassignment
- DEC-071 usm-spdt-switch-dual-terminated-wiring-and-pull-down-resistor-removal
- DEC-072 review-pass-9-findings-and-resolutions
- DEC-073 ltc3350-rt-resistor-correction-332-kω-133-kω-amends-dec-030
- DEC-074 rename-cpld-reset-signal-sys-reset-n-cpld-reset-n
- DEC-075 tps25751-option-c-external-eeprom-isolated-i2ct-debug-header-on-power-module
- DEC-076 pm-3v3-architecture-redesign-3v3-main3v3-enig-rail-split-j4-dual-purpose-programming-j6-removal-and-q12-parallel-p-fet-selection
- DEC-077 retrospective-rotor-ttd-daisy-chain-no-series-termination-resistors-amends-dec-016
- DEC-078 cpld-reset-n-stator-buffer-bss138-n-channel-mosfet-new-decision-references-dec-077
- DEC-079 c20-voltage-rating-correction-25v-35v-amends-dec-072-bom-item-1
- DEC-080 retrospective-pm-and-stator-dock-connector-redesignation-amends-dec-038
- DEC-081 retrospective-rotor-ttd-no-series-resistor-policy-in-addition-to-dec-016
- DEC-082 10µf-bulk-reservoir-capacitor-upgrade-25v-0805-50v-1206-all-boards
- DEC-083 retire-all-boards-bomjson-consolidate-bom-authority-in-design-spec-files-and-consolidated-bom
- DEC-084 cypher-stack-architecture-migration-and-board-role-consolidation
- DEC-085 stack-output-j4-power-pin-zero-ohm-links-prototype-test
- DEC-086 cypher-input-common-variant-restructure-10-numeric-variant-single-i2c-address
- DEC-087 cypher-input-led-colour-architecture-moved-off-plain-bits-onto-local-rgb-select-circuit
- DEC-088 plugboard-jacks-wired-directly-to-cypher-board-spade-bank-j4j6-reserves-5v-main
- DEC-089 board-role-id-widened-to-4-bit-capability-bitmask-cpld-pin-freeing-and-j5-migration
- DEC-090 cypher-board-j3-stack-input-side-full-50-pin-allocation-and-actuate-request-in-out-n-signal-pair
- DEC-091 j3-esd-protection-extended-to-actuate-request-pins-and-actuation-gating-resolved-to-cypher-cpld
- DEC-092 cypher-board-j4-stack-output-side-full-50-pin-allocation
- DEC-093 actuate-request-end-to-end-signal-path-j4-rename-rotor-interposer-connectors-extended
- DEC-094 connector-ownership-reassignment-for-reused-chain-templates
- DEC-095 actuate-request-esd-protection-completed-stack-output-passive-wiring-defined
- DEC-096 stack-blanking-board-corrected-actuate-request-bridging-added
- DEC-097 cypher-j3-actuate-request-out-n-wired-as-round-trip-verification-input
- DEC-098 controller-cypher-dock-split-power-molex-signal-samtec-amends-dec-038-dec-080
- DEC-099 cm5-i2c-bank-architecture-mipi0-to-mipi1-swap-pwm-gpclk-reservation
- DEC-100 jtag-module-actuation-module-retirement-from-controller-board
- DEC-101 cypher-ina219-i2c-address-aligned-to-pm-default
- DEC-102 cypher-ft232h-3v3-vregin-self-powered-5v-usb-net-retired
- DEC-103 hid-usm-hub-connector-topology-rework
- DEC-104 user-settings-module-role-reworked-as-hid-colour-audio-hub-and-jtag-i2c-spine
- DEC-105 cfg-route-moved-to-full-cm5-software-control-physical-usm-switches-retired
- DEC-106 cypher-plugboard-reduced-to-mechanical-connector-only-board
- DEC-107 usm-hid-connector-four-colour-style-signal-expansion
- index
-
Diagrams
- renders
-
Electronics
- Boards Overview
- Consolidated BOM
- Electrical Design
- Power Budgets
- System Architecture
- Actuation Module
- Controller
- Cypher
- Cypher-Input
- Cypher-Output
- Cypher-Plugboard
- Encoder Module
- Extension
- JTAG Module
- Power Module
- Reflector
- Rotor
- Stack-Blanking
- Stack-Input
- Stack-Interposer
- Stack-Output
- Stator
- User Settings Module
-
Guides
-
Mechanical
- Complete System Assembly
- Extension
- Keyboard Assembly
- Lightboard Assembly
- Main Enclosure
- Plugboard Assembly
- Power Module
- Reflector
- Rotor
- Rotor Actuation Assembly
- Rotor Stack Assembly
-
Procedures
-
Production
-
Software
- Actuation Module
- CPLD Logic
-
GUI App
- Design Spec
-
Wireframes
- README
- renders
- Linux OS
-
Standards