Visual Haskell /long comment/

Ingo Sander ingo@ele.kth.se
Fri, 6 Apr 2001 16:23:17 +0200 (MET DST)


On Tue, 3 Apr 2001, Jerzy Karczmarczuk wrote:

> I don't know what is the real status of the
> implementation,
> but I read the paper of Hideki John Reekie quite a time ago.
> And his thesis.
> 
> http://ptolemy.eecs.berkeley.edu/~johnr/papers/thesis.html
> 
> Using lazy streams as the basic protocol for implementing "heavy run"
> machines is nice, but - probably - not so easy to implement efficiently,
> and the dataflow approach is particularly interesting in the domain of
> scientific data processing, where brutal power cannot be disregarded.
> 
> What is the opinion of people working on Hawk? Lava?
> 

I am not working on Hawk or Lava, but Reekie's work has been a key 
inspiration for our research, which is the development of the ForSyDe
(Formal System Design) methodology, developed for the design of systems
on a chip. The architecture for such systems is a single chip integrating
many different components, such as microprocessor and DSP cores, memories
and custom hardware. 

We use Haskell as a modelling language in a similar way as
Reekie described in chapters 5 and 6 of his Ph.D. thesis. Higher-order
functions like scanlS and mapS, called skeletons in our methodology, are
used as process constructors implementing a synchronous computational
model.

We extend Reekies approach targeting applications that control both
control
and data flow parts. In addition, we also cover the synthesis process,
i.e. the transformation from an ideal system model written in Haskell,
into C-code for the software parts and VHDL-code for the hardware parts.
During the synthesis process we use the property, that each skeleton has a
hardware and software interpretation, e.g. a process 'scanlS f m' has a
finite state machine as its interpretation and is translated into the
corresponding VHDL (for hardware) structure, where f describes the next
state decoder and m determines the memory elements. Thus, we do not
compile the Haskell code with a traditional compiler, but interpret the
structures (skeletons) in the system model in order to get an effective
hardware/software implementation of the system model. 

Back to your question, we believe that such an approach

- raises the abstraction level compared to traditional methods starting
from VHDL/C++
- allows for formal design transformation
- leads to an efficient implementation using the interpretation of
higher-order functions into hardware and software
- allows the incorporation of formal methods because of Haskells
formal semantics

If you want to more about our approach please the following WWW-page 
containing a number of publications about the ForSyDe methodology:

http://www.ele.kth.se/~ingo/   

Ingo Sander