Staff: Programmable ICs: PLDs and FPGAs