Functional Programming in
Embedded System Design
Date Friday, 07MAR 2003
Time 2-3pm
Speaker Al Strelzoff
Affiliation
Abstract Concepts taken from functional programming can be used to define an approach to the design of embedded systems. The approach taken here is iterative or cycle based. An embedded system is then viewed as interacting with a stream of sampled input data to produce a stream of output data at each iterative step of the program. The program itself is composed in a functional programming sense from a set of atomic functions each of which accept a set of inputs and produce a set of outputs on each cycle. Atomic functions are of two types, those that are pure functions that transform data from a set of inputs to outputs in one cycle, and those that store and retrieve data in between execution cycles. The outputs from one function are then wired to the inputs of the next. The resulting execution semantics is related to synchronous dataflow. Thus the resulting program can be viewed in dataflow graph form or written in a dataflow like text language. There are a number of issues to deal with in this model such as multi-rate signal processing, the proper construction of state machines, and construction of higher level functions and data structures such as arrays and structures. The design model is one of constructing modules that enclose previously designed modules until the top level modules, a pure side effect free program, is reached. It is interesting to contrast this design model with object oriented design. However, the author has used Java and object oriented design to construct a prototype of such a design system in which the functions are modeled as Java beans. The resulting system should provide a degree of statically analyzable embedded system designs with some amount of provable safety properties. This system is really the front end of a compiler which when fitted with the appropriate back end can generate conventional software in the form of "C", or hardware in the form of Verilog. The topic of statically analyzable embedded system design has not received a lot of attention and is a rich area for further computer science research work..
Location 200 Technology Square (aka "NE43")
Room 8th Floor Playroom
Bio The author is Vice President of Embedded System Design for Cadence Design Systems located in Chelmsford, Mass. He was previously Chief Scientist of Modicon, an industrial automation company in North Andover, Mass. He holds a Ph.D. in Physics from Columbia University.