Back to browse
GitHub Repository

Read-only DDR5 SPD decoder and semantic linter in Rust · validates module timing and structure beyond CRC

2 starsRust

Spdr, an open DDR5 SPD decoder and linter (JESD400-5 is paywalled)

by mertefesensoy·Jun 7, 2026·2 points·0 comments

AI Analysis

●●SolidNiche GemBig Brain

Semantic linter catches timing violations CRC misses, like tRC ≠ tRAS + tRP.

Strengths
  • no_std, allocation-free Rust with forbid(unsafe_code) and property-tested error handling
  • Open reference implementation for paywalled JEDEC JESD400-5 standard
  • Validates cross-field consistency, not just CRC—catches impossible timing configs
Weaknesses
  • UDIMM-only scope; SODIMM and RDIMM decoding deferred pending real fixtures
  • Validated against one module so far—needs broader hardware testing
Target Audience

Hardware engineers, memory overclockers, system integrators

Post Description

SPD is the small EEPROM on a memory module that stores its timings, geometry, and the XMP/EXPO overclock profiles. The JEDEC standard that defines the DDR5 layout, JESD400-5, is paywalled, so there isn't a clean open reference for what each byte means.

I wrote spdr partly to have one. Every field decoder is written out explicitly and each byte offset is pinned to an open source I could cross-check against, so the code reads as a reference for the format about as much as it works as a tool. On top of the decoder there's a linter that flags values that are internally inconsistent even when the CRC passes, like a tRC that doesn't equal tRAS + tRP, or a CAS latency the module doesn't list as supported.

The core is a no_std, allocation-free, #![forbid(unsafe_code)] Rust library; the CLI is separate. Malformed input returns a typed error rather than panicking, which is property-tested over arbitrary and mutated bytes.

It's read-only (it never writes SPD), and the scope is deliberately narrow: unbuffered DDR5 UDIMMs are fully decoded, server/registered modules aren't yet, and it's only validated against one real module so far.

https://github.com/The-Open-Memory-Initiative-OMI/spdr

Similar Projects