chipsalliance / chipsalliance/chisel

FIRRTL BlackBox and user-defined cache procedure.

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

Description

**Type of issue**: feature request

**Impact**: API addition (no impact on existing code)

**Development Phase**: proposal

**Please tell us about your environment:**
x.5-SNAPSHOT
**What is the use case for changing the behavior?**
Recently I have been thinking about the question: How to cache during multiple elaborations?

IMHO, I think a FIRRTL blackbox might help by directly linking user-defined "key" to generated FIRRTL as "value":
A key should be a serializable parameter, and user should make sure the reproducibility by them self, a FIRRTL module, as well as inner module and corresponding annotation will automatically be serialized by FIRRTL compiler. In side FIRRTL, we can use namespace to get rid of the name conflicting problem.
So I'm proposing a new API to Chisel and FIRRTL:
1. FIRRTL blackbox which works as what Verilog does, but it is a FIRRTL circuit.
2. the `CacheAnnotaion(key, circuit)` and API to end users to leave the cacheablity and reproducibility problem to end user.
3. A `CacheTransfrom` which insert the elaborated FIRRTL and annotation to main FIRRTL.

Contributor guide

Open the contributing guide

Research direction

The proposal names no files, tests, or entry points. Start by locating the Chisel and FIRRTL compiler APIs for black boxes, annotations, and transforms, then define the cache key and circuit flow before determining what tests would demonstrate a completed design.

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.