So it is obvious that an FPGA is (much) faster and (far) more energy efficient than a CPU. This makes FPGA’s attractive for computation intensive applications, or for applications that require large data streams. However, the most striking difference is the fact that on an FPGA there is no program. Instead, the functionality of an FPGA is determined by its architecture, that is to say, by the way operations and registers are connected together. Traditionally architectures are created using low-level hardware description languages (VHDL, Verilog), which offer few abstraction mechanisms and have low productivity. Strange enough though, to improve designer productivity, these days common practice still seems to be to use mainstream sequential languages, which were meant to program CPU’s, in order to try to define the parallel FPGA’s architectures.