This is an old revision of the document!


System requirements

Before starting, please make sure that your system satisfies the following requirements:

  • The system must have libedit installed.
    • For the yum package manager, the package is called libedit-devel
    • For apt-get, it is libeditline-dev or libedit-dev
    • Some systems have both packages. In that case please use libedit, not libeditline.
  • The system should have zlib installed
  • The system should have the macro pre-processing package m4 installed

Build instructions

Create a directory where you'd like the tools to be installed. Example common locations include /usr/local/cad, /opt/cad, /opt/async. Once you've cloned the git repo:

  • Set the environment variable ACT_HOME to point to the install directory.
  • Set the environment variable VLSI_TOOLS_SRC to the root of the source tree (i.e. the /path/to/act).
  • From the $VLSI_TOOLS_SRC directory, run ./configure $ACT_HOME
  • Run ./build

If there is an issue building the software and you want to do a clean build, use make realclean

Once you've built the tools, run make install to install the files, and make runtest to run through a set of test cases.

Note that the environment variable ACT_HOME has to be set to run the ACT tools, so it is best to set it in your .bashrc or the appropriate initialization script read in by your default shell.

Language history

This is a rough chronology of the development/evolution of ACT.

  • ~1991 (?), a language for hierarchical production rules was developed at Caltech (A.J. Martin's group). This was dubbed “CAST” for Caltech Asynchronous Synthesis Tools.
  • 1995, a new CAST language was designed and implemented by Rajit Manohar (student in A.J. Martin's group). This was used to implement the first high-performance asynchronous microprocessor
    • A version of this language was also re-implemented at a startup company started by Andrew Lines and Uri Cummings (also in Martin's group) called Asynchronous Digital Design, and then Fulcrum Microsystems.
    • Some development continued at Caltech, including embedding the language within the Modula-3 language
  • 2004, a language that provided the same functionality as CAST but with syntax for new features (not implemented) was developed at Cornell by Rajit Manohar, and this was called ACT (version 0; 0 because the new features were not supported yet)
    • ACT v0 was used by Achronix Semiconductor, a startup company founded by Rajit Manohar along with some of his Ph.D. students
    • An open-source (GPLed) version of ACT v0 (called “HACKT”) was developed by David Fang (student in Rajit Manohar's group) as his Ph.D. work
  • 2005-2014: ACT was used to implement a large number of asynchronous chips, including microprocessors, FPGAs, a GPS baseband engine, digital circuits in continuous-time signal processing hardware, etc.
  • 2010, planning for all the missing pieces and language modifications to ACT v0 started
  • 2011, initial template for the core language based on ACT v0 developed
  • 2017, actual implementation of the new features started
  • 2018, Most features of ACT v1 ready
  • 1/2019, first open-source release
  • 4/2019, documentation effort initiated

Synopsys linkages

Some of the library functionality can be linked into Synopsys vcs for co-simulation support. This requires some Synopsys header files (obviously not included in the ACT distribution).