I also wish to thank my friend Naomi Regier for proofreading this document and providing thoughtful suggestions to improve this thesis. Finally, I wish to thank my parents, Albert and Lavina Bartel for their prayers and encouragement during my graduate studies. This work would not have been possible without their support. vi 1 .4. Register Transfer Language RTL machine simulation is the process whereby a program written in the assembly code of the machine to be simulated is read and executed by a different machine. The result is the same as executing the code on the architecture being simulated [67]. Other forms of RTL simulation employ a machine which has characteristics that are not physically present. This virtual machine may have more memory or a different instruction set, among other characteristics. An RTL defines the instruction set of a microprocessor for simulation in terms of a small set of register transfer statements. If the RTL statements are carefully chosen, they will remain unchanged as instruction sets are defined for various microprocessors. An RTL is not limited to microprocessors, but can also be used for almost any other piece of digital electronic hardware. This extends its usefulness beyond computer architecture to the electrical engineering field. The basic composition of an RTL for a microprocessor is as follows. The microprocessor is defined in terms of a set of register transfers which carry out the intended function in the same way the actual microprocessor would perform it. These register transfers are a mapping of the data flow through the microprocessor. A translator then reads these instructions to simulate the proposed architecture. The actual circuitry and