Programmable logic device design