
Figura 1. Caratteristiche della memoria OTP e dati memorizzati
OTP sta per memoria programmabile una sola volta. La memoria OTP è un tipo di memoria non volatile che mantiene i dati memorizzati anche dopo la rimozione dell'alimentazione. È progettata per informazioni che dovrebbero rimanere fisse durante la vita di un dispositivo.
La memoria OTP offre un basso consumo energetico, una semplice memorizzazione permanente e protezione da cambiamenti accidentali. Tuttavia, dati errati sono difficili o impossibili da correggere. La memoria OTP è anche diversa da una password monouso, che è un codice temporaneo utilizzato per il login o la verifica.
Come funziona la memoria OTP?
La memoria OTP inizia in uno stato vuoto, dove ogni bit ha un valore binario predefinito di 0 o 1. Durante la programmazione, il dispositivo applica una tensione o una corrente controllata a celle selezionate, cambiando il loro stato elettrico per memorizzare i dati richiesti. Nella memoria OTP basata su fusibile, una corrente di programmazione controllata apre i collegamenti fusibili selezionati.
Il circuito di lettura controlla ogni cella e converte il suo stato elettrico in dati binari. Dopo la programmazione, il dispositivo legge i valori memorizzati e li confronta con i dati originali. Alcuni dispositivi OTP forniscono anche controlli di protezione che limitano la lettura, prevengono ulteriore programmazione o bloccano un intero blocco dopo la verifica.
La memoria OTP può essere classificata in base al metodo fisico utilizzato per memorizzare ogni bit. I principali meccanismi sono collegamenti fusibili o eFuse, celle antifuse, celle basate su carica e regioni Flash bloccabili.
PROM descrive come e quando un dispositivo di memoria viene programmato piuttosto che una specifica tecnologia di cella OTP. Incorporato e standalone descrivono l'integrazione del prodotto, non il meccanismo di memorizzazione fisica.

Figura 2. Tipi di memoria OTP e posizionamento
La memoria OTP basata su fusibile utilizza piccoli collegamenti conduttivi che sono intatti prima della programmazione. Una corrente di programmazione controllata apre i collegamenti fusibili selezionati, cambiando il loro stato elettrico per memorizzare dati binari.
eFuse è una versione elettronica più piccola integrata direttamente in un circuito integrato. La programmazione aumenta permanentemente la resistenza dell'elemento selezionato o interrompe il suo percorso conduttivo.
Le memorie OTP basate su fusibile ed eFuse sono semplici, stabili e ampiamente utilizzate in MCU, processori e SoC. eFuse è più facile da integrare in molti processi CMOS standard, ma la programmazione può richiedere correnti relativamente elevate. Le strutture fusibili possono anche richiedere più area di silicio rispetto alle tecnologie OTP più dense.
Le implementazioni antifuse possono supportare celle compatte e bassa potenza in lettura, ma la densità e la ritenzione dipendono dal processo, dal design della cella, dalla qualificazione, dalla temperatura e dal margine di rilevamento. Lo stato programmato potrebbe essere meno visivamente ovvio in alcune implementazioni.
L'OTP a base di carica memorizza la carica elettrica in una struttura transistor isolata, comunemente un gate flottante. La carica memorizzata cambia la tensione di soglia del transistor, consentendo al circuito di lettura di distinguere tra stati programmati e vuoti.
Questo metodo supporta una buona densità di memorizzazione e bassa potenza in lettura. La sua affidabilità a lungo termine dipende dalla ritenzione della carica, dalla temperatura operativa, dallo stress elettrico e dall'invecchiamento del dispositivo. A differenza della normale Flash o EEPROM, l'implementazione OTP non fornisce una funzione di cancellazione standard per aggiornamenti utente.
Alcuni dispositivi Flash includono pagine, settori o registri di sicurezza speciali che possono essere programmati e poi bloccati permanentemente. Queste aree utilizzano celle di memoria Flash piuttosto che una struttura di fusibile o antifusibile separata.
Le aree OTP basate su Flash bloccabili sono convenienti perché utilizzano un processo di memoria esistente e un'interfaccia di programmazione. Possono fornire più capacità rispetto a piccoli array di fusibili. Tuttavia, la loro permanenza e sicurezza dipendono dal design di blocco del dispositivo. Alcune aree sono veramente irreversibili, mentre altre possono consentire il recupero, la cancellazione di massa o l'accesso di fabbrica in determinate condizioni.
La scelta tra eFuse e antifuse dipende dal processo semiconduttore, dalla tensione di programmazione o corrente disponibile, dal layout della cella, dal metodo di rilevamento, dagli obiettivi di qualificazione e dai requisiti di sicurezza.

Figura 3. Stati di programmazione eFuse vs Antifuse
| Confronto Punto |
eFuse OTP |
Antifuse OTP |
| Stato iniziale |
Percorso conduttivo o a bassa resistenza |
Percorso aperto o ad alta resistenza |
| Stato programmato |
Il percorso diventa aperto o più resistivo |
Viene creato un percorso conduttivo |
| Metodo di programmazione |
Una corrente controllata cambia o apre l'elemento fusibile |
Un campo elettrico alto cambia lo strato isolante e forma un collegamento conduttivo |
| Area di silicio |
La dimensione delle celle e del circuito di programmazione dipendono dal processo e dal layout |
Può supportare una cella compatta, a seconda dell'implementazione del processo |
| Requisito di potenza |
Spesso necessita di una corrente di programmazione più alta |
Spesso necessita di una tensione di programmazione più alta, mentre la corrente dipende dal design |
| Affidabilità |
Dipende dalla geometria del fusibile, dal controllo della programmazione e dal margine di rilevamento |
Dipende dalla struttura antifusibile, dal controllo del breakdown e dal margine di rilevamento |
| Ritenzione dei dati |
Dipende dal design della cella, dalla qualificazione del processo, dalla temperatura e dal margine di rilevamento |
Dipende dal design della cella, dalla qualificazione del processo, dalla temperatura e dal margine di rilevamento |
| Ispezione fisica |
Un collegamento cambiato o aperto potrebbe essere visibile in alcune implementazioni |
Lo stato programmato potrebbe essere meno visivamente ovvio in alcune implementazioni |
| Compatibilità del processo |
Può essere integrato in molti processi CMOS, a seconda delle regole di design |
Potrebbe richiedere materiali, strutture o supporto di processo aggiuntivi |
| Miglior adattamento del design |
Progetti che favoriscono la compatibilità del processo e l'integrazione diretta |
Progetti che possono supportare la tensione di programmazione richiesta e la struttura della cella |
| Fattore di selezione principale |
Corrente di programmazione, area di layout, metodo di rilevamento e supporto di processo |
Tensione di programmazione, supporto di processo, metodo di rilevamento e dati di qualificazione |
Questi tipi di memoria non volatile differiscono principalmente nel fatto che i dati memorizzati possono essere aggiornati e quando tali dati vengono definiti.
| Tipo di memoria |
Può essere aggiornato? |
Come vengono definiti i dati |
Uso tipico |
Limite principale |
| OTP |
No, dopo la programmazione finale |
Programmato dopo la fabbricazione del chip |
ID dei dispositivi, dati di calibrazione, impostazioni fisse e valori di sicurezza |
Dati errati solitamente non possono essere corretti |
| EEPROM |
Sì |
Scritti e aggiornati elettricamente durante l'operazione |
Impostazioni, contatori, valori di calibrazione e preferenze utente |
Le scritture sono più lente delle letture e la durata è limitata |
| Flash |
Sì |
Scritti elettricamente e cancellati in blocchi o settori |
Firmware, codice di archiviazione, registrazione dati e grandi set di dati |
Gli aggiornamenti possono richiedere la cancellazione di un blocco più grande |
| Mask ROM |
No |
Fissato durante la fabbricazione dei semiconduttori |
Codice permanente in prodotti ad alto volume |
Qualsiasi modifica del codice richiede un nuovo design del chip o maschera di produzione |
| PROM |
No, dopo la programmazione |
Programmato dopo che il dispositivo di memoria è stato fabbricato |
Codice fisso, tabelle di ricerca e configurazione del prodotto |
Errori di programmazione e aggiornamenti successivi non sono normalmente recuperabili |
La memoria OTP è utilizzata per informazioni che devono rimanere stabili durante la vita di un dispositivo.
| Categoria Applicativa |
Informazioni Memorizzate |
Scopo |
| Identità del dispositivo |
Numeri di serie, ID del dispositivo, indirizzi MAC e codici di produzione |
Identifica ogni dispositivo per tracciamento, registrazione, rete e record di servizio |
| Calibrazione di fabbrica |
Offset, guadagno, trim, temperatura e valori di compensazione |
Corregge le variazioni di fabbricazione e migliora la precisione del sensore o del circuito |
| Configurazione del prodotto |
Modello, regione, funzionalità abilitate, limiti operativi e impostazioni hardware |
Consente a un design hardware di supportare diverse versioni di prodotto |
| Avvio sicuro |
Bit di abilitazione all'avvio, hash di chiave affidabile e impostazioni di verifica del firmware |
Aiuta il dispositivo ad accettare solo software di avvio approvato |
| Sicurezza del ciclo di vita |
Valori anti-rollback, blocchi di debug, protezione lettura e stati di sicurezza |
Controlla gli aggiornamenti del firmware e limita l'accesso dopo la produzione |
| Credenziali del dispositivo |
Certificati, dati di autenticazione, riferimenti della chiave o chiavi protette |
Supporta l'autenticazione del dispositivo e la comunicazione sicura |
Attenzione: OTP leggibile in chiaro non è automaticamente adatto per la memorizzazione delle chiavi segrete. Utilizzare blocchi di chiave protetti da hardware o con restrizioni di lettura quando disponibili.
Identità del dispositivo e indirizzi MAC
OTP può memorizzare un numero di serie unico, un ID del dispositivo o un indirizzo MAC a 48 bit. Questi valori supportano il tracciamento del prodotto, la registrazione, la rete e i record di servizio. Valori errati o duplicati possono causare problemi di tracciabilità o conflitti di rete.
Calibrazione di fabbrica e trimming analogico
I sensori e i circuiti analogici possono memorizzare valori di offset, guadagno, temperatura, frequenza o trim in OTP. Questi valori preservano le misurazioni di fabbrica e aiutano il dispositivo a soddisfare i suoi obiettivi di precisione o prestazione.
Verificare l'intervallo di indirizzi accessibili all'utente, il valore di stato vuoto, l'unità programmabile, la direzione della transizione dei bit, l'allineamento, la granularità di protezione e la tensione di programmazione richiesta. I dati di calibrazione di fabbrica, le righe riservate, gli identificatori del dispositivo e le posizioni non documentate non devono essere modificati.
Creare una chiara struttura dati prima della programmazione. Il record può includere un campo di tipo, numero di versione, lunghezza dei dati, payload, checksum o CRC, marcatore di validità e byte riservati. Un formato fisso aiuta il firmware a leggere e verificare i dati correttamente.
Lasciare parole o blocchi inutilizzati per future versioni del prodotto, impostazioni aggiuntive, record di sostituzione o aggiornamenti di sicurezza. Il firmware dovrebbe essere in grado di identificare il record valido più recente senza modificare i dati programmati in precedenza.
Programmare e verificare tutti i dati richiesti prima di applicare la protezione permanente. Testare prima il dispositivo, quindi impostare i blocchi, la protezione della lettura, i controlli di avvio sicuro e le restrizioni di debug. I blocchi permanenti dovrebbero essere applicati per ultimi perché il recupero potrebbe non essere più possibile.
Avvio sicuro e hash di chiave affidabile
OTP può memorizzare i bit di abilitazione all'avvio sicuro e un hash di chiave pubblica affidabile. Questi valori devono essere verificati prima del blocco permanente poiché un hash o un'impostazione di avvio errata potrebbero impedire l'esecuzione di firmware valido.
Anti-rollback e blocco per debug
OTP può memorizzare una versione minima di sicurezza del firmware e bit di controllo debug permanenti. I valori anti-rollback dovrebbero essere pianificati per futuri aggiornamenti, mentre i blocchi JTAG o SWD dovrebbero essere applicati solo dopo il test finale.
| Fase di programmazione |
Azione richiesta |
Condizione di rilascio |
| 1. Confermare il dispositivo target esatto e la regione OTP |
Verificare il numero di parte completo, il pacchetto, la revisione, l'intervallo di indirizzi OTP accessibili all'utente, l'unità programmabile, l'allineamento, il valore di stato vuoto e la granularità di protezione. Escludere le posizioni programmate in fabbrica e riservate. |
Il dispositivo esatto e l'area OTP scrivibile sono confermati rispetto ai documenti tecnici approvati. |
| 2. Congela e approva l'immagine di programmazione |
Finalizza il formato dei dati, l'ordine dei byte, gli indirizzi, i numeri di serie, i valori di calibrazione, le chiavi, i checksum e i campi riservati. Posiziona l'immagine di programmazione sotto controllo delle versioni. |
L'immagine di programmazione è stata revisionata, testata e formalmente approvata per la produzione. |
| 3. Convalida l'alimentazione, lo strumento, lo stato di vuoto e la configurazione fisica |
Conferma il supporto del programmatore, la versione software, la tensione di alimentazione stabile, le connessioni sicure, i controlli ESD e lo stato di vuoto di tutte le posizioni target. |
La configurazione supera tutti i controlli pre-programmazione senza avvisi o discrepanze. |
| 4. Programma solo gli indirizzi approvati |
Scrivi solo le posizioni definite nell'immagine approvata. Fermati immediatamente se lo strumento riporta un errore di tensione, comunicazione, indirizzo o dispositivo. |
Il programmatore completa l'operazione di scrittura senza risultati inaspettati. |
| 5. Leggi e testa il dispositivo completo |
Leggi l'intera area programmata e confrontala con l'immagine approvata utilizzando il confronto diretto, CRC, checksum o hash. Riavvia il dispositivo e testa ogni funzione influenzata dai valori OTP. |
La lettura corrisponde ai dati sorgente e l'intero dispositivo supera il test funzionale. |
| 6. Applica una protezione permanente e salva i registri di tracciabilità |
Imposta i blocchi, la protezione in lettura, i controlli di avvio sicuro e le restrizioni per il debug solo dopo verifica. Registrare l'ID del dispositivo, la versione dell'immagine di programmazione, la data, l'operatore, il programmatore, la versione software, il risultato del test e lo stato di protezione. |
La protezione permanente è confermata e l'intero record di produzione è stato salvato. |
Nota: I dispositivi che utilizzano schemi di codifica eFuse, scritture a livello di riga, ECC o programmazione batch possono imporre restrizioni aggiuntive. Un bit che appare vuoto potrebbe non rimanere programmabile in modo indipendente dopo che un altro campo nello stesso'unità di codifica è stato scritto.
La memoria OTP può supportare la sicurezza dei dispositivi mantenendo valori di fiducia importanti fissi dopo la programmazione. Tuttavia, la sua protezione dipende dal design del chip, dai controlli di accesso, dal firmware e dal processo di produzione.
Cosa può proteggere OTP
OTP può memorizzare valori di fiducia come impostazioni di avvio sicuro, hash di chiavi pubbliche, versioni di sicurezza del firmware, credenziali del dispositivo e bit di controllo del debug. I blocchi di scrittura possono prevenire modifiche successive, mentre le restrizioni di lettura possono limitare l'accesso tramite software, programmatori o strumenti di debug. Queste funzionalità consentono a OTP di supportare una radice di fiducia hardware.
Cosa non può prevenire OTP
OTP non ferma ogni attacco. Sonde fisiche, ispezione del chip, iniezione di errori, analisi delle side-channel, difetti software o provisioning di chiavi deboli possono ancora esporre o eludere i dati protetti. Un attaccante può mirare ai circuiti che leggono o utilizzano i valori OTP invece di modificare direttamente la memoria.
OTP non dovrebbe essere descritto come a prova di manomissione. Una protezione forte richiede anche un avvio sicuro, provisioning controllato, firmware sicuro, hardware crittografico protetto e accesso al debug limitato.
Quando un Elemento Sicuro è più adatto
Un elemento sicuro è più adatto quando le chiavi private devono rimanere isolate dal processore principale o quando è necessaria una protezione più forte contro attacchi fisici, iniezioni di errori e di side-channel. Gli elementi sicuri includono spesso uno stoccaggio protetto delle chiavi, funzioni crittografiche, rilevamento di manomissione e gestione controllata delle chiavi.
OTP è solitamente sufficiente per ancore di fiducia fisse, controlli di configurazione e identità di base del dispositivo. Un elemento sicuro è meglio per credenziali di alto valore, sistemi di pagamento, identità digitale e autentificazione forte del dispositivo.
| Problema |
Possibile causa |
Azione consigliata |
| Dispositivo, revisione o indirizzo errato |
La parte selezionata, revisione del chip, profilo del programmatore o indirizzo target non corrispondono al dispositivo attuale |
Interrompi la programmazione e verifica l'ID del dispositivo rilevato, il numero di parte completo, la revisione e la mappa di memoria OTP ufficiale |
| Unità di scrittura o allineamento errati |
La dimensione dei dati o l'indirizzo non corrispondono al bit, parola, riga, blocco o unità di codifica richiesti |
Correggi il layout e l'allineamento dell'immagine secondo la granularità di programmazione documentata |
| Assunzione errata dello stato di vuoto o della codifica |
Il software si aspetta un valore di vuoto errato, o un altro campo nella stessa unità codificata ha già influenzato i bit rimanenti |
Leggi l'intera unità di codifica, conferma il modello di vuoto documentato e verifica se le posizioni rimanenti sono ancora programmabili in modo indipendente |
| Alimentazione instabile o programmazione interrotta |
La caduta di tensione, il ripristino, il contatto scarso, la perdita di comunicazione o il rumore elettrico hanno interrotto la scrittura |
Controlla l'alimentazione, i connettori, il disaccoppiamento, i log degli strumenti e il percorso di comunicazione prima di utilizzare un altro dispositivo |
| Disallineamento del readback o programmazione parziale |
Solo parte dell'immagine è stata scritta, o il risultato differisce a causa dell'ordine dei byte, dei tempi, della tensione, della larghezza o degli errori di indirizzo |
Confronta il readback completo con l'immagine approvata e rivedi tutte le impostazioni del programmatore prima di continuare |
| Controllo di blocco o debug applicato troppo presto |
La protezione da scrittura, la protezione da lettura, JTAG, SWD o un altro controllo permanente sono stati abilitati prima del test finale |
Controlla se esiste un percorso di recupero approvato. Se non esiste, il dispositivo potrebbe dover essere sostituito |
| Dati o hash della chiave per il secure-boot non corretti |
L'hash della chiave programmata, la regola della firma, la politica di avvio o lo stato di sicurezza non corrispondono al firmware approvato |
Confronta i valori memorizzati con la catena di chiavi approvata e l'immagine di avvio. Non applicare ulteriori blocchi finché non è confermata la causa |
| Mancanza di registrazioni di programmazione e tracciabilità |
L'ID del dispositivo, la versione dell'immagine, la versione dello strumento, l'operatore, il risultato della verifica o lo stato di protezione non sono stati registrati |
Ricostruisci il record disponibile e richiedi la registrazione automatica della tracciabilità per tutte le unità successive |
SU DI NOI
Soddisfazione del cliente ogni volta. Fiducia reciproca e interessi comuni.
Guida ai Motori Stepper: Come Funzionano, Tipi, Dimensionamento e Controllo
2026-07-28
Progettazione dell'Analog Front-End: Componenti, Interfaccia ADC, Rumore e Test
2026-07-26
La corruzione può derivare da temperature estreme, radiazioni, sovraccarico elettrico, celle difettose o circuiti di rilevamento danneggiati. I checksum, la parità e l'ECC possono aiutare a rilevare dati non validi.
La velocità di lettura dipende dall'architettura del dispositivo. Alcuni processori copiano i valori OTP nei registri shadow o nella RAM durante l'avvio, in modo che il funzionamento normale possa utilizzare un accesso locale più veloce.
Il firmware dovrebbe controllare un CRC, un checksum, la versione del formato o un marcatore di validità prima di utilizzare il record. Un controllo fallito dovrebbe attivare valori predefiniti sicuri, operazioni ristrette o uno stato di errore controllato.
Diversi record possono essere memorizzati in campi fissi o slot sequenziali. Ogni record dovrebbe includere un numero di versione, la lunghezza dei dati, un marcatore di validità e un controllo dell'integrità.
Non è possibile scrivere ulteriori valori dopo che tutte le celle o gli slot utilizzabili sono stati consumati. Il progetto deve quindi utilizzare un'altra area di memoria, una soluzione firmware o un dispositivo sostitutivo.
La retention dipende dalla tecnologia della cella, dalla qualità di fabbricazione, dalla temperatura, dallo stress elettrico, dall'esposizione alle radiazioni e dai limiti di qualificazione stabiliti dal produttore.
I blocchi vuoti riservati possono supportare revisioni di prodotto o nuovi record in seguito. La loro dimensione, allineamento e comportamento di blocco dovrebbero essere pianificati prima della prima release di produzione.
L'emulazione OTP utilizza memoria riscrivibile con controlli software o hardware che impediscono modifiche successive. Può semplificare lo sviluppo ma potrebbe non fornire la stessa permanenza delle celle OTP fisiche.
Email: Info@ariat-tech.comTEL HK: +852 30501966INDIRIZZO: Ufficio 2703 27° Piano Ho King Comm Center 2-16,
Via Fa Yuen MongKok Kowloon, Hong Kong.