Moderne Schaltungen sind so komplex, dass man sie über sehr viele Taktschritte laufen lassen muss, um sie hinreichend zu simulieren. Bei einer Simulation auf Gatterebene könnte das Monate in Anspruch nehmen. Hinzu kommt die mangelnde Anbindung an die Peripherie. Jede Schaltung tauscht Daten mit ihrer Umgebung aus. Dazu muss nicht nur die Funktion der Schaltung für sich, sondern auch die Kommunikation mit ihrer Umgebung, der so genannten Peripherie, getestet werden. Fast immer ist die simulierte Schaltung aber zu langsam, um die Datenströme der Peripherie verarbeiten zu können und um schnell genug Steuersignale auszusenden. Um diese Nachteile zu umgehen, wendet man das Verfahren der Emulation an. Dabei wird das Verhalten einer Schaltung durch eine andere Schaltung nachgebildet. Das Verfahren ist also hardware-, nicht softwarebasiert. Dazu wird eine Emulator genannte Maschine verwendet, die statt der sonst üblichen festverdrahteten Schaltungen aus Einheiten rekonfigurierbarer Logik besteht. Der Emulator wird so konfiguriert, dass seine Funktion dem der zu emulierenden Schaltung entspricht; er verhält sich nach außen also wie die Schaltung selbst. Emulation findet grundsätzlich auf der Gatterebene statt, da die Grundelemente des Emulators einfache logische Funktionen realisieren.