Despite the convenience of clean abstractions, technological trends are blurring the lines between design layers and creating new interactions between previously unrelated architecture layers. For example, virtual machines such as VMWare and Transmeta implement the application-software-visible architecture in virtual machine software, allowing more flexibility in the hardware/softwareinterface beneath the VM layer.<p>Future technologies will likely further increase the interactions between design layers. Programmable self-assembly is an emerging fabrication technology that must be considered in the higher layers of computer system design. This technology offers an opportunity to perform computation during the fabrication process itself.</p>