llvm / llvm/circt

[Tracker] Handshake-to-HW lowering

Open
#2,704 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Handshake Tracking Issue
Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

This issue intends to track the progress on completing the [handshake-to-hw lowering](https://github.com/llvm/circt/blob/main/include/circt/Conversion/HandshakeToHW.h), and by doing so, transition off of our current [FIRRTL-based lowering path](https://github.com/llvm/circt/blob/main/include/circt/Conversion/HandshakeToFIRRTL.h).

The

* [x] implement top-level lowering c7c07659335580fc531ac58e840be056b8c8fcd8
* [ ] Implement generic handshake operations
* These are your unit-rate actors, muxes, ... - we should have all of the capabilities needed in `hw`, `comb` to elaborate these operations.
* [ ] Determine a memory abstraction
* FIRRTL provides a memory operation that greatly simplifies lowering memories in the current flow. The `seq` dialect does not yet have such memory abstraction. To transition, we therefore need to figure out whether to implement first-class support in the `seq` dialect, or if some other route is needed.
* [ ] Determine a top-level memory interface
* In this new lowering flow, all ground types (data signals) are modeled using ESI channels (ready, valid, data signals). This leaves us with the question of how to expose a memory connection at the top-level (and internally, in the hardware module). Designing around ESI interfaces ideally allows us to compose different hardware modules, and so we'd equally want a memory interface abstraction from ESI.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading include/circt/Conversion/HandshakeToHW.h and the existing FIRRTL path in include/circt/Conversion/HandshakeToFIRRTL.h. Review the tracker’s unresolved generic-operation and memory-abstraction items; done requires completing the listed lowering work and determining the required memory abstractions and top-level interface.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.