Module 07
Bring-up
Bring-up & Verification
Never let a fresh board meet a full-power supply on faith. Twenty minutes of disciplined bring-up catches what would otherwise be a week of "why won't it configure?"
Before first power
- Ohm every rail to ground and rail-to-rail — catch solder bridges cold. Record the values (a "healthy" VCCINT reads tens of ohms, not ∞, due to the FPGA itself).
- Verify regulator feedback networks against the schematic — a swapped divider resistor is the classic overvoltage killer.
- If your 0 Ω current links (Module 03) are fitted, note which rails you can isolate.
- Visual: caps of the right size in the right spots, polarity of any polymers, no missing FB parts.
The first power-up ritual
- Current-limited bench supply into the input — start with the limit at ~20 % above expected idle current. A limit hit = stop and investigate, nothing burns.
- Set-points: DMM every rail at its sense point (not the regulator output cap). All within tolerance before anything else happens.
- Sequence capture: 4-channel scope on VCCINT/VCCAUX/VCCO/RESET; single-shot trigger on the input. Verify order, ramp times inside the datasheet window, and monotonicity. Archive the screenshot — it's your golden reference forever.
- Configuration: load a bitstream; watch DONE go high. Then re-measure rails under the real design's load.
- Ripple: measure with tip-and-barrel (no ground clip loop!), 20 MHz bandwidth limit for the regulator-band number, full bandwidth for a look at switching spikes. Compare against the stack budget from Module 01.
- Load transient: toggle the heaviest logic block (or use an on-fabric load generator design) while scoping VCCINT — droop must stay inside the transient budget.
- Thermal survey: IR camera or thermocouples on every regulator and the FPGA at max load, max ambient if you can chamber it.
In-system monitoring
- XADC / SYSMON: the FPGA's internal ADC reads VCCINT, VCCAUX, VCCBRAM and die temperature for free — expose them in your design's status registers and log them in production units.
- PGOOD aggregation: AND all PGOODs into a status LED and a supervisor input; a field return that "sometimes reboots" is diagnosed in seconds if you can see which rail flickers.
- PMBus telemetry (if you used a manager IC): per-rail voltage/current/fault logs — invaluable for fleet debugging.
Failure signatures
| Symptom | Likely cause | Check |
|---|---|---|
| Won't configure (DONE never rises) | Sequence/ramp violation; VCCAUX missing; non-monotonic VCCINT | Sequence capture vs datasheet; INIT_B state |
| Configures, crashes under load | VCCINT droop beyond budget (PDN or regulator transient) | Scope VCCINT during the crash workload |
| Transceiver bit errors / link flaps | MGT rail ripple/noise; shared-rail contamination | µV-level ripple on VMGTAVCC; eye scan trend vs load |
| Random BRAM/logic corruption | VCCBRAM sag; local hot spot | XADC logs vs failure times; IR camera |
| Reboots at power-on only when cold/hot | Soft-start vs supervisor timing race at temperature | Chambered sequence captures at extremes |
| Input supply current limit at plug-in | Inrush (all bulk caps at once) — or a real short | Stagger soft-starts; inrush limiter on input |
Key takeaways
- Current-limited first power, always; set-points before sequence, sequence before configuration.
- The archived sequence screenshot is a deliverable of the design.
- Ripple technique matters: tip-and-barrel, both bandwidths, at the load.
- Design in observability — XADC + PGOOD LEDs turn field mysteries into log entries.