The PnP Project

Plug and Play Programming.

What is PnP?

PnP is an extension of OOBP, which stands for Object Oriented Block Programming. OOBP is a programming paradigm developped at TCTS Lab since 1994. It is defined as Object Oriented Programming around processes and combines OOP and block descriptions.
Plug and Play Software extends OOBP by defining input and output data as abstract streams.
This research is done in collaboration with AT&T Labs - Research.

See our latest paper, "Plug and Play Software for Designing High-Level Speech Processing Software".
See also our Journal paper on OOBP: "The Object Oriented Block Programming (OOBP) paradigm : a VHDL-like object oriented approach toward developing efficient DSP software libraries"

Why PnP?

PnP originates from the following facts :
  • Digital Signal Processing scientists are increasingly involved in programming, whether for simulation and research, for software development (mainly for Digital Signal Processors), or even for hardware development (ASIC's are now being programmed and simulated with the VHDL language [IEEE 87] [Airiau et al 90]).
  • Object Oriented Programming (OOP) techniques are now widely used in general software engineering, where the high level abstractions they allow are turned into account to develop libraries of virtual objects (i.e. objects that are not completely specified at the time of their compilation). In contrast, very few OOP software libraries for Digital Signal Processing have been reported.

As a result, it is worth considering, at least for a moment, the form of our programs rather than their content.

Considering well-known programming quality criteria, namely programming speed , error correction speed, computation speed, readability and portability, and the importance of a hierarchical description of systems (as opposed to algorithms), we examined currently existing programming paradigms (mainly structured and object oriented ones) for developing Signal Processing software libraries, and the superiority of Object Oriented Programming methods clearly appeared (OOP compilers for DSP platforms are now beginning to appear, to turn it into account).

In parallel, we reviewed a number of programming environments for Digital Signal Processing (whether object oriented or not), from LabView (National Instruments), often presented as an "alternative to cumbersome text-based programming", to the Visual Engineering Environment of HP [Beethe 92], through the Signal Processing Worksystem of Comdisco, the French Mustig environment [Lienard 87], or the Silage language [Genin et al 90]. They all describe processes as hierarchical blocks, an old concept ([Goldberg & Rader 69], [Covington et al. 87], [Zissman & O'Leary 87]) that naturally accounts for the modularity of signal processing systems.

We then found an important distinction between the concept of Object Oriented Signal Programming (OOSP), i.e. OOP defined around data, which has been imagined and developed since the eighties (with systems like SPLICE [Myers 86] and QuickSig [Karjalainen 90]), and Object Oriented Block Programming (OOBP), i.e. OOP defined around processes, which combines OOP and block descriptions.

We then developped our original Object Oriented Block Programming (OOBP) paradigm for DSP software development, i.e. OOP defined around processes, which combines OOP and block descriptions, [Dutoit et al 93], [Dutoit & Fontaine 95]. The use of encapsulation, inheritance, and polymorphism by its VHDL-like three descriptive levels (namely entity specifications, architectures, and configurations) naturally fulfills the aforementioned criteria, without the need to incorporate complex kernels to control data flows.

We even extended it for graphic operating systems (Windows, XWindows, ...), which provide programmers with optional monitoring facilities, like error tracing and process viewing. In contrast with most other programming environments, however, processing and monitoring are described separately in OOBP, i.e. in methods which do not call one another, so that monitoring facilities do not decrease computational speed when ignored.

Beyond its VHDL-like description of systems (expressing DSP software libraries as OOBP objects is the first step towards their VHDL description), the essential originality of this approach resides in its simplicity, which itself allows programmers to keep total control of the execution of their code. As such, OOBP can be combined with any other programming paradigm (like OOSP, for instance). What is more, it does by no means invalidate structured programming DSP software libraries, the functions of which can still directly be addressed by the blocks process methods. Programs can even be only partially described in the form of blocks. In a word : the OOBP paradigm remains intrinsically open. This is a fundamental requirement for skilled DSP programmers who wish to develop efficient software libraries of DSP systems.

What is available ?

A standard UNIX version of the first version of OOBP has been made available on our FTP server ( in the directory /pub/blocks/unix. To install this version, just copy the file blocks.tar.gz and have a look at the README file for more information.

We are now working on a complete PnP library, which will shortly be made available here.


[Airiau et al. 90] R. Airiau, J.-M. Bergé, V. Olive, J. Rouillard, VHDL, du langage à la modélisation, Presses polytechniques et universitaires romandes, Lausanne, 1990.

[Covington et al 87] C.D. Covington, G.E. Carter, D.W. Summers, "Graphic Oriented Signal Processing Language, GOSPL", ICASSP 87, Dallas.

[Dutoit et al 93] T. Dutoit, V. Fontaine, H. Leich, "A simple and efficient Object Oriented Block Programming (OOBP) paradigm for signal processing software development", Proc. GRETSI 93, Juan-les-Pins, pp. 1015-1018.

[Dutoit & Fontaine 95] T. Dutoit, V. Fontaine, "The OOBP programming paradigm : a VHDL-like object oriented approach toward developin,g efficient DSP software libraries", Annals of Telecommunications, April 95, pp. 365-379.

[Genin et al 90] D. Genin, P. Hilfinger, J. Rabaey, C. Scheers, H. De Man, "DSP Specefication using the Silage language", Proc. ICASSP 90, 5.2, pp. 1057-1060.

[Gold & Rader 69] A. Goldberg & C. Rader, Digital Processing of Signals, McGrawHill, New York, 1969.

[IEEE 87] IEEE Standard VHDL Language Reference Manual, IEE standard 1076-1987,

[Karjalainen 90] M. Karjalainen, "DSP Software Integration by Object Oriented Programming : a Case Study of QuickSig", IEEE ASSP Magazine, vol. 7, N°2, pp. 21-31, April 90.

[Liénard 87] J. Liénard, "Language conversationel pour le traitement des multi-signaux", Proc. GRETSI 87, Juan-Les-Pins, pp. 709-712.

[Myers 86] C. Myers, Signal Representation for Symbolic and Numerical Processing, Ph. D. dissertation, MIT Technical Report 521, august 1986.

[ZissMan & O'Leary 87] M.A. Zissman, G.C. O'Leary, "A Block Diagram Compiler for Digital Signal Processing MIMD Computers", ICASSP 87, Dallas.

Last updated April 25, 1999, send comments to