Sitemap || RHDL


An Agile HDL


What is RHDL?

RHDL (Ruby Hardware Description Language) is an HDL based on the Ruby programming language. My idea in developing RHDL was to build an HDL on an object oriented programming language to allow HDL features ( concurrent processes, signals, parallelism etc.) in addition to features which come with a modern, object oriented, agile programming language like Ruby ( The intent is to allow more than just simulation, but also verification and testbench creation features. Ultimately, I would like to be able to translate RHDL to VHDL and/or Verilog. The fact that RHDL is based on Ruby should allow modeling at a higher level of abstraction than is possible with VHDL or Verilog.

RHDL users don't need to know much Ruby - this is intentional, I didn't want potential users to have to know Ruby in order to benefit from RHDL. However, RHDL becomes a more powerful tool if the user takes a little time to learn some Ruby (an excellent tutorial and reference book on Ruby is: "Programming Ruby: The Pragmatic Programmer's Guide" by Thomas and Hunt.)

RHDL is not stricly speaking a new language. It is a set of modules (code libraries) that allow Ruby to look like an HDL. Ruby has a concept called code blocks; these blocks are made into lexically scoped closures in order to define a domain specific language like RHDL without having to write a seperate parser.


Good question. Initially I created RHDL as a proof of concept and to demonstrate the power of Ruby for creating domain specific languages.

Scripting languages like Ruby (I prefer to call them agile programming languages since they are full-featured, dynamic programming languages) allow developers to develop at a higher level than is possible with statically typed languages like C, C++ or Java. This leads to greater productivity. I suspect that bringing some of these cocepts into the HDL world can also lead to greater productivity over the current crop of HDLs.

What's it good for?

How to get it


Sitemap || RHDL