Standard-To-Handshake + handshake runner doesn't handle toplevel memories well.
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 524
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
There's currently a small 'hack' to enable simulation with the handshake runner when code from the standard dialect has passed a pointer. In the current implementation, the pointer argument is converted to an internal memory, which is then intended to be initialized before simulation (although this doesn't actually happen yet). This is somewhat unintuitive since the memory conceptually lies outside the handshake design.
Fixing this properly probably requires better design for how the handshake dialect (And graph regions in general) are embedded inside SSACFG regions (e.g. the standard dialect). It would make more sense if a testable interface was provided by the standard to handshake conversion, which could then be easily interacted with by sequential code (like the handshake runner) or by an MLIR testbench. Today this complexity is built into the runner.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing the Standard-To-Handshake conversion and the handshake runner, focusing on how pointer arguments become internal memories and how graph regions are embedded in SSACFG regions. Done should provide a testable conversion interface that sequential code or an MLIR testbench can use, with toplevel memories handled and initialized correctly during simulation.
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