Frequently-Asked Questions on Arx

There are already many design languages. Why do we need to learn yet another language?

Popular design languages such as VHDL, Verilog or SystemC do not exclusively target the register-transfer level (RTL), while logic synthesis tools require their input to be specified at the RT level. This discrepancy inevitably leads to synthesizable subsets and restricted coding styles imposed on the mentioned languages in order to be understood by synthesis tools.

Arx is a domain-specific language for designing hardware at the RT level. All language constructs therefore make sense for synthesis. The designer does not need to worry about language subsets and coding styles. The risk of errors is reduced and the design speed is increased.

The main issue is to understand hardware design. Learning a simple language as Arx is just a minor part in the process of becoming a skilled hardware designer.

There is a tendency to use plain C as a specification language for hardware. Apart from the issues mentioned, plain C has the additional disadvantage that it very poorly expresses the parallelism of hardware. Advocates of plain C for the specification of hardware argue that many people are familiar with C. It is, however, a misconception to think that software engineers will become hardware designers by the mere availability of a C-to-HDL translator.

How does Arx compare to SystemC?

SystemC and Arx have different goals. SystemC is meant as a tool for general system-level design. SystemC can be used to model processors, data-flow type of computing with FIFO-based communication, etc. SystemC is not meant in the first place for signal processing at the RT level.

The following can be mentioned when SystemC is compared to Arx:

  • Simulation will be relatively slow, due to the event-driven simulation engine of SystemC.
  • Fixed-point data types are extremely slow to simulate in SystemC.
  • Synthesis from SystemC is not widely available. If it exists, it requires the use of a specific language subset and adherence to a specific coding style.
Arx is a domain-specific language for the development of signal-processing algorithms at the RT level and their synthesis in dedicated hardware. It does not pretend to have the same scope as SystemC. By its limitation to a relatively small application domain, however, it provides fast clock-cycle-accurate and bit-true simulation (via the generation of C++, mapping of fixed-point data types on native integers) as well as an automatic path to synthesis (via the generation of VHDL).