filament
filament copied to clipboard
Partial Streaming FFTs
I will be implementing partial streaming the same way spiral does: Instantiating a set number of stages and reusing them (I.E. a 4 stage FFT using 1 stage total). In this way the latency will be NStages/NInstantiated where NInstantiated is the number of actual butterfly units.
If time permits, I might look into partial streaming FFTs using iterative stages but I'm not sure whether that would be worth it, depends on what design space results we can get.
- [ ] Partial Streaming FFT
- [ ] Iterative Stages in partial streaming (?)
Awesome! I think the primary goals are:
- Matching the throughput of Spiral FFTs
- Minimizing the use of
assumeto only "algebraic properties" that Filament's encoding cannot reason about. We have a bunch ofassumethat actually encode circuit properties that we should get rid of (and implement features needed to get rid of them)
Iterative streaming would be weird because the throughput would be terrible; we already have this problem because we have to flush the butterfly pipelines when doing stage reuse.
What do you mean by "circuit properties"? Are we talking about the assume statements used to speed up compilation?
Nope, I mean assumes that state that a particular module's output parameter is equal to one or equal to another output parameter. Those kinds of properties should not be encoded using assume statements.