circt
circt copied to clipboard
[HandshakeToHW] Tracking issue
This is a tracking issue for the reimplementation of HandshakeToFIRRTL to a HW/ESI-based implementation:
- Operators
- [x] Mux
- [ ] Conditional branch
- [ ] Buffer
- [x] Seq
- [ ] Fifo: A fifo is most easily implemented when some memory abstraction can be targeted (ready/write pointers, transparency, ...). We don't yet have such abstraction to target - ideally,
seqshould support some notion of high-level memory which lowers down into something that synthesizes reasonably toan FPGA.
- [ ] Constant
- [x] Fork
- [x] Join
- [ ] LazyFork
- [ ] Load
- [ ] Store
- [ ] Memory
- [ ] External memory
- [x] Select
- [x] Sync
- [x] Pack
- [x] Unpack
- [ ] Support pruning
i0logic- HandshakeToHW attempts to to keep special-case logic for handling
none(soon to bei0)-typed values. This implies that any handshake SSA value which isi0still 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 thei0logic post-conversion (or keep it around until emission and let the emitter decide what to do with it).
- HandshakeToHW attempts to to keep special-case logic for handling
- [ ] Figure out how to support memories
- This will be ESI based, and should use an ESI service.
- [ ] Move integration tests from FIRRTL to HW implementation
- [ ] Remove HandshakeToFIRRTL