CAL Language

Feb 2, 2011: ERIKA Enterprise now supports the CAL language!

What is all about:

  • With CAL, you can define "actors", which are basically finite state machines activated by guards;
  • Actors have input and output ports, which are used to connect actors together using FIFOs;
  • A program in CAL is a netlist of actors connected together;
  • the CAL program can be compiled in C or Verilog, to implement design space exploration:
    • Actors compiled in C are located in an ERIKA Enterprise extended task;
    • Actors compiled in Verilog are placed inside the FPGA
  • Everything works on a new FPGA board developed in Evidence that will support the CAL language. the board will be announced soon, and it will use a Lattice FPGA and a Mico32 soft-core
  • The CAL language is really good to express parallelism and data-flow systems, such as MPEG decoder. In fact, the language has been used as a reference implementation for MPEG codecs!

How to use it on ERIKA Enterprise?

Cool, isn't it?

Yes! If interested, please check the following pages:
  • the IST FP7 ACTORS Project, which is a center of resources for the CAL Language, and its deliverables which explain many things about CAL
  • OpenDF, an environment for building and executing actor/dataflow models, including support for the CAL actor language.
  • CALtrop, part of the PTolemy Project, source for the CAL Language
  • ORCC, the Open RVC-CAL Compiler

Some history about CAL

CAL is a dataflow and actor-oriented language that has been initially specified and developed as a subproject of the Ptolemy project at the University of California at Berkeley. The initial CAL language specification was released in December 2003. CAL describes algorithms using a set of encapsulated dataflow components called "actors" communicating with each other.

An actor is a modular component that encapsulates its own state. The state of any actor is not shareable with other actors. Thus, an actor cannot modify the state of another actor. The only interaction an actor has with another actor is through input and output ports. The topology of the connections between actor input and output ports constitute what is called a “network of actors”.

CAL actors