CPAL serves to describe both the functional behaviour of the functions, that is their code, as well as the functional architecture of the system (i.e., the set of functions, how they are activated, and the data flow among the functions). CPAL is a formal language in the sense that it has well defined concepts of states and transitions, but CPAL purposely does not provide constructs that are hard to handle, or lead to convoluted code.
CPAL serves two use-cases:
- a design exploration platform for CPS with main features being the formal description, the edition, graphical representation and simulation of CPS models,
- a real-time execution engine: the vision behind CPAL is that programs can be executed and verified in simulation mode on a workstation and the exact same code can be later run on an embedded board with the same run-time timing behaviour.
See http://www.designcps.com/ for more details.