1. A non-volatile memory, comprising: at least one One-Time Programmable (OTP) data memory that has a plurality of OTP memory cells to store data; and at least one OTP Content Addressable Memory (CAM) that has a plurality of OTP address memory cells to store valid addresses and a plurality of CAM memory cells to compare an input address with the valid addresses stored in the OTP address memory cells and to output a latest entry of the matched valid addresses, wherein the non-volatile memory is configured to be programmable multiple times on the same addresses by programming an address and data into a next available entry of the OTP CAM and the OTP data memory, respectively, and wherein the non-volatile memory is configured to be read by using the input address to search the latest entry of the matched valid addresses in the OTP CAM and then use that address to access the OTP data memory to read data for output.