1. A programming hardware assist engine comprising: (a) a data register for receiving programming data and control information to be written to a programmable logic device (PLD); (b) a control register for storing bits to control the writing of the programming data and the control information to the PLD; and (c) a serial interface process for reading the bits in the control register and controlling the serial writing of the data from the data register to the PLD.