origins of XC

Technical questions regarding the XTC tools and programming with XMOS.
User avatar
johanar
Active Member
Posts: 60
Joined: Tue Feb 16, 2010 8:21 am
Location: Sweden

origins of XC

Post by johanar »

Just had a quick look at XC and I wondered, was it created by people working with hardware design? Just think it reminds me alot of VHDL :)


User avatar
dave
Member++
Posts: 31
Joined: Thu Dec 10, 2009 10:11 pm

Post by dave »

The concurrent programming features of XC are closely aligned with occam, which is in turn related to CSP. occam is the language I designed in the early 1980s to program the Inmos transputer processors - I was the architect of the transputer. There are wiki pages - and lots of other information - about transputers and occam on the Web.

I have been a programming language designer, computer architect, hardware designer and programmer - especially compiler writing. I am very interested in languages that can be used for both hardware design and software design. In fact, many years ago I wrote a paper - 'compiling occam into silicon' - http://www.transputer.net/tn/23/tn23.pdf - exploring a method of translating the occam concurrent programming language into chip designs. occam was also used as the basis of several of the design languages used for asynchronous hardware.

Once you have sequence, parallel, select and channel communications, the language is powerful enough to use either as a programming language or as a hardware design language! This is a really useful idea as it means that designs can be moved easily between hardware and software.
User avatar
johanar
Active Member
Posts: 60
Joined: Tue Feb 16, 2010 8:21 am
Location: Sweden

Post by johanar »

Aight, I'll look into it when I get a chance. Thanks for the answer!
User avatar
jonathan
Respected Member
Posts: 377
Joined: Thu Dec 10, 2009 6:07 pm

Post by jonathan »

dave wrote:In fact, many years ago I wrote a paper - 'compiling occam into silicon' - http://www.transputer.net/tn/23/tn23.pdf - exploring a method of translating the occam concurrent programming language into chip designs.
Hmm... so when's the "Compiling XC into Silicon" paper coming out?

;-)
Image
User avatar
leon_heller
XCore Expert
Posts: 546
Joined: Thu Dec 10, 2009 10:41 pm
Location: St. Leonards-on-Sea, E. Sussex, UK.

Post by leon_heller »

Dave:

Weren't some parts of the transputer designed with occam? I vaguely remember it being mentioned at the time. I think there was a working compiler before there was any hardware.
User avatar
dave
Member++
Posts: 31
Joined: Thu Dec 10, 2009 10:11 pm

Post by dave »

We used occam for high-level modelling and simulation during the transputer design(s). That way we could model the concurrency without needing to model the timing.

We also used occam to develop and verify microcode for the T800 floating point unit - using correctness-preserving transformations to prove equivalence of the microcode representation and a verified high level program.
User avatar
leon_heller
XCore Expert
Posts: 546
Joined: Thu Dec 10, 2009 10:41 pm
Location: St. Leonards-on-Sea, E. Sussex, UK.

Post by leon_heller »

I paid a few hundred pounds for a couple of T800 samples! That was a lot of money then. The occam User Group conferences were a lot of fun.
User avatar
shawn
XCore Addict
Posts: 238
Joined: Thu Dec 17, 2009 5:15 am

Post by shawn »

dave wrote:We used occam for high-level modelling and simulation during the transputer design(s). That way we could model the concurrency without needing to model the timing.
So Xmos or some of Xmos is a proof of Occam, that's very interesting.
Occam in EDA has so much potential I would imagine. I am going to be
examining the differences and similarity of Occam and XC. Perhaps some
day we will develope with XC and Occam in the same enviorment, maybe
that enviorment shall be an Xmos platform. :roll:
User avatar
ahenshaw
Experienced Member
Posts: 96
Joined: Mon Mar 22, 2010 8:55 pm

Post by ahenshaw »

Might we ever see counted-array channel communication introduced to XC? In other words, something:

chan <: count::array

Where both count and array may be of arbitrary types. This cleaned up a lot of my code, when it was added to occam.