[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CSP for hardware design
I've been thinking about aspects of CSP useful for hardware designs. It
to me that traditional software design is concerned with the problem of
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.
it is, I believe, concurrency that makes hardware design difficult, just as
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
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
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.