Skip to the content
PCBKitNew board
4 layers187.2 × 112 mmGemini bringup, the printed circuit board in 3D

EDA work for the Gemini bringup vehicle

Size
187.2 × 112 mm
Copper layers
4
Thickness
1.6 mm
Parts
283
Nets
301
Pads
1,262
Tracks, vias
6,972, 506
Pours
5
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
22 Jul 2020
Updated
28 Feb 2023

Overview

Gemini bringup is an open-source printed circuit board by oxidecomputer, from the oxidecomputer/gemini-bringup repository on GitHub, published under the MPL-2.0 licence. It is a 4-layer board of 187.2 × 112 mm with 283 parts on 301 nets, routed with 6,972 tracks and 506 vias.

It is built around the MAX13235EETP+, LTC4306CGN#PBF and MAX31790ATI+, with the TCA9802DGK, EMIF06-MSD02N16 and KSZ8863RLL among its other parts. Its parts include 105 resistors, 89 capacitors, 29 connectors, 13 ICs and 8 diodes.

Main components

7

README

gemini-bringup/README.md

Gemini Bringup

This repository contains the electronic design files for the Gemini Bringup board. This board contains some of the moving parts of the final Gemini system, but laid out in a way that is easier to probe and test.

This is a KiCad project; you will need KiCad (preferably 5.1.2) to participate. Additionally, you will need the symbol and footprint libraries in the submodules; you can obtain these by doing either of:

text
`$ git clone --recursive`

when your first clone this repository, or

text
`$ git submodule update --init`

after cloning or syncing up. If you leave out this step, KiCad will complain loudly about missing symbols and/or footprints and attemot to "rescue" them, which will create spurious changes to your copy of the repo and prevent subsequent pull/rebase/merge/push operations from working as desired.

Shopping list

The following items are included with the initial kit; if you are building one of these later you will need to acquire them on your own.

  • A power supply (should have been included, we bought a batch, but if you have to go out on your own: 12V 2+A depending on how many fans you want to run; 5.5mm OD / 2.1mm ID barrel)

You will need to separately acquire the following to be able to program all the micros:

  • A SWD tool that can program the STM32H7.

    • STLink V3 is the nicest but will only talk to ST parts. We're trying to standardize on this.
    • STLink V2 in a pinch, e.g. if the V3 is unavailable. Needs an adapter from the old-style 20pin connector to the modern 10pin connector, something like this.
  • A USB-to-TTL-serial adapter, ideally one ending in loose Dupont wires so it doesn't have a fixed pinout. You will use this for flashing the LPC55 on the RoT carrier, at least the first time. If you don't already have one, we have 10 of them we can distribute. IMPORTANT: This is only for flashing the LPC55; do NOT attach it to the baseboard UART header marked "SERIAL TO HOST". The host header uses RS-232 signalling, which may damage your TTL adapter and will not work properly with it in any event.

Depending on your development goals you may also need:

  • A SWD tool that can program the LPC55S. The answer here is much less clear and you can skip it for now if you're mostly doing SP work.

    • The MCU-Link works for flashing but not log/test output. We may be able to make it work later.
    • NXP's previous-gen LPC-Link2 board will also work w/o log/test output if you can still find it.
    • In practice we are mostly using the LPC55Sxpresso board with a soldered-on header and a hack.
  • A logic analyzer is never a bad idea if you're doing driver development. We like the Saleae Logic.

Handling

Handle the board by its edges if possible.

This board is not well-defended against static discharge. Please try not to zap the exposed pins. For best results, use the board in a static-safe workspace, ideally elevated on standoffs in the corner holes (which we forgot to include in your kit, sorry). It will work OK on a non-staticky desk surface, too, as long as you bring yourself and the board to a similar electrical potential before touching exposed metal bits. Touching the Ethernet plug jacks is an OK place to ground, they are somewhat better isolated than the rest of the exposed pins.

Getting Started

If you have a pre-validated board, it should already have firmware on it. To check that things still kinda work:

  1. Unpack the base board and the RoT carrier board from their antistatic bags, handling carefully.

  2. Attach the RoT to the base board, if you want to test the RoT. It goes in the northwest corner of the base board, only fits one way, and makes a satisfying click when it is fully seated.

  3. Plug in the included power supply. (The connector is at the northeast corner.)

You should get two blinking lights, one directly northwest of the big central ARM chip (the SP) and one just south of the RoT carrier board.

To build and program your own firmware, you will need to have followed the toolchain setup instructions in the Hubris repo. We don't yet have a dedicated firmware image for the RoT, and have been running hacked versions of a demo app on it, so instead, here are instructions for building and flashing the SP.

  1. Disconnect power before plugging/unplugging anything.

  2. Plug in the skinny 10-pin ribbon cable from your STLink V3 to connector J301, which is to the northeast of the SP and is labeled "BRICK SP" because that's what you can do with it. (Some STLink's have a 14-pin STDC14 ribbon cable. That works here, too.)

  3. Plug the other end into your STLink V3.

  4. Make sure SW302 (a switch on the top edge of the board) is in the position labelled "OUR SP CODE"

  5. Reconnect power to the board.

  6. In the Hubris repository, run: cargo xtask flash gemini-bu/app.toml

  7. Relax. On a first build this may take several minutes.

  8. A successful build-and-flash will end in something that looks like an error message (sorry). Scan up a few lines for the phrase ** Verified OK**. If that appears, you're good, and the lights should be blinking by the SP.

Schematic Checklist

General

  • CAD ERC 100% clean. If some errors are invalid due to toolchain quirks, each exception must be inspected and signed off as invalid.
  • Verify pin numbers of all schematic symbols against datasheet or external interface specification document (if not yet board proven).
  • Schematic symbol matches chosen component package
  • Thermal pads are connected to correct power rail (may not always be ground)
  • Debug interfaces are not power gated in sleep mode

Passive components

  • Power/voltage/tolerance ratings specified as required
  • Ceramic capacitors appropriately de-rated for C/V curve
  • Polarized components specified in schematic if using electrolytic caps etc

Power supply

System power input

  • Fusing and/or reverse voltage protection at system power inlet
  • Check total input capacitance and add inrush limiter if needed

Regulators

  • Under/overvoltage protection configured correctly if used
  • Verify estimated power usage per rail against regulator rating
  • Current-sense resistors on power rails after regulator output caps, not in switching loop
  • Remote sense used on low voltage or high current rails
  • Linear regulators and voltage reference ICs are stable with selected output cap ESR
  • Confirm power rail sequencing against device datasheets

Decoupling

  • Decoupling present for all ICs
  • Decoupling meets/exceeds vendor recommendations if specified
  • Bulk decoupling present at PSU

General

  • All power inputs fed by correct voltage
  • Check high-power discrete semiconductors and passives to confirm they can handle expected load
  • Analog rails filtered/isolated from digital circuitry as needed

Signals

Digital

  • Signals are correct logic level for input pin
  • Pullups on all open-drain outputs
  • Pulldowns on all PECL outputs
  • Termination on all high-speed signals
  • AC coupling caps on gigabit transceivers
  • TX/RX paired correctly for UART, SPI, MGT, etc
  • Differential pair polarity / pairing correct
  • Active high/low enable signal polarity correct
  • I/O banking rules met on FPGAs etc

Analog

  • RC time constant for attenuators sane given ADC sampling frequency
  • Verify frequency response of RF components across entire operating range. Don't assume a "1-100 MHz" amplifier has the same gain across the whole range.
  • Verify polarity of op-amp feedback

Clocks

  • All oscillators meet required jitter / frequency tolerance. Be extra cautious with MEMS oscillators as these tend to have higher jitter.
  • Correct load caps provided for discrete crystals
  • Crystals only used if IC has an integrated crystal driver
  • Banking / clock capable input rules met for clocks going to FPGAs
    • Xilinx FPGAs: single ended clocks use _P half of differential pairs
    • If possible, create dummy design with all clocks and other key signals and verify it P&R's properly

Strap/init pins

  • Pullup/pulldowns on all signals that need defined state at boot
  • Strap pins connected to correct rail for desired state
  • JTAG/ICSP connector provided for all programmable devices
  • Config/boot flash provided for all FPGAs or MPUs without internal flash
  • Reference resistors correct value and reference rail

External interface protection

  • Power outputs (USB etc) current limited
  • ESD protection on data lines going off board

Debugging / reworkability

  • Use 0-ohm resistors vs direct hard-wiring for strap pins when possible
  • Provide multiple ground clips/points for scope probes
  • Dedicated ground in close proximity to analog test points
  • Test points on all power rails
  • Test points on interesting signals which may need probing for bringup/debug

Thermal

  • Power estimates for all large / high power ICs
  • Thermal calculations for all large / high power ICs
  • Specify heatsinks as needed

PCB Checklist

General

  • Schematic review complete and signed off, including pin swaps done during layout
  • Layout DRC 100% clean

Decoupling

  • Decoupling caps as close to power pins as possible
  • Low inductance mounting used for decoupling (prefer ViP if available, otherwise "[]8" shaped side vias

DFM / yield enhancement

  • All design rules within manufacturer's capability
  • Minimize use of vias/traces that push fab limits
  • Controlled impedance specified in fab notes if applicable
  • Confirm impedance calculations include soldermask, or mask removed from RF traces
  • Stackup verified with manufacturer and specified in fab notes
  • Board finish specified in fab notes
  • If panelizing, add panel location indicators for identifying location-specific reflow issues
  • (recommended) Layer number markers specified to ensure correct assembly
  • Fiducials present (on both sides of board) if targeting automated assembly
  • Fiducial pattern asymmetric to detect rotated or flipped boards
  • Soldermask/copper clearance on fiducials respected
  • Panelization specified if required

Footprints

  • Confirm components are available in the selected package
  • Confirm components (especially connectors and power regulators) are capable of desired current in the selected package
  • Verify schematic symbol matches the selected package
  • Confirm pinout diagram is from top vs bottom of package
  • (recommended) PCB printed 1:1 on paper and checked against physical parts
  • 3D models obtained (if available) and checked against footprints
  • Soldermask apertures on all SMT lands and PTH pads

Differential pairs

  • Routed differentially
  • Skew matched
  • Correct clearance to non-coupled nets

High-speed signals

  • Sufficient clearance to potential aggressors
  • Length matched if required
  • Minimize crossing reference plane splits/slots or changing layers, use caps/stitching vias if unavoidable
  • Confirm fab can do copper to edge of PCB for edge launch connectors
  • Double-check pad width on connectors and add plane cutouts if needed to minimize impedance discontinuities

Power

  • Minimal slots in planes from via antipads
  • Sufficient width for planes/traces for required current

Sensitive analog

  • Guard ring / EMI cages provided if needed
  • Physically separated from high current SMPS or other noise sources
  • Consider microphone effect on MLCCs if near strong sound sources

Mechanical

  • Confirm all connectors to other systems comply with the appropriate mechanical standard (connector orientation, key position, etc)
  • LEDs, buttons, and other UI elements on outward-facing side of board
  • Keep-outs around PCB perimeter, card guides, panelization mouse-bites, etc respected
  • Stress-sensitive components (MLCC) sufficiently clear from V-score or mouse bite locations, and oriented to reduce bending stress
  • Clearance around large ICs for heatsinks/fans if required
  • Clearance around pluggable connectors for mating cable/connector
  • Clearance around mounting holes for screws
  • Plane keepouts and clearance provided for shielded connectors, magnetics, etc
  • Confirm PCB dimensions and mounting hole size/placement against enclosure or card rack design
  • Verify mounting hole connection/isolation
  • Components not physically overlapping/colliding
  • Clearance provided around solder-in test points for probe tips

Thermal

  • Thermal reliefs used for plane connections (unless via is used for heatsinking)
  • Solid connections used to planes if heatsinking
  • Ensure thermal balance on SMT chip components to minimize risk of tombstoning

Solder paste

  • No uncapped vias in pads (except low-power QFNs where some voiding is acceptable)
  • QFN paste prints segmented
  • Small pads 100% size, larger pads reduced to avoid excessive solder volume
  • No paste apertures on card edge connectors or test points

Solder mask

  • Confirm SMD vs NSMD pad geometry
  • Adequate clearance around pads (typ. 50 um)

Silkscreen

  • Text size within fab limits
  • Text not overlapping drills or component pads
  • Text removed entirely in, or moved outside of, high component/via density areas
  • Traceability markings (rev, date, name, etc) provided
  • Silkscreen box provided for writing/sticking serial number
  • Text mirrored properly on bottom layer
  • Test points labeled if space permits

Flex specific

  • Components oriented to reduce bending forces
  • Teardrops on all wire-to-pad connections

CAM production

  • KiCAD specific: rerun DRC and zone fills before exporting CAM files to ensure proper results
  • Export gerber/drill files at the same time to ensure consistency
  • Visually verify final CAM files to ensure no obvious misalignments

Parts

283
QtyValueFootprintReferences
630.1uFCapacitor_SMD:C_0603_1608MetricC101, C102, C103, C104, C105, C106, C1001, C1002, C1101, C1102, C1201, C1202, C1301, C1302, C1401, C1402 +47
2922RResistor_SMD:R_0603_1608MetricR305, R306, R307, R311, R312, R313, R314, R315, R321, R322, R324, R325, R1001, R1403, R1404, R1405 +13
283.3kRResistor_SMD:R_0603_1608MetricR101, R102, R103, R104, R105, R501, R502, R503, R702, R703, R1101, R1102, R1201, R1202, R1301, R1302 +12
1110kRResistor_SMD:R_0603_1608MetricR308, R309, R405, R406, R423, R801, R1103, R1203, R1303, R1401, R1402
9M3MountingHole:MountingHole_3.2mm_M3H101, H102, H103, H104, H105, H107, H108, H109, H110
849.9R 1%Resistor_SMD:R_0603_1608MetricR411, R412, R413, R414, R415, R416, R417, R418
868RResistor_SMD:R_0603_1608MetricR202, R203, R301, R302, R419, R420, R421, R422
70RResistor_SMD:R_0603_1608MetricR310, R339, R409, R601, R602, R605, R606
7SMBUSmolex-sl:SL_1x06_Vertical_SMDJ501, J502, J503, J504, J1101, J1201, J1301
5100kRResistor_SMD:R_0603_1608MetricR212, R317, R318, R319, R320
522uFCapacitor_SMD:C_1210_3225MetricC404, C406, C408, C416, C605
41uFCapacitor_SMD:C_0805_2012MetricC326, C332, C701, C702
43.3kRResistor_SMD:R_Array_Convex_4x0603RN501, RN502, RN503, RN504
310uFCapacitor_SMD:C_1206_3216MetricC401, C418, C419
333R @ 100MHzInductor_SMD:L_0603_1608MetricFB301, FB401, FB402
3TCA9802Package_SO:VSSOP-8_3.0x3.0mm_P0.65mmU1101, U1201, U1301
21000pF 2kVCapacitor_SMD:C_1206_3216MetricC420, C421
211pFCapacitor_SMD:C_0603_1608MetricC319, C327
21N4148Diode_SMD:D_SOD-323D305, D401
22.2uFCapacitor_SMD:C_0603_1608MetricC302, C303
220pFCapacitor_SMD:C_0603_1608MetricC320, C323
230pFCapacitor_SMD:C_0603_1608MetricC410, C411
24.7kRResistor_SMD:R_0603_1608MetricR407, R408
2AmberLED_SMD:LED_0603_1608Metric_CastellatedD202, D302
2Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMDJ202, J301
2DNPCapacitor_SMD:C_0603_1608MetricC601, C602
2INA219AxDCNPackage_TO_SOT_SMD:SOT-23-8U602, U603
2RJ45_Würth_74980111211magjack:Würth_100BT_MagjackJ401, J402
2RedLED_SMD:LED_0603_1608Metric_CastellatedD201, D301
2TXB0106PWRPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU801, U1401
1+12VTestPoint:TestPoint_Pad_D1.0mmTP101
1+3.3VTestPoint:TestPoint_Pad_D1.0mmTP103
110RResistor_SMD:R_0603_1608MetricR303
111.8kR 1%Resistor_SMD:R_0603_1608MetricR410
11MRResistor_SMD:R_0603_1608MetricR316
1200kResistor_SMD:R_0603_1608MetricR701
120mR 1%passives:R_Shunt_Ohmite_LVK12_CW_PinoutR603
122uFCapacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-DC606
125MHz ±50ppmCrystal:Crystal_SMD_5032-2Pin_5.0x3.2mmY401
12AFuse:Fuse_1812_4532MetricF601
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY302
14.7uFCapacitor_SMD:C_0805_2012MetricC304
147mR 1%passives:R_Shunt_Ohmite_LVK12_CW_PinoutR604
15.6RResistor_SMD:R_0603_1608MetricR304
18 MHzCrystal:Crystal_SMD_5032-2Pin_5.0x3.2mmY301
1913-00001grumpy:Oxide_Board_Identifier_33x7mmH112
1AUX_HDR_GConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical_SMDJ304
1BATTJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP301
1BOOT0Button_Switch_SMD:SW_SPDT_CK-JS102011SAQNSW302
1Barrel_JackConnector_BarrelJack:BarrelJack_CUI_PJ-036AH-SMT_HorizontalJ601
1BlueLED_SMD:LED_0603_1608Metric_CastellatedD304
1CR1220Battery:BatteryHolder_Keystone_3000_1x12mmBT301
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1LeftJ201
1Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical_SMD_Pin1RightJ204
1Conn_2Rows-51Pinshirose-df9:Hirose_DF9-51P-1V(69)_2Rows_51Pin-2MP_P1.0mm_VerticalJ203
1EMIF06-MSD02N16micro-qfn16-narrow:DFN-16-1EP_1.2x3.5mm_P0.4mm_EP0.3x2.8mmU901
1EXPANSIONConnector_PinSocket_2.00mm:PinSocket_2x24_P2.00mm_Vertical_SMDJ1001
1FAN1molex-sl:SL_1x05_Vertical_SMDJ706
1FAN2molex-sl:SL_1x05_Vertical_SMDJ705
1FAN3molex-sl:SL_1x05_Vertical_SMDJ704
1FAN4molex-sl:SL_1x05_Vertical_SMDJ703
1FAN5molex-sl:SL_1x05_Vertical_SMDJ702
1FAN5VTestPoint:TestPoint_Pad_D1.0mmTP701
1FAN6molex-sl:SL_1x05_Vertical_SMDJ701
1GNDTestPoint:TestPoint_Pad_1.0x1.0mmTP104
1GRAPHIC PLACEHOLDERgrumpy:grumpyH106
1GRAPHIC PLACEHOLDERgrumpy:newt_of_trustH111
1GreenLED_SMD:LED_0603_1608Metric_CastellatedD303
1HOST_UARTidc-smd:IDC-Header_02x05_2.54mm_Vertical_SMDJ302
1I2CGPIO0Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical_SMDJ1502
1I2CGPIO1Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical_SMDJ1501
1IDCidc-smd:IDC-Header_02x08_2.54mm_Vertical_SMDJ801
1IDC_BOX_HDRidc-smd:IDC-Header_02x04_2.54mm_Vertical_SMDJ1401
1KSZ8863RLLPackage_QFP:LQFP-48_7x7mm_P0.5mmU401
1LTC4306CGNPackage_SO:SSOP-24_3.9x8.7mm_P0.635mmU501
1MAX13235EETPackage_DFN_QFN:TQFN-20-1EP_5x5mm_P0.65mm_EP3.25x3.25mmU302
1MAX31790tqfn28:TQFN-28_1EP_4x4mm_P0.4mm_EP2.7x2.7mmU701
1MCP1703A-5002_SOT89Package_TO_SOT_SMD:SOT-89-3U702
1Micro_SD_CardConnector_Card:microSD_HC_Wuerth_693072010801J901
1NOBATTJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP302

The 275 most common of 283 parts.

Questions

How big is the Gemini bringup PCB?

It measures 187.2 × 112 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Gemini bringup use?

283 parts, built around the MAX13235EETP+, LTC4306CGN#PBF, MAX31790ATI+ and TCA9802DGK. 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 Gemini bringup KiCad files?

From the oxidecomputer/gemini-bringup repository on GitHub, at the commit this page was made from: the board is gemini-bringup/gemini-bringup.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Gemini bringup design in my own project?

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

Similar boards

  • 2 layers35.6 × 35.6 mmQfn28-breakout, the printed circuit board in 3D

    Qfn28-breakout

    tehrengruber/12-channel-pwm-fan-controller-esp8266

    12-channel pwm fan controller board using esp8266

    6 parts3
  • 4 layers102.7 × 100 mmPipad, the printed circuit board in 3D

    Pipad

    kitspace-test-repos/kicad6-file-collection

    116 partsMIT
  • 2 layers52.8 × 38.1 mmRelayBoard, the printed circuit board in 3D

    RelayBoard

    lindamao-waterloop/waterloop_electrical

    Version control for the Waterloop Electrical Team

    61 parts2
  • 2 layers102.9 × 39.9 mmMbed Devboard, the printed circuit board in 3D

    Mbed Devboard

    arneman44/ESP32-dual-ethernet

    80 parts
  • 4 layers73.4 × 76.2 mmKommunikationsmodul Ethernet, the printed circuit board in 3D

    Kommunikationsmodul Ethernet

    KhanKudo/diplomprojekt

    HTL tgm Diplomprojekt RTLS (IOO), Gruppe Foldlabs, Jahrgang 2023/24

    126 parts
  • 2 layers52.8 × 55 mmILDAWaveX16, the printed circuit board in 3D

    ILDAWaveX16

    stanleyondrus/ILDAWaveX16

    ILDAWaveX16 is an open-source, high-resolution, wireless laser DAC with SD-card playback, network control, and ILDA output.

    95 parts42
  • 6 layers100 × 70 mmCanardBoard, the printed circuit board in 3D

    CanardBoard

    waterloo-rocketry/canhw

    Hardware monorepo avionics PCB

    280 parts15GPL-3.0