Optimising fpga designs