Abstract :
Automatically translating a program specified in a programming language into a digital circuit is an idea of long standing interest. Thus far, the concept has appeared to be an uneconomical method of largely academic, but hardly practical interest. It has therefore not been pursued with vigor and consequently has remained an idealist´s dream. With the increasing use of hardware description languages, however, it has become evident that hardware and software design share several traits. Hardware description languages let circuit specifications assume textual forms like programs, replacing traditional circuit diagrams with text. Increased interest in hardware compilation is largely due to the advent of large scale programmable devices. These devices can be configured on the fly, and hence be used to directly represent circuits generated through a hardware compiler. The author argues that it is now conceivable that parts of a program could be compiled into instruction sequences for a conventional processor and other parts could be compiled into circuits to be loaded onto programmable gate arrays. He advocates the development of a single language that could compile parts of a program into instruction sequences for a conventional processor and other parts into circuits for programmable gate arrays. The author points out what is better left to software and what is best implemented in hardware (namely, parallelism). The goal is to achieve a better understanding of the several important aspects that hardware and software design share, which may well be expressed in a common notation
Keywords :
hardware description languages; high level languages; high level synthesis; instruction sets; logic arrays; program compilers; software engineering; automatic program translation; circuit specifications; common notation; digital circuit; hardware compilation; hardware compiler; hardware description languages; instruction sequences; large scale programmable devices; parallelism; programmable gate arrays; programming language; software design; Clocks; Combinational circuits; Computer languages; Design engineering; Flowcharts; Hardware design languages; Process design; Registers; Software design; Transistors;