#compiler #ir #accelerator #hardware #infrastructure #generation #language

yanked futil

Compiler Infrastructure for Hardware Accelerator Generation

0.1.2 Aug 30, 2021
0.1.1 Aug 30, 2021

#23 in #accelerator

Custom license

2.5MB
64K SLoC

SystemVerilog 43K SLoC // 0.0% comments Python 18K SLoC // 0.2% comments Rust 2.5K SLoC // 0.0% comments JavaScript 274 SLoC // 0.1% comments TCL 162 SLoC // 0.4% comments Vim Script 134 SLoC Emacs Lisp 129 SLoC // 0.3% comments C++ 70 SLoC // 0.1% comments Shell 59 SLoC // 0.2% comments jq 37 SLoC Lua 28 SLoC // 0.1% comments TypeScript 21 SLoC // 0.2% comments INI 21 SLoC

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, language documentation and the documentation for the source code for more information. Calyx's design is based on our paper.

Installation

Quick

If you want to try out the compiler, install it using cargo:

cargo install futil

This will install the futil binary which includes the calyx frontend, optimization passes, and several backends.

Follow the getting started instructions.

Organization

This repository contains the source code for the following:

  1. calyx (calyx/): The intermediate representation used for hardware accelerator generation.
  2. futil (src/): The compiler infrastructure for compiling Calyx programs. If calyx is like LLVM, then futil is Clang.
  3. Calyx debugger (interp/): An interpreter and debugger for Calyx.
  4. fud, The Calyx driver: Utility tool that wraps various hardware toolchains.

Dependencies

~11MB
~192K SLoC