[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CSP for hardware design



Hello
I've been thinking about aspects of CSP useful for hardware designs.  It
seems
to me that traditional software design is concerned with the problem of
making
large scale components work together.  CSP's role is to make concurrency of
fairly large components work. 

In contrast, much of hardware design revolves around getting the concurrency
right of comparatively small mechanisms.  CSP was not designed for this.
Yet
it is, I believe, concurrency that makes hardware design difficult, just as
it is
concurrency that makes design of large scale software systems difficult.

So, here is an alternative way to view CSP that might be useful for thinking

about hardware.  The usual interpretation of the mathematics defined by 
CSP is that processes are the active mechanism, and events are the 
communication between processes.  Instead, consider an *event-centric*
interpretation.  Under this view, events are the active mechanism.

Each event consists of boolean expressions that determine when it fires.
The firing of one rule leads to the firing of other rules.  The firing rules
for
each event should be derivable from traditional CSP process definitions.
Likewise, traditional process expressions would be derivable from a set
event firing rules.  Going back and forth would be like alternatively
focusing 
a microscope on the detailed mechanisms of making events "happen" and
focusing a telescope on the global consequences of an event.  The latter
is what CSP has traditionally done.

Comments anyone?
-jc