I am working with SPI connected NOR flash memory and I've noticed that something like 0.01% of devices experience some kind of write failure over their lifetime. We are careful not to exceed the maximum number of erase cycles specified by our chip (100,000) yet still we see some write failures.
After writing data to NOR flash (erasing first as needed of course), our code confirms that the data written matches the data we were intending to write, if it does not match that is what we consider a write failure.
What are typical modes of NOR flash failure? In other words what types/categories of failure are there? Some examples I can imagine are:
- Permanent bit stuck: no matter how many attempts to program/erase a bit at a particular location is stuck as a zero or one forever
- Transient bit stuck: sometimes a bit at particular location will not successfully be programmed/erased but some amount of retrying works
- Permanent block stuck: an entire block all at once fails to be programmable/erasable, its content can no longer be changed at all
- Transient block stuck: an entire block fails to be programmable/erasable but some amount of retrying works
- Transient bus errors: we are using SPI connected NOR flash, could a bus error cause a read or write to transmit some number of incorrect bits such that what is physically present on the flash chip, retrying the read or write will cause it to succeed
Are these all realistic? Are there other failure modes?
Understanding the failure modes will help me design software mitigations such that our devices might handle the failures and work-around them when possible using techniques such as data replication, retries, ECC, etc.
The particular chip in use is W25Q16JV.