chipsalliance / chipsalliance/chisel

Proposal: Standardized Property Metadata API for Chisel Based on IP-XACT

Open
#4,932 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Scala
Stars
4.8k
Forks
658
Avg merge
18h 59m
Merged PRs (30d)
14

Description

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

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing Property API, Object Model, RocketChip OM/OM2, Trace API, and Property & Class API referenced in the proposal. Then clarify the IP-XACT-aligned ABI and the boundary between explicit Chisel properties and implicit CIRCT-derived metadata. Done requires resolving the checklist items for the ABI, Chisel API, CIRCT transforms, and supporting inspection library.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.