https://github.com/calyxir/calyx
Intermediate Language (IL) for Hardware Accelerator Generators
https://github.com/calyxir/calyx
compiler fpga-programming high-level-synthesis intermediate-language open-source-hardware
Last synced: 2 months ago
JSON representation
Intermediate Language (IL) for Hardware Accelerator Generators
- Host: GitHub
- URL: https://github.com/calyxir/calyx
- Owner: calyxir
- License: mit
- Created: 2019-07-04T05:22:26.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2026-02-13T23:06:55.000Z (2 months ago)
- Last Synced: 2026-02-15T23:51:12.262Z (2 months ago)
- Topics: compiler, fpga-programming, high-level-synthesis, intermediate-language, open-source-hardware
- Language: Rust
- Homepage: https://calyxir.org
- Size: 527 MB
- Stars: 580
- Watchers: 18
- Forks: 64
- Open Issues: 168
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://depot.dev/?utm_source=capra)
A Compiler Infrastructure for Accelerator Generators
Calyx is an intermediate language and infrastructure for building compilers that generate custom hardware accelerators.
See the [Calyx website][site], [language documentation][docs] and the [documentation for the source code][source-docs] for more information.
Calyx's design is based on [our ASPLOS '21 paper][paper].
## Installation
### Quick
If you want to try out the compiler, install the [crate][] using `cargo`:
```
cargo install calyx
```
This will install the `calyx` binary, which can optimize and compile Calyx programs to Verilog or [CIRCT][].
### Recommended
Follow the [getting started][docs] instructions.
## Organization
This repository contains the source code for the following:
* [`calyx-utils`][]: Utilities for the Calyx compiler
* [`calyx-frontend`][]: Parser and frontend AST for the Calyx language.
* [`calyx-ir`][]: The Calyx intermediate language.
* [`calyx-opt`][]: Optimizations for the Calyx intermediate language.
* [`calyx`][]: The Calyx compiler driver.
You can also use the Calyx compiler as a library and implement your own optimizations. To do this, [check out the example][opt-example] provided by the [`calyx-opt`][] crate.
[site]: https://calyxir.org
[docs]: https://docs.calyxir.org
[source-docs]: https://docs.rs/releases/search?query=calyx
[paper]: https://rachitnigam.com/files/pubs/calyx.pdf
[`calyx-utils`]: https://crates.io/crates/calyx-utils
[`calyx-frontend`]: https://crates.io/crates/calyx-frontend
[`calyx-ir`]: https://crates.io/crates/calyx-ir
[`calyx-opt`]: https://crates.io/crates/calyx-opt
[`calyx`]: https://crates.io/crates/calyx
[circt]: https://docs.calyxir.org/running-calyx/fud/circt.html
[opt-example]: https://docs.rs/calyx-opt/0.2.1/calyx_opt/
[crate]: https://crates.io/crates/calyx