nonvolatile programmable gate array