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: about 17 hours 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 (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T19:46:28.000Z (about 1 year ago)
- Last Synced: 2024-10-29T20:26:36.840Z (about 1 year ago)
- Topics: compiler, fpga-programming, high-level-synthesis, intermediate-language, open-source-hardware
- Language: Rust
- Homepage: https://calyxir.org
- Size: 463 MB
- Stars: 493
- Watchers: 22
- Forks: 50
- Open Issues: 164
-
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