It's Time to Stop Calling Circuits "Hardware"
Frank Vahid · Computer · 2007
Expanding the software concept, to spatial models like circuits facilitates programming next-generation embedded systems. Today, embedded-system designers frequently supplement microprocessors with custom digital circuits, often called coprocessors or accelerators, to meet performance demands. A circuit is simply a connection of components, perhaps low-level components like logic gates, or higher-level components like controllers, arithmetic logic units, encoding engines, or even processors. Increasingly, designers implement those circuits on an FPGA, a prefabricated chip that they can configure to implement a particular circuit merely by downloading a particular sequence of bits. Therefore, a circuit implemented on an FPGA is literally software. The key to an FPGA's ability to implement a circuit as software is that an N-address-input memory can implement any N-input combinational circuit.