The advent of reconfigurable systems has begun to blur the traditional boundary between hardware and software. Usually the logical design of a computer (its hardware) is fixed by hardware engineers who then hand the machine to software engineers. Hardware engineers use hardware description languages or HDLs to configure programmable logic devices or PLDs, which they then assemble with other integrated circuits, such as microprocessors, to build a computer.
Software engineers, on the other hand, are used to working with programming languages such as C and C++, which specify instructions to be executed on fixed hardware.
In a reconfigurable system, part of the system is defined using a system-level description language. This combines the necessary features of both software and hardware languages, allowing a software engineer to write code that could either run on a microprocessor or be converted into a logic description for a PLD.
Examples of system-level description languages are:
Further Reading
"In the Spring of 1997 we (Dr. André DeHon and Prof. John Wawrzynek) taught a reconfigurable computing course at UC Berkeley. These pages archive materials from that offering": [[1]
(highly recommended reading)