Skip to content
/ hocl Public

HoCL (Higher Order dataflow Coordination Language) is a language for describing dataflow networks and generating tool-specific descriptions.

License

Notifications You must be signed in to change notification settings

jserot/hocl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HoCL

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.

DOCUMENTATION

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.

INSTALLATION

Pre-requisites :

Download the source tree (git clone https://github.com/jserot/hocl).

From the root of the source tree :

  1. ./configure [options] (./configure --help for the list of options)
  2. make
  3. make install

To try examples :

  1. go the directory containing the example (e.g. cd examples/working/simple/basic)
  2. type make dot to generate the .dot representation (make will also display it)
  3. type make systemc to invoke the SystemC backend (code will be generated in sub-directory systemc); to test the generated code: cd systemc; make
  4. type make preesm to invoke the PREESM backend (code will be generated in sub-directory preesm)

About

HoCL (Higher Order dataflow Coordination Language) is a language for describing dataflow networks and generating tool-specific descriptions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published