Design Checklist, Common Mistakes & Bring-Up
Before fabrication: one consolidated checklist across every module. After fabrication: what to look at first when the board powers up, and how to map a bring-up symptom back to the module that explains it.
Pre-fabrication master checklist
Component & datasheet (Module 02)
- DRAM speed grade confirmed compatible with FPGA memory-controller Fmax
- Timing table, IDD current tables, and package/ball map all reviewed, not just the summary page
Topology (Module 04)
- Fly-by used for all CA/CK/control nets (never T-branch) on discrete DDR4
- Devices-per-byte-lane fan-out within the FPGA's supported limit
Signal integrity & termination (Modules 06–07)
- Via stubs on critical nets minimized or back-drilled
- VTT termination present at the true end of the CA fly-by bus
- ODT modes (RTT_NOM/WR/PARK) selected to match topology and loading
Decoupling & PDN (Module 08)
- Decoupling stack covers DC through several hundred MHz with no impedance gap over target
- High-frequency MLCCs placed with shortest possible loop to each power ball
Layout & routing (Module 09)
- All length-matching tolerances verified against the vendor's routing guide, not general rules of thumb
- Continuous reference plane under every DDR signal layer
- Fly-by device order preserved consistently across every CA/CK/control net
FPGA-specific (Module 10)
- DCI/OCT reference resistor present at the correct value and pin
- Pin assignment cross-checked against the vendor memory-interface IP wizard's report
- I/O bank fully dedicated to the DDR4 voltage standard, VREF pins accounted for
The most common mistakes, ranked by how often they bite
| # | Mistake | Symptom | Module |
|---|---|---|---|
| 1 | T-branch/star routing of CA/CK on discrete DDR4 | Interface never trains at power-up | 04 |
| 2 | Missing or misplaced VTT termination on the fly-by bus | Never trains, or trains intermittently | 07 |
| 3 | Reordered fly-by device sequence on one net | One bit consistently fails at higher speed grades only | 04 / 09 |
| 4 | Insufficient high-frequency decoupling near power balls | Random, data-pattern-dependent bit errors | 08 |
| 5 | Byte lane length matching out of tolerance | Marginal read/write margins, fails only at high speed grade or temperature extremes | 09 |
| 6 | Wrong or missing DCI/OCT reference resistor | Whole bank shows impedance-related SI issues | 10 |
| 7 | VREF trace routed too close to a switching aggressor | Elevated bit-error rate, worse under sustained traffic | 05 / 06 |
| 8 | Speed grade mismatch between FPGA controller and DRAM part | Interface trains but throughput/Fmax falls short of spec | 02 |
Bring-up sequence
Most memory-interface IP reports calibration status per stage (often over JTAG/UART or a status LED/register). Knowing which stage failed narrows the search dramatically — a failure at stage 1–2 is almost always power/reset sequencing; a failure at stage 4–5 almost always points back to Modules 04, 06, 07, or 09.
Symptom → likely cause → module to revisit
| Symptom | Likely cause | Revisit |
|---|---|---|
| Board never leaves reset / no calibration attempt | Power sequencing, reset timing, or clock not stable | Module 08 (PDN), datasheet power-up sequence |
| Calibration fails every time, same stage | Structural SI/termination/topology issue | Modules 04, 06, 07, 09 |
| Calibration passes, but fails intermittently under load | Marginal SI or PDN margin, temperature/voltage sensitive | Modules 06, 08 |
| Works fine at low speed grade, fails at rated speed | Length matching, termination, or decoupling margin too tight for the timing budget | Modules 07, 08, 09 |
| One specific bit/lane always fails | That lane's routing, termination, or pin assignment | Modules 05, 09, 10 |
Key takeaways
- A pre-fabrication checklist that spans every module catches the overwhelming majority of "board never trains" failures before they happen.
- Topology and termination mistakes (T-branch routing, missing VTT) are the single most common root cause of total calibration failure.
- Bring-up failures map cleanly back to a small set of modules — use the calibration stage that failed to narrow the search immediately.
- "Works at low speed, fails at rated speed" almost always means a margin problem, not a broken connection — revisit termination, decoupling, and routing tolerances together.