{"id":6765,"library":"peakrdl-ipxact","title":"PeakRDL-IPXACT","description":"PeakRDL-IPXACT is a plugin for the systemrdl-compiler library, enabling the import and export of IP-XACT XML files to and from the SystemRDL register model. It provides functionality to parse IP-XACT descriptions into an RDL model and serialize an RDL model back into IP-XACT. The current version is 3.5.0, with a release cadence that includes frequent bug fixes and occasional minor feature updates.","status":"active","version":"3.5.0","language":"en","source_language":"en","source_url":"https://github.com/SystemRDL/PeakRDL-ipxact","tags":["IP-XACT","SystemRDL","HDL","EDA","hardware","compiler","XML","plugin"],"install":[{"cmd":"pip install peakrdl-ipxact","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Core dependency for RDL model compilation and manipulation.","package":"systemrdl-compiler","optional":false},{"reason":"Required for efficient XML parsing and serialization of IP-XACT files.","package":"lxml","optional":false}],"imports":[{"note":"The `peakrdl.ipxact` namespace was deprecated and removed in v3.4.0. Use `systemrdl.ipxact` for all imports.","wrong":"from peakrdl.ipxact.importer import IPXACTImporter","symbol":"IPXACTImporter","correct":"from systemrdl.ipxact.importer import IPXACTImporter"},{"note":"The `peakrdl.ipxact` namespace was deprecated and removed in v3.4.0. Use `systemrdl.ipxact` for all imports.","wrong":"from peakrdl.ipxact.exporter import IPXACTExporter","symbol":"IPXACTExporter","correct":"from systemrdl.ipxact.exporter import IPXACTExporter"}],"quickstart":{"code":"import os\nimport tempfile\nfrom pathlib import Path\nfrom systemrdl.core import RDLCompiler\nfrom systemrdl.ipxact.exporter import IPXACTExporter\nfrom systemrdl.ipxact.importer import IPXACTImporter\n\n# Create a temporary directory for test files\nwith tempfile.TemporaryDirectory() as tmpdir:\n    tmp_path = Path(tmpdir)\n\n    # 1. Create a dummy RDL file\n    rdl_content = \"\"\"\n    addrmap my_block {\n        reg my_reg {\n            field { sw=r; hw=w; } my_field[3:0] = 4'h0;\n        } @0x0;\n    };\n    \"\"\"\n    rdl_file = tmp_path / \"example.rdl\"\n    rdl_file.write_text(rdl_content)\n    print(f\"Created RDL file: {rdl_file}\")\n\n    # 2. Compile the RDL file\n    compiler = RDLCompiler()\n    compiler.compile_file(str(rdl_file))\n    root_component = compiler.top\n    print(f\"Compiled RDL, top component: {root_component.get_path()}\")\n\n    # 3. Export to IP-XACT XML\n    exported_xml_file = tmp_path / \"exported_ipxact.xml\"\n    exporter = IPXACTExporter()\n    exporter.export(root_component, str(exported_xml_file))\n    print(f\"Exported to IP-XACT XML: {exported_xml_file}\")\n\n    # 4. Import the IP-XACT XML\n    importer = IPXACTImporter()\n    imported_component = importer.import_file(str(exported_xml_file))\n    print(f\"\\nImported IP-XACT component name: {imported_component.name}\")\n    print(f\"Accessing imported register: {imported_component.registers[0].name}\")\n\nprint(\"Quickstart example completed successfully.\")\n","lang":"python","description":"This example demonstrates how to create a simple RDL model, compile it, export it to an IP-XACT XML file, and then import that XML file back into an RDL model using PeakRDL-IPXACT's `IPXACTExporter` and `IPXACTImporter` classes. The example uses temporary files to ensure it's self-contained and runnable."},"warnings":[{"fix":"Update all import statements from `from peakrdl.ipxact...` to `from systemrdl.ipxact...`.","message":"The `peakrdl.ipxact` namespace was removed. All imports must now use `systemrdl.ipxact`.","severity":"breaking","affected_versions":">=3.4.0"},{"fix":"Review existing IP-XACT imports if they rely on specific generated RDL type names. Adapt downstream RDL processing or scripts to the new naming conventions (concatenated component/memoryMap names).","message":"The importer's mapping of IP-XACT names to SystemRDL type names was reworked to prevent namespace collisions. This changes how component/memoryMap names are concatenated.","severity":"breaking","affected_versions":">=3.3.0"},{"fix":"If you rely on `ispresent=false` nodes being present in the exported XML, ensure your target IP-XACT standard (or the exporter's configuration) supports the `isPresent` tag. Otherwise, these nodes will be omitted.","message":"When exporting, nodes marked with `ispresent=false` (e.g., fields, registers) are now discarded if the target IP-XACT standard does not explicitly support the `isPresent` tag.","severity":"gotcha","affected_versions":">=3.5.0"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[]}