chisel
chisel copied to clipboard
Proposal: Standardized Property Metadata API for Chisel Based on IP-XACT
Motivation
Chisel has long lacked a unified and robust approach for exposing metadata. Several prior attempts—such as RocketChip OM/OM2, the Trace API, and the current Property & Class API—have fallen short of broad adoption.
At present, the only recommended approach is the Property API integrated with OM (Object Model), but this solution is still underutilized by the majority of end users, the only known users might be only SiFive and the T1 project.
As we evaluate integration with various IP tools and respond to feedback from customers, it's clear that a more generic and structured Property API is needed. This API should accommodate diverse use cases while offering compatibility with standard tooling expectations such as IP-XACT.
Solution
We propose to define a standard metadata OM model based on the IP-XACT schema, split into two categories:
-
Explicit Properties: These include bus interfaces, address maps, generator parameters, and other user-defined metadata. These should be captured in Chisel using a well-defined API. These properties should then be emitted through MLIR in a standardized ABI format.
-
Implicit Properties: These include instance hierarchies, ports, and other circuit-derived metadata. These will be extracted via CIRCT transforms and automatically exposed through the OM layer.
By clearly separating what can be annotated manually from what must be analyzed, we can create a clean metadata architecture that supports introspection and IP integration at scale.
Approach
[ ] Define a standardized and IP-XACT-aligned ABI for OM metadata
[ ] Enumerate and formalize the explicit properties and expose them via a Chisel API
[ ] Extend CIRCT to analyze and emit implicit metadata via transforms
[ ] Provide a supporting library (e.g., OM Python API or zaozi-om in Scala 3) to inspect OM metadata from MLIR for downstream tooling