Hi Tommy
Well I'm working on a Transputer cpu (which originally ran Occam) as well as the compiler for it. Occam later went to U.Oxford and turned into HandelC since they recognised that Occam could be used to model SW and HW processes.
My view as I stated often in the NGs is that while Occam is good for Par message based programming, it wouldn't ever be my choice to describe HW except in a very general way at the spec stage or as a co HW-SW harness . I believe SystemC & other xxxCs also includes CSP basics.
Also I realized that the Transputer process scheduler is a hop & skip from an event wheel but with a much more limited set of semantics so it never quite made it as a direct HW simulator but most Transputer projects were essentialy HW like and usually DSPish.
I like the C syntax as a user, but as a compiler writer, the language is a total dog as it is far harder to describe than Verilog or VHDL although the Hanson-Fraser Lcc book helped me out on that.
Still I am combining Verilog with Occam & C as the main language for the new Transputer. Generally C type seq programs would remain in C. The Verilog syntax comes into play to describe very par HW objects using the cycle model and later the event driven model. Occam comes into play more at a system level for combining message passing seq (C) /par (HDL) blocks. This is somewhat experimental and counters SystemC, SystemVerilog or VHDL to some extant.
The parser essentially allows all constructs of Verilog, Occam & C to be interwtined in sometimes meaningless ways, so a mixed Verilog-C object would not be exportable to another Verilog or C tool, not sure if that matters, its probably inevitable. But you could import modules & functions.
None of this would make any sense outside the Transputer env, as it pushes the idea that to some extent HW & SW form a continuum where algorithms can slide between HW & SW as performance demands. Esp useful to algorithms that naturally might fall into an FPGA as HW but might also be described as HDL or Occam code and just run as SW for lower cost but only possible if cpu supports processes, events, messages etc. The reverse is that SW can be moved from C to C-Occam and perhaps on up to HDL and synthesized into HW directly. Another alternative available only in Transputer systems is to increase the cpu count and spread SW process around to defer having to rewrite as HW. If you have a few 100 cpus, you might never want to rewrite as HW period. Now some might call that a HW simulator, but I might just call it an application.
The alternative approach of trying to figure how to parallelize seq C directly into HW or onto fancy superscaler cpus makes no sense to me as it avoids using the par operator when it can be used in so many places. even if only to express "seq order don't care".
Anyway I am in the middle of getting the compiler to emit asm for the Transputer and also to continue development of the C-ISA simulator, C-RTL simulator, and Verilog models. They are so intertwined that the C-ISA simulator is potentially the runtime for the compiler when hosted on a PC.
It will be awhile before I can demonstrate the whole thing, but parts will come out soon enough.
Looks like you are already convinced too, now another few more bods to go.
regards
johnjakson at usa dot com