1. A method for communicating data between a simulation of an electronic device carried out by a program executing in a host computer and a hardware peripheral device attached to said host computer, said hardware peripheral device operating at a higher speed than said simulation, the method comprising: receiving data from said hardware peripheral device using peripheral device interface software running on said computer; transmitting said data received from said hardware peripheral device to said simulation through a programming language interface; receiving data from said simulation through said programming language interface; and transmitting said received data from said simulation to said hardware peripheral device using peripheral device interface software running on said host computer; wherein said receiving data from said hardware peripheral device is executed in a first thread, said transmitting said data received from said hardware peripheral device is executed in a second thread, said receiving data from said simulation is executed in a third thread, and said transmitting said data received from said simulation is executed in a fourth thread.