1. A method of programming a programmable logic device, the programmable logic device comprising a plurality of serially connected programmable logic regions, the method comprising the steps of: receiving initial programming data for programming the plurality of serially connected programmable logic regions; receiving transformation data related to the presence and location of at least one faulty serially connected programmable logic region; generating bypass programming data which, in use, renders a serially connected programmable logic region logically invisible; generating effective programming data by incorporating, using information found in the transformation data, the bypass programming data into the initial programming data; programming the programmable logic device using the effective programming data such that the at least one faulty serially connected programmable logic region is programmed with the bypass programming data.