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.
Pre-requisites :
-
Ocaml version >= 4.06.0 with the following packages
-
A running
Latexinstallation, with thepdflatexcommand if you want to build the documentation from sources -
A
Qt5installation if you want to build the GUI
Clone the source tree from the github repo (git clone https://github.com/jserot/caph).
From the root of the source tree :
./configure [options](./configure --helpfor the list of options)makemake install