Language history

This is a rough chronology of the development/evolution of ACT and influences from the literature.

  • 1975 E.W. Dijkstra's paper on a guarded command language appears in CACM
  • 1978 C.A.R. Hoare's paper on CSP appears in CACM
  • 1986 A.J. Martin describes an approach to translating communicating processes into asynchronous circuits in a paper in Distributed Computing.
  • 1988-89: The first asynchronous microprocessor was designed and fabricated at Caltech.

Language development:

  • ~1991 (?), a language for hierarchical production rules was developed at Caltech (A.J. Martin's group) based on their experience with designing the first asynchronous microprocessor. This was dubbed “CAST” for Caltech Asynchronous Synthesis Tools. A snippet of a circuit in this language is shown below:
define prs (a)f()
 { p -> q+
   connect a p
 }

cell (_)f()
  • 1995, a new CAST language (docs) was developed from scratch and implemented by Rajit Manohar (at the time a graduate student in A.J. Martin's group). The same example as above would be written as follows in the new CAST syntax
define f (node a)
{  node p, q;
   prs {
       p -> q+
    }
   a = p;
 }
f();
  • 1995-1998 CAST was used to implement the first high-performance asynchronous microprocessor.
  • ~1998 Andrew Lines and Uri Cummings from Martin's group at Caltech launch startup Asynchronous Digital Design (later renamed to Fulcrum Microsystems), which licenses the tools developed at Caltech. Over the years, Fulcrum develops more CAST tools for internal commercial use, including proprietary language extensions.
  • 1998-2003 CAST used at Cornell (Rajit Manohar's group) to implement the first pipelined asynchronous FPGA architecture, as well as SNAP, the first low power microcontroller for sensor networks.
  • 1998-2003 Development continued at Caltech, including embedding CAST-like syntax within the Modula-3 language. This version was used to design the Lutonium processor.
  • 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, based on lessons from using CAST for chip design. This was called ACT (version 0; 0 because the new features were not supported yet)
  • 2005-2008 ACT v0 was used by Achronix Semiconductor, a startup company founded by Rajit Manohar along with some of his Ph.D. students. The same example above would be specified as follows in ACT v0.
defproc f (bool a)
{  bool p, q;
   prs {
       p -> q+
    }
   a = p;
 }
f dummy;
  • 2005-2010 An open-source (GPLed) implementation of an ACT v0 variant (called “HACKT”) was developed by David Fang (student in Rajit Manohar's group) as part of his Ph.D. dissertation.
  • 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, neuromorphic 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
  • 2012, Intel acquires Fulcrum Microsystems, as well as the version of the CAST tools developed by Fulcrum.
  • 2017, actual implementation of the new features started at Yale with a fresh implementation of the entire system.
  • 2018, Most features of ACT v1 ready. The example above would be defined as follows:
defproc f (bool? a)
{  bool p, q;
   prs {
       p -> q+
    }
   a = p;
 }
f dummy;