An emulation subroutine is a small program that emulates the functions of another software or hardware. There are a few synonyms for such subroutines, including emulator, virtualization, simulation, and replication. While an emulator is a program that replicates the behavior of an original system, virtualization refers to creating a virtualized environment that simulates a real computing system. Many people often interchange simulation and emulation as they both recreate a particular function or process, while replication is creating an exact copy of a system or software. These synonyms are often used interchangeably but have specific meanings in different contexts.