A software simulator is a software program running on a PC to simulate the CPU, instruction set and I/O. Simulation provides breakpoints, single-stepping, memory access and other tools to help you examine algorithms, change values in registers and measure code performance. Incorrect logic or faulty computations can be analyzed by stepping through the code. Simulation is a quick and easy way to validate the logic of the code flow. Peripherals are also simulated so that devices such as analog to digital converters, I/O pins, serial communication peripherals and timers can be active. The Peripherals can use inputs from simulated waveforms, simulated digital signals and can accept manual inputs to simulate interrupts and sensors. The simulator can log register changes to files for performance analysis.