[HandshakeToHW] Tracking issue
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 524
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
This is a tracking issue for the reimplementation of HandshakeToFIRRTL to a HW/ESI-based implementation:
* Operators
* [x] Mux
* [x] Conditional branch
* [ ] Instance
* [ ] Buffer
* [x] Seq
* [ ] Fifo: A fifo is most easily implemented when some memory abstraction can be targeted (ready/write pointers, transparency, ...). We currently have `seq.hlmem` but it would be nice to also have a `seq.fifo` operation (which could lower to a seq.hlmem implementation).
* [x] Constant
* [x] Fork
* [x] Join
* [ ] LazyFork
* [x] Load
* [x] Store
* [x] Memory
* Ideally should lower to a `seq.hlmem` operation, see https://github.com/llvm/circt/pull/3973
* [x] External memory
* [x] Select
* [x] Sync
* [ ] Pack
* Partially done - lowerings exist but semi-blocked by https://github.com/llvm/circt/issues/4043
* [ ] Unpack
* [x] Support pruning `i0` logic
* HandshakeToHW attempts to to keep special-case logic for handling `none` (soon to be `i0`)-typed values. This implies that any handshake SSA value which is `i0` still carries ready/valid/data semantics, however the data part of the bundle is of zero width. Given this style of lowering, we need a pass that is able to prune the `i0` logic post-conversion (or keep it around until emission and let the emitter decide what to do with it).
* [x] Figure out how to support memories
* This will be ESI based, and should use an ESI service.
* [x] Move integration tests from FIRRTL to HW implementation
* [ ] Remove HandshakeToFIRRTL
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the HandshakeToHW and HandshakeToFIRRTL reimplementations, then inspect the remaining unchecked operators and the referenced seq.hlmem and ESI work. Done means completing the listed missing functionality, resolving the Pack dependency, and removing HandshakeToFIRRTL.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100