{"library":"peakrdl-cheader","title":"PeakRDL C-Header Generator","description":"PeakRDL C-Header is a Python package used to generate a C Header file, typically representing a register abstraction layer, from a SystemRDL register model. It enables direct C-language access to hardware registers by generating C struct definitions that mirror the hardware address space. The library is currently active, with its latest version being 1.1.0, and maintains a regular release cadence, with updates addressing features and fixes.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install peakrdl-cheader","pip install peakrdl"],"cli":{"name":"peakrdl-cheader","version":"sh: 1: peakrdl-cheader: not found"}},"imports":["from peakrdl_cheader.exporter import CHeaderExporter","from systemrdl import RDLCompiler"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom systemrdl import RDLCompiler\nfrom peakrdl_cheader.exporter import CHeaderExporter\n\n# Create a dummy RDL file for demonstration\nrdl_content = '''\n  addrmap my_device {\n    reg { field {} my_reg[31:0] = 0; } control_reg;\n    regfile my_block[8] {\n      reg { field {} status_field[7:0]; } status_reg;\n    }\n  };\n'''\nwith open('example.rdl', 'w') as f:\n    f.write(rdl_content)\n\n# 1. Compile the SystemRDL file\nrdlc = RDLCompiler()\nrdlc.compile_file('example.rdl')\ntop_node = rdlc.elaborate()\n\n# 2. Configure and generate the C header\nexporter = CHeaderExporter(\n    std=\"gnu11\", # Specify C standard, e.g., gnu11, c99\n    generate_bitfields=True, # Enable bitfield structs\n    bitfield_order_ltoh=True # Specify bitfield packing order\n)\noutput_path = 'example.h'\nexporter.export(node=top_node, path=output_path)\n\nprint(f\"C header generated successfully at {output_path}\")\n\n# Clean up dummy RDL file\nos.remove('example.rdl')\n\n# Example of how to use from CLI:\n# peakrdl c-header example.rdl -o example.h --std gnu11 --bitfields ltoh","lang":"python","description":"This quickstart demonstrates how to use `peakrdl-cheader` via its Python API. It involves compiling a SystemRDL file using `systemrdl.RDLCompiler` to obtain an elaborated register model, then passing this model to `CHeaderExporter.export()` with desired configuration options to generate a C header file. This approach is useful for integrating the generator into custom build pipelines. Alternatively, for command-line usage, the `peakrdl` CLI tool provides a `c-header` subcommand.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.1.0","pypi_latest":"1.1.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.2,"avg_import_s":0.35,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.3,"mem_mb":9.2,"disk_size":"68.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.31,"mem_mb":9.2,"disk_size":"56.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.22,"mem_mb":9.2,"disk_size":"72M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.22,"mem_mb":9.2,"disk_size":"60M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.43,"mem_mb":10.9,"disk_size":"71.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.42,"mem_mb":10.9,"disk_size":"59.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.39,"mem_mb":11,"disk_size":"76M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.4,"mem_mb":11,"disk_size":"63M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.38,"mem_mb":10.7,"disk_size":"63.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.35,"mem_mb":10.7,"disk_size":"50.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.37,"mem_mb":10.7,"disk_size":"67M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.41,"mem_mb":10.7,"disk_size":"55M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.4,"mem_mb":10.9,"disk_size":"62.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.34,"mem_mb":10.9,"disk_size":"50.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.37,"mem_mb":10.9,"disk_size":"67M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.39,"mem_mb":10.9,"disk_size":"55M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.29,"mem_mb":9.6,"disk_size":"67.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.29,"mem_mb":9.6,"disk_size":"55.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"peakrdl","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":0.32,"mem_mb":9.6,"disk_size":"72M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"peakrdl-cheader","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.3,"mem_mb":9.6,"disk_size":"60M"}]}}