Kiva's Professional Pages
 Multicore Essays

There are big changes afoot in systems architecture. Suddenly, multicore systems have become fashionable. After years in which multiprocessor systems were looked upon as relevant only to the complex, expensive domain of large servers, multicore approaches are getting traction in embedded systems. Although the trigger for change is mostly emotion-driven (Intel says multicore is good, and reliance on simplistic clock frequency bad) there is good science behind the movement. Multicore systems can, in principle, offer lower cost, lower power, higher performance, greater scalability... than the prior approach of "one big fat processor".

But the change means big changes for software and for systems design. This section of our site will hold a set of essays on the subject. Each essay will likely change over time, as reflection, more information, and its interplay with others all have their effects.

Comments are welcome: email them to Pete Wilson


Associated Software

Publication Date

Essay 1: An Introduction to Multicore and its Challenges


February 7, 2006

Essay 2: An Example System - Radar Autotracking


February 21, 2006

Essay 3: Platform Basics (Hardware)


April 4, 2006

Essay 4: Platform Basics (Software) (to be done)

May 1, 2006


Multicore Issues  
January 12, 2007

Plasma - A Multicore Programming and Simulation Language

Plasma is an experimental programming language whose existence was driven by both a desire to make multicore programming simpler and more robust, and a desire to have a low-cost tool which would allow us to model (simulate) complete systems at various levels of abstraction, including both hardware and software.

Plasma is an extension to C/C++ supporting explicit concurrent programming. This release is the version created at Freescale Semiconductor Inc. It's an early version intended for folk to experiment with the language; it compiles just for uniprocessor x86 Linux systems, using a threads package to emulate concurrency.

An introduction to the language may be obtained from the link below (this paper was presented at the 2005 Microprocessor Test and Verification Conference in Austin in fall 2005). A shorter document in the form of a presentation may be also be downloaded (the actual MTV slides).

The definition of the language has been a joint effort of Brian Kahne and Pete Wilson; the implementation work was done by Brian, who also converted most of the sample software (written by Pete) from another (simpler) language into Plasma, and then added several more complex examples himself.

Plasma could be used (given an industrial-strength implementation) for:

  • - writing real, hard-realtime, distributed concurrent software
  • - writing models of distributed software running on distributed hardware
  • - writing models of distributed hardware at a variety of levels of abstraction.

ADL and µADL

ADL is a language and framework for describing processor cores. This project is composed of two main parts: the ADL language is used to describe a processor's architecture, i.e. the instructions, registers, MMU, etc. The µADL language is used to describe a processor's micro-architecture - that is, its pipeline. An ADL description may be used to generate an ISS, an assembler, documentation, etc. It may also be combined with a µADL description in order to generate a cycle-accurate or cycle-approximate simulator.

ADL was a project prototyped by Pete Wilson and then developed into a product-quality implementation by Brian Kahne with consultation and initial direction by Pete Wilson. µADL was conceived by Pete and Brian and implemented at Freescale.

ADL and plasma are now available from Freescale's open software site. Go to



Spice 3f4v02b - Carbonised and Optimised

Note: Anyone interested in our port of Spice should also look at MacSpice, which is a later version of Spice and contains many enhancements and bug fixes.

Spice 3f4v02b is a straightforward, mechanical port of the Spice electronic circuit simulation program to the Macintosh (MacOS Classic and MacOS X - the port is carbonised). The port is very straightforward - the source was downloaded from Berkeley (look -here: http://www-cad.eecs.berkeley.edu/Software/software.html - for Berkeley's CAD software) and minimal changes made to allow it to be compiled (with Metrowerks Code Warrior Pro 5) for any PowerPC Macintosh.

We offer two downloads. One is the complete 'development kit' (source, CW Pro 6 project etc etc). It's a 1.8 MB download, expanding to 11.7 MB of disk space (some more is needed when you actually compile, of course) and containing over 1100 files... It comprises a Stuffit compressed file in .sit format containing the complete source for Spice3f4 and for a utility which can help take the .raw output files from Spice and format them for a spreadsheet to allow nice printable waveforms, together with the CodeWarrior projects themselves (with object code removed to minimise size). If you download it, you'll be able to compile Spice if you've got CodeWarrior; you'll be able to make modifications, recompile and so forth. The port is bound by Berkeley's copyright policies (available from the Berkeley link above).

The other is just the executable plus documentation; this is a smaller download (725 KB) , expands to less disk space (2.4 MB) and should be fine if all you want to do is run Spice on your Mac rather than mess with the source.

Kiva Design offers absolutely no support whatsoever for this software.

Spice is, of course, free,...

Download Spice3f4 Development Package 1.8MB, for Macintosh only (full source plus MetroWerks CodeWarrior Pro 6 projects - no executable)

Download Spice3f4 Executables 725 KB, for Macintosh only (no source, no projects)


Note: downloading large, free files eats into our monthly bandwidth allocation budget at our ISP. If you download any of these and find them useful, informative or otherwise of some merit we'd appreciate you making a donation via PayPal. To do this, lease click the button below. This lets you securely send us money electronically. (By all means practice often :-)

Make payments with PayPal - it's fast, free and secure!