Register Map YAML to C Header

Hard Python Build Asked at Synopsys
Solve this problem

Generate a C header from a register description so firmware and documentation cannot drift apart. Emit address defines plus shift and mask macros for every field.

Constraints

  • Input is a list of dicts with name, address and fields.
  • Each field has a name, offset and width.
  • Emit uppercase macro names prefixed by the register name.
  • Overlapping fields within a register must raise ValueError.
  • Output must be deterministic - sorted by address.
  • No external templating libraries.
Starter codePython
1def generate_header(registers):2    """Return the C header text for a list of register descriptions."""3    # TODO4    return ""