calyx
calyx copied to clipboard
Intermediate Language (IL) for Hardware Accelerator Generators
See #1370 for more details. The idea is to standardize the file opening/buffering in the orchestration done by the compiler rather than making it the responsibility of the backend. This...
One thing I often keep wanting to do is document a compilation invariant by generating an assertion checked by simulation tools. I realized one way to do this without changing...
The current Verilog backend for Calyx generates [priority logic](https://sutherland-hdl.com/papers/2005-SNUG-paper_SystemVerilog_unique_and_priority.pdf) which is known to inefficient. In a nutshell, because we generate code that looks like: ``` x = c1 ? a...
Currently we have both `--synthesis` (which controls the backend) and the `-p externalize` alias which runs the synthesis passes. We should have exactly one command to trigger everything for you...
Makes progress towards #1673: brings our systolic array development into the modern era of eDSL usage.
Adds support for OHE encoding for static FSMs. You can pass `-x compile-static:one-hot-cutoff=n`, where `n` is the "cutoff", i.e., the maximum number of states that an FSM can take before...
During the AMC/Calyx-Opt meetings, we realized that Vitis was doing a one-hot encoding for their FSMs, which probably explains their lower LUT usage. This got us thinking about a new...
This issue lists out steps for profiling! (Mostly so I can organize my TODOs.) Will update as I move along. ### Inspections & QoL improvements to profiler - Running the...
This PR makes a little progress towards #1673. I have used a handful of existing helpers from the builder library when the answer was really very clear, but have not...
Our [PIFO](https://github.com/calyxir/calyx/blob/main/calyx-py/test/correctness/queues/pifo.py) is implemented rather peculiarly, and here I propose we rethink it. ### Present A PIFO orchestrates two [FIFO](https://github.com/calyxir/calyx/blob/main/calyx-py/test/correctness/queues/fifo.py)s. When an item is `push`ed into the PIFO, it runs...