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: 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, wherein generating the effective programming data comprises: determining, using the transformation data, a specific point where the bypass programming data should be incorporated into the initial programming data, the specific point being related to the physical location of the faulty serially connected programmable logic region; and inserting the bypass programming data into the initial programming data at the specific point.