CAPH is a domain-specific language for describing and implementing stream-processing applications on reconfigurable hardware, such as FPGAs. CAPH generates VHDL code from high-level descriptions of signal or image processing applications. CAPH relies upon the actor/dataflow model of computation. Applications are described as networks of purely dataflow actors exchanging tokens through unidirectional channels and the behavior of each actor is defined as a set of transition rules using pattern matching.
CAPH comes with :
- a higher-order, purely functional language for description of complex dataflow networks
- a rich type system with sized-integers, booleans, floats, fully polymorphic algebraic data types and dependent types
- automatic type inference and type-checking
- higher-order actors (actors taking functions as parameters)
- pattern-matching based description of actor behavior
- graphical visualisation of dataflow networks
- code simulation with trace facilities
- SystemC back-end for simulation
- VHDL backend, generating target-independant, ready-to-synthetize, time and space-efficient VHDL code
- a foreign-function interface (FFI) to use existing SystemC or VHDL code
Tutorial and Reference manual.
Installers for MacOS and Windows are available from the Project web page.
Pre-requisites :
-
Ocaml version >= 4.06.0 with the following packages
-
A running
Latex
installation, with thepdflatex
command if you want to build the documentation from sources -
A
Qt5
installation if you want to build the GUI
Download the source tree from the Project web page or via
github (git clone https://github.com/jserot/caph
).
From the root of the source tree :
./configure [options]
(./configure --help
for the list of options)make
make install