The Clay VLSI layout language

Stephen C. North · 1986

Clay is a procedural language based on C for nMOS VLSI layout. The primitive objects in Clay are wires and symbols. Wires are line segments of a given mask layer. Symbols are small rigid pieces of a layout, such as contact cuts or transistors. Wires and symbols are created and placed in a layout using programming language constructs. Composite structures, such as routing networks, inverters, registers, and PLAs can be written as functions that call lower-level functions or place the necessary wires and symbols directly. The programming language nature of Clay make it convenient to parameterize local and global features of a design, such as the size of a certain pullup transistor or the number of registers in an array. A key property of Clay layouts is that they are flexible. A section of a layout may be stretched as necessary to satisfy constraints on interface wires (those that have connections outside the cell's boundary.) This simplifies cell assembly by eliminating the need for exact pitch matching. All layout in Clay takes place within ordered contexts. Objects placed inside ordered contexts are separated horizontally or vertically, according to the sequential execution of the program. There are two steps in the translation of a Clay program. The execution of the user's code writes a system of constraints as a side-effect. The layout constraint solver reads these constraints and outputs a rigid layout mask. Particular attention has been focused on efficient implementation of the Clay runtime system and solver. A hierarchical constraint solver can be used to limit memory requirements when creating large designs. PRISM (for Princeton Reduced Instruction Set Machine) is a project chip designed in Clay. PRISM is a prototype VLSI processor for non-numeric computations making heavy use of pointer-based data structures. It has a simple instruction set that yields a fast VLSI implementation. PRISM is intended as a reduced instruction set computer for Lisp, Prolog, and graph algorithms. PRISM address pointers are represented by linear feedback shift registers. PRISM has separate paths to memory for code and data, and local stacks for procedure calls and returns.

Read the paper · More papers on PaperTik