Introduction to Silicon Compilation

Inexorable progress in device scaling has given rise to obvious increases in circuit complexity. There is the conjecture that the level of complexity in hardware designs is akin to the level of complexity associated with large software systems. If this is the case, then it follows that the design methods and expertise of systems analysts could be brought to bear on the complexity problems associated with large designs in silicon. Already there is evidence that structured hardware design, analogous to structured programming, is emerging in design philosophies that emphasize wiring management and hierarchical design development with regular structures [1]. However, if the expertise of the personnel in the software world is to be applied to silicon implementations of systems then there must be mechanisms that allow their participation in the design process. This could most effectively be achieved by allowing them to write programs which, when compiled, yield code that produces manufacturing data for silicon parts. Thus, taking a macroscopic view, there is a need to provide design tools that take a completely textual description of a design and translate it to layout data.