A method of programming at least one physically unclonable function (PUF) magneto-resistive random access memory (MRAM) bit cell in an MRAM PUF array in an MRAM for performing a PUF operation, the MRAM PUF array comprising a plurality of MRAM bit cell row circuits each comprising a plurality of PUF MRAM bit cells, and a plurality of MRAM bit cell column circuits each comprising a PUF MRAM bit cell from an MRAM bit cell row circuit among the plurality of MRAM bit cell row circuits, the method comprising:
- receiving a PUF data signal representing a resistance of at least one PUF MRAM bit cell in at least one MRAM bit cell column circuit for a selected MRAM bit cell row circuit for a PUF read operation;
- generating a PUF output indicating a memory state in the at least one PUF MRAM bit cell in the at least one MRAM bit cell column circuit for the selected MRAM bit cell row circuit, based on the PUF data signal;
- and
- generating a first program write signal to program the at least one PUF MRAM bit cell in the at least one MRAM bit cell column circuit to a permanent memory state based on the memory state indicated by the PUF output.