HoCL (Higher Order dataflow Coordination Language) is a language for describing dataflow process networks and generating tool-specific descriptions.
HoCL
- can describe hierarchical and/or parameterized graphs
- support two styles of description : structural and functional
- use polymorphic type inference to check graphs
- supports the notion of higher order wiring functions for describing and encapsulating graph patterns
- supports several dataflow semantics (SDF, PSDF, ..) by means of annotations
The generated code is independent of the target implementation platform (software, hardware, mixed, ..). Targeting is done using dedicated backends. The current version comes is equipped with five backends :
- a DOT backend for visualisation of the generated networks
- a SystemC backend for simulation
- a PREESM backend for implementing the described dataflow applications on many/multi-core embedded platforms
- a DIF backend for interfacing to various dataflow analysis tools
- an XDF backend for interfacing to CAL-based design flows
HoCL is a joint project between the Dream and Vaader research groups.
A short tutorial on the language.
A minimal user manual describing how to invoke the compiler.
A gentle introduction to the concepts of functional graph description.
A BNF description of the syntax, in pdf and html
The formal semantics of the language.
A short video illustrating the use of the toplevel interpreter.
Pre-requisites :
Download the source tree (git clone https://github.com/jserot/hocl
).
From the root of the source tree :
./configure [options]
(./configure --help
for the list of options)make
make install
To try examples :
- go the directory containing the example (e.g.
cd examples/working/simple/basic
) - type
make dot
to generate the.dot
representation (make
will also display it) - type
make systemc
to invoke the SystemC backend (code will be generated in sub-directorysystemc
); to test the generated code:cd systemc; make
- type
make preesm
to invoke the PREESM backend (code will be generated in sub-directorypreesm
)