Nanomachines will be among the most complex things that humans have ever designed. A nanomachine the size of a grain of sand might easily contain 20 trillion parts, many of which would be moving parts. At 100 terabytes, the world's largest existing database could store just 5 bytes per part—not enough bits to store a unique number for each one.
VLSI chips such as microprocessors are among today's most complex designed machines, with millions of working parts. Even these are much too complex for manual design. Design relies heavily on CAD and simulation software, and on higher-level specification languages. For efficiency, such software operates at a variety of ontological levels. For correctness, it employs design-rules checkers to ensure that the assumptions embodied in the ontological hierarchy are reflected in the design.
Microsystem design passed through several complexity barriers to reach its current abilities. The relevance of these, and of the techniques used to surmount them, for nanosystems will be discussed, and the prospects of designing large nanosystems examined.