The Rox Programming Language
Rox is a programming language aimed at describing hardware. Rox is still in early development.
The source
Rox is free software distributed under the terms of the GNU GPL 3 or any later version. The repository is hosted on GitLab.
The guide
The guide includes installation instructions as well as documentation on the features of Rox.
An example
// Number types can have any size.
// We can alias types for convenience, here u6 is an alias.
u6 = unsigned(6);
// This component has one input and two outputs.
fn component(in: u6) -> (less_15: bit, dec: u6) {
// A bit can hold the result of a comparison.
.less_15 = in < 15;
// We can easily convert from/to signed/unsigned values of
// different sizes. We don't need to, but let's do it anyway.
s = in as signed(8);
// We cannot assign to s again, so we use another identifier.
// This would be an error: s = s + 0xff;
sum = s + 0xff;
// The . before dec says that we are setting a variable outside
// the current block, otherwise we only create an internal signal,
// just like s and sum above.
.dec = sum as u6;
}