-
GEBIET
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf die physikalisch unklonierbare Funktion, englisch: Physical Unclonable Function (PUF). Insbesondere bezieht sich die vorliegende Offenbarung auf die Erzeugung eines zufälligen Binärwertes unter Verwendung von Anti-Sicherungs-Speicherzellen als eine PUF.
-
HINTERGRUND
-
Eine physikalisch unklonierbare Funktion, englisch: Physical Unclonable Function, (PUF) ist eine Hardware-Schaltung, die einen oder mehrere Codes entsprechend der physikalischen Zufallsleistung von Hardware-Geräten erzeugt und somit schwer oder gar nicht reproduzierbar ist. PUFs werden häufig in der Datensicherheit in militärischen und kommerziellen Anwendungen eingesetzt, z.B. unbemannte Fahrzeuge, Cloud Computing, etc. Eine PUF kann in fast jeder Anwendung eingesetzt werden, in der eine Zufallszahl benötigt wird. Solche Anwendungen erfordern vorzugsweise, dass die Codes von Chip zu Chip zufällig sind, so dass selbst wenn ein exaktes Layout des Chips durch Reverse Engineering reproduziert wird, die Menge der Codes des reproduzierten Chips sich vom Originalchip unterscheidet. Die von einem Chip erzeugten Werte müssen über Zeit, Spannung, Temperatur usw. konstant sein.
-
Das Dokument
US 2006/0291316 A1 offenbart eine Anti-Sicherungszelle mit einem Auswahltransistor, einem Sperrtransistor und einer Anti-Sicherung. Der Auswahltransistor ermöglicht die Auswahl der Anti-Sicherungszelle aus einem Array von Anti-Sicherungszellen, während der Sperrtransistor die Höhe der Spannung begrenzt, die direkt an den Auswahltransistor angelegt werden kann. Die Anti-Sicherung kann aus einem Kondensator bestehen. Zum Beispiel wird der zum Programmieren einer Anti-Sicherungszelle verwendete Strom mithilfe eines Programmierstromreglers gesteuert.
-
Das Dokument
US 2012/0106235 A1 offenbart ein Verfahren und eine eingebettete dynamische Direktzugriffsspeicher-(EDRAM)-Schaltung zum Implementieren einer physikalisch unklonierbaren Funktion (PUF) sowie eine Entwurfsstruktur, auf der sich die betreffende Schaltung befindet. Eine eingebettete dynamische Direktzugriffsspeicher-(EDRAM-)Schaltung enthält eine erste EDRAM-Speicherzelle mit einem Speicherzellen-Wahrspeicherkondensator und eine zweite EDRAM-Speicherzelle mit einem Speicherzellen-Komplementärspeicherkondensator. Eine zufällige Variation der Speicherzellenkapazität wird verwendet, um die physikalisch unklonierbare Funktion zu implementieren.
-
ÜBERBLICK
-
Es ist Aufgabe der vorliegenden Offenbarung, mindestens einen Nachteil früherer PUF-Werterzeugungssysteme zu vermeiden oder abzumildern.
-
In einem ersten Aspekt bietet die vorliegende Offenbarung ein System zur Erzeugung von Werten einer physikalisch unklonierbaren Funktion (PUF). Das PUF-Werterzeugungssystem besteht aus einem Paar dielektrischer, auf Durchbruch basierender Anti-Sicherungs-Speicherzellen und einer Strombegrenzungsschaltung. Jede der beiden dielektrischen, auf Durchbruch basierenden Anti-Sicherungs-Speicherzellen hat erste Anschlüsse, die elektrisch miteinander verbunden sind, um eine erste Spannung zu empfangen, und zweite Anschlüsse, die elektrisch miteinander verbunden sind, um eine zweite Spannung zu empfangen, um die gleichzeitige Programmierung beider Anti-Sicherungs-Speicherzellen zu ermöglichen. Die Strombegrenzungsschaltung ist so konfiguriert, dass sie die erste Spannung mit den ersten Anschlüssen koppelt, während die zweiten Anschlüsse während eines Programmiervorgangs mit der zweiten Spannung gekoppelt werden. Die Strombegrenzungsschaltung ist so konfiguriert, dass sie eine Spannungsdifferenz zwischen der ersten Spannung und den ersten Anschlüssen bereitstellt, wenn eine erste Anti-Sicherungs-Speicherzelle des Paares von Anti-Sicherungs-Speicherzellen während des Programmiervorgangs eine leitende Verbindung bildet, um Strom von der Strombegrenzungsschaltung zu den zweiten Anschlüssen zu leiten, was dann die Programmierung einer zweiten Anti-Sicherungs-Speicherzelle des Paares von Anti-Sicherungs-Speicherzellen verhindert. Nach einer vorliegenden Ausführung sind die ersten Anschlüsse Gate-Anschlüsse der Anti-Sicherungs-Speicherzellen, und die zweiten Anschlüsse sind Diffusionskontakte der Anti-Sicherungs-Speicherzellen, die elektrisch miteinander gekoppelt sind. Außerdem ist die erste Spannung eine Programmierspannung und die zweite Spannung ist VSS.
-
Nach einem Aspekt der vorliegenden Ausführungsform enthält die Strombegrenzungsschaltung einen Transistor einer Wortleitungstreiberschaltung, der die Programmierspannung an die Gate-Anschlüsse koppelt, und die Spannungsdifferenz ist ein Spannungsabfall der Gate-Anschlüsse relativ zur Programmierspannung. Die Strombegrenzungsschaltung kann außerdem einen Spannungsgenerator zur Bereitstellung der Programmierspannung enthalten. Alternativ zum aktuellen Aspekt kann die Strombegrenzungsschaltung einen Spannungsgenerator zur Bereitstellung der Programmierspannung für die Gate-Anschlüsse enthalten. Alternativ zu diesem Aspekt enthält die Strombegrenzungsschaltung einen Transistor einer Schreib-Treiberschaltung, der VSS mit den Diffusionskontakten koppelt, und die Spannungsdifferenz ist ein Spannungsabfall der Diffusionskontakte relativ zu VSS.
-
Nach einem anderen Aspekt der vorliegenden Ausführungsform sind die Gate-Anschlüsse parallel zu einer Wortleitung geschaltet, die von einer Wortleitungstreiberschaltung angesteuert wird, und die Diffusionskontakte sind mit entsprechenden Bitleitungen verbunden. Eine Spaltenzugriffsschaltung ist so konfiguriert, dass sie die Bitleitungen selektiv miteinander und mit der Strombegrenzungsschaltung koppelt, und die Strombegrenzungsschaltung enthält die Wortleitungstreiberschaltung. Alternativ zum anderen Aspekt der vorliegenden Ausführungsform sind die Gate-Anschlüsse der ersten Anti-Sicherungs-Speicherzelle und der zweiten Anti-Sicherungs-Speicherzelle mit verschiedenen gleichzeitig aktivierten Wortleitungstreiberschaltungen verbunden, und die Diffusionskontakte sind mit einer gemeinsamen Bitleitung verbunden. Hier wird die Spaltenzugriffsschaltung so konfiguriert, dass sie die gemeinsame Bitleitung selektiv mit der Strombegrenzungsschaltung koppelt.
-
In einem zweiten Aspekt bietet die vorliegende Offenbarung eine Methode zur Erzeugung von Werten einer physikalisch unklonierbaren Funktion (PUF). Das Verfahren umfasst das Anlegen einer ersten Spannung an erste Anschlüsse eines Paares von Anti-Sicherungs-Speicherzellen, die elektrisch miteinander gekoppelt sind; das Anlegen einer zweiten Spannung an zweite Anschlüsse des Paares von Anti-Sicherungs-Speicherzellen, die elektrisch miteinander gekoppelt sind, wobei die erste Spannung und die zweite Spannung zur Programmierung einer Anti-Sicherungs-Speicherzelle wirksam sind; Bilden einer leitenden Verbindung in einer ersten Anti-Sicherungs-Speicherzelle des Paares von Anti-Sicherungs-Speicherzellen in Reaktion auf die erste Spannung und die zweite Spannung, um Strom von den ersten Anschlüssen zu den zweiten Anschlüssen zu leiten; und Ändern eines Spannungspegels der ersten Anschlüsse in Reaktion auf den Strom, der von den ersten Anschlüssen zu den zweiten Anschlüssen geleitet wird, der wirksam ist, um die Programmierung einer zweiten Anti-Sicherungs-Speicherzelle des Paares von Anti-Sicherungs-Speicherzellen zu verhindern.
-
Entsprechend den Ausführungsformen des zweiten Aspekts beinhaltet der Spannungspegel ein Begrenzen des Stroms zwischen der ersten Spannung und den ersten Anschlüssen, das Begrenzen des Stroms die Bereitstellung eines Spannungsabfalls der ersten Anschlüsse relativ zu der ersten Spannung und das Anlegen der ersten Spannung die Ansteuerung einer mit den ersten Anschlüssen verbundenen Wortleitung mit der ersten Spannung mit einem Wortleitungstreiber, während ein Transistor des Wortleitungstreibers den Spannungsabfall der Wortleitung relativ zu der ersten Spannung liefert. Bei diesen Ausführungsformen beinhaltet das Anlegen der zweiten Spannung die selektive Kopplung der an den zweiten Klemmen angeschlossenen Bitleitungen an die zweite Spannung. Alternativ kann die Begrenzung des Stroms auch einen Spannungsabfall der zweiten Spannung beinhalten.
-
In einem dritten Aspekt bietet die vorliegende Veröffentlichung ein Verfahren zur Programmierung der physikalisch unklonierbaren Funktion (PUF). Das Verfahren umfasst das Ausführen einer Programmieroperation an einer vorbestimmten Anzahl von Paaren von Anti-Sicherungs-Speicherzellen, bis erkannt wird, dass eine Anti-Sicherungs-Speicherzelle jedes Paares mindestens einen minimalen Lesestrom hat; das Lesen einer Anti-Sicherungs-Speicherzelle von jedem der vorbestimmten Anzahl von Paaren von Anti-Sicherungs-Speicherzellen, um ein PUF-Datenwort unter Verwendung einer Referenzspannung zu erhalten, die zum Erfassen des minimalen Stroms ausgewählt wurde; und das Umprogrammieren des PUF-Datenworts, um programmierte Anti-Sicherungs-Speicherzellen mit einem Lesestrom zu erhalten, der größer als der minimale Lesestrom ist.
-
Andere Aspekte und Merkmale der vorliegenden Offenbarung werden denjenigen, die auf diesem Gebiet üblicherweise ausgebildet sind, durch die Durchsicht der folgenden Beschreibung spezifischer Ausführungsformen in Verbindung mit den beigefügten Abbildungen deutlich.
-
Figurenliste
-
Die Ausführungsformen der vorliegenden Offenbarung werden nun beispielhaft anhand der beigefügten Abbildungen beschrieben.
- 1 ist ein Querschnittsdiagramm durch eine Anti-Sicherungs-Speicherzelle mit zwei Transistoren;
- 2 ist ein Querschnitt durch eine Anti-Sicherungs-Speicherzelle mit einem einzigen Transistor;
- 3 ist ein Blockschaltbild eines Einzelbit-PUF-Werterzeugungssystems, entsprechend einer vorliegenden Ausführungsform;
- 4 ist ein Blockschaltbild einer Leseschaltung zum Lesen von zwei Zellen pro Bit Daten;
- 5A ist ein Diagramm eines PUF-Datenprogrammiersystems, entsprechend einer vorliegenden Ausführungsform;
- 5B ist ein Zeitdiagramm, das beispielhafte Wortleitungsspannungen während der PUF-Datenprogrammierung zeigt, entsprechend einer vorliegenden Ausführungsform;
- 5C ist ein Diagramm eines PUF-Datenprogrammiersystems nach zufälliger Programmierung einer Speicherzelle, entsprechend einer vorliegenden Ausführungsform;
- 5D ist ein Zeitdiagramm mit beispielhaften Wortleitungs- und Quellleitungsspannungen während der PUF-Datenprogrammierung, entsprechend einer vorliegenden Ausführungsform;
- 6 ist ein Diagramm eines PUF-Datenprogrammiersystems, entsprechend einer alternativen Ausführungsform;
- 7 ist ein Schaltplan eines Teils eines Speicher-Arrays, der für die PUF-Datenprogrammierung entsprechend einer vorliegenden Ausführungsform konfiguriert ist;
- 8 zeigt eine Tabelle mit logischen Zuständen und Spannungen für Signale im Schaltplan von Bild 7, entsprechend einer vorliegenden Ausführungsform;
- 9 ist ein Flussdiagramm einer Methode zur PUF-Programmierung, entsprechend einer vorliegenden Ausführungsform;
- 10 ist ein Flussdiagramm einer Methode zur PUF-Zufallsdatenprogrammierung, entsprechend einer vorliegenden Ausführungsform;
- 11 ist ein Diagramm eines PUF-Datenprogrammiersystems, entsprechend einer vorliegenden Ausführungsform;
- 12 zeigt eine Tabelle mit Beispielparametern für die normale Datenprogrammierung und die PUF-Programmierung, entsprechend einer vorliegenden Ausführungsform;
- 13 ist ein Graph, die die Ergebnisse der OTP PUF-Programmierbarkeitstests gemäß einer vorliegenden Ausführungsform zeigt; und
- 14 ist ein Diagramm mit OTP PUF-Fehlertestergebnissen, entsprechend einer vorliegenden Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ein Verfahren und eine Schaltung werden verwendet, um einen Zufallswert für die physikalisch unklonierbare Funktion (PUF) zur Verwendung in kryptographischen Anwendungen bereitzustellen und zuverlässig zu reproduzieren. In einer Ausführung der vorliegenden Erfindung besteht eine Schaltung in einer PUF-Werterzeugungsvorrichtung aus zwei dielektrischen, auf Durchbruch basierenden Anti-Sicherungen und mindestens einer Strombegrenzungsschaltung, die zwischen die Anti-Sicherungen und Stromschienen geschaltet ist. Zwei Anti-Sicherungs-Speicherzellen werden zur Wertbildung in einem Programmierzyklus parallel geschaltet, indem an beide Anti-Sicherungen gleichzeitig eine hohe Spannung angelegt wird. Eine Anti-Sicherungs-Speicherzelle programmiert zufällig zuerst und liefert so einen zufälligen Bitwert.
-
Der dielektrische Durchschlag unter hoher Spannungsbeanspruchung ist bekanntlich ein Prozess zufälliger Natur, der dazu führt, dass die Zeit bis zum Durchbruch für jede Anti-Sicherungszelle einzigartig ist. Die einzigartige und zufällige Zeit bis zum Ausfall unter Verwendung einer bestimmten Programmierspannung führt dazu, dass eine Zelle vor der anderen bricht, was zu unterschiedlichen Programmierzeiten führt. Diese Zufälligkeit kann vorteilhaft für die PUF-Zufallswertgenerierung genutzt werden, wenn zwei Anti-Sicherungs-Speicherzellen parallel geschaltet und entsprechend der vorliegenden Ausführungsform einer gleichzeitigen Programmierung unterzogen werden. Sobald ein hoher Durchbruchstrom durch eine defekte Zelle festgestellt wird, verursacht er eine Spannungsdifferenz über der Strombegrenzungsschaltung, die zu einer Verringerung der Spannung über beide Zellen führt. Durch die steile Spannungsabhängigkeit der Durchbruchzeit verlangsamt die verminderte Spannung den zeitabhängigen Durchbruchvorgang in der zweiten Zelle und verhindert so einen Bruch innerhalb des Programmierspannungs-Zeitfensters. Das Programmierspannungs-Zeitfenster ist ein Zeitraum, in dem die Programmierspannung zur Bildung einer leitenden Verbindung angelegt wird. Diese Methode ermöglicht den zufälligen Bruch einer Zelle im Paar, während eine andere Zelle am Bruch gehindert wird. Zwei Zellen, von denen eine defekt und eine intakt ist, können mit herkömmlichen Single-Ended-Leseschaltungen zuverlässig und wiederholt gelesen werden.
-
Im Folgenden sind Beispiele für Anti-Sicherungs-Speicherzellen beschrieben, die im PUF-Wert erzeugenden System verwendet werden können.
-
1 ist ein Querschnittsdiagramm einer Zwei-Transistor-Anti-Sicherungs-Speicherzelle. Diese Zwei-Transistor-Anti-Sicherungs-Speicherzelle
30 besteht aus einem Zugriffstransistor in Reihe mit einer Sicherungseinrichtung. Der Zugriffstransistor, oder Zugangsvorrichtung, enthält ein Gate
32, das über einem dicken Gateoxid
34 liegt, das wiederum über dem Kanal
36 gebildet wird. Auf der rechten Seite des Kanals
36 befindet sich ein Diffusionsbereich
38, der mit einem Bitleitungskontakt
40 elektrisch verbunden ist. Auf der linken Seite des Kanals
36 befindet sich ein gemeinsamer Diffusionsbereich
42, der mit der Anti-Sicherungsvorrichtung geteilt wird. Die Anti-Sicherungsvorrichtung enthält ein Gate
44, das über einem dünnen Gateoxid
46 liegt, das wiederum über dem Kanal
48 gebildet wird. Das dicke Gate-Oxid
34 kann dem für Hochspannungstransistoren entsprechen, während das dünne Gate-Oxid
46 dem für Niederspannungstransistoren entsprechen kann. Die Gates
32 und
44 können unabhängig voneinander gesteuert oder alternativ miteinander verbunden werden. Beispielsweise kann Gate
32 an eine Wortleitung gekoppelt werden, während Gate
44 an eine kontrollierte Zellplattenspannung, englisch: cell plate voltage, (VCP) gekoppelt werden kann. Beide Diffusionsbereiche
38 und
42 können LDD-Bereiche haben, die je nach gewünschter Betriebsspannung identisch oder unterschiedlich dotiert sein können. Für die Isolierung der Speicherzelle von anderen Speicherzellen und/oder Kernschaltungstransistoren werden Dickfeldoxid oder STI („shallow trench isolation“) Oxide
54 und
56 gebildet.
US 7,755,162 B2 beschreibt alternative Zwei-Transistor-Anti-Sicherungs-Speicherzellen, die in einem nichtflüchtigen Speicher-Array verwendet werden können. Das dünne Gate-Oxid
46 soll bei Vorhandensein eines großen elektrischen Feldes während eines Programmiervorgangs durchbrechen und so eine elektrisch leitende Verbindung zwischen Kanal
48 und Gate
44 herstellen. Diese elektrisch leitende Verbindung kann als leitende Verbindung oder Anti-Sicherung bezeichnet werden.
-
Ein treibender Faktor zur Reduzierung der Kosten eines jeden Speichers ist der Speicher-Array-Bereich. Die Zwei-Transistor-Anti-Sicherungs-Speicherzelle
30 in
1 ist eine relativ große Speicherzelle im Vergleich zu Einzeltransistor-Speicherzellen, wie z.B. Flash-Speicherzellen. Eine Einzeltransistor-Anti-Sicherungs-Speicherzelle ist im
US-Patent Nr. 7,402,855 B2 beschrieben.
-
2 ist eine Querschnittsansicht der im
US-Patent Nr. 7,402,855 B2 veröffentlichten Ein-Transistor-Anti-Sicherungs-Speicherzelle. Die Anti-Sicherungsvorrichtung
60 enthält ein Gateoxid
62 mit variabler Dicke, das auf dem Substratkanalbereich
64 gebildet ist, ein Gate
66, Seitenwandabstandshalter
68, einen Feldoxidbereich
70, einen Diffusionsbereich
72 und einen LDD-Bereich
74 im Diffusionsbereich
72. Ein Diffusionskontakt
76, auch Bitlinekontakt genannt, wenn er in einem Speicher-Array implementiert ist, befindet sich in elektrischem Kontakt mit dem Diffusionsbereich
72. Das Gate-Oxid
62 mit variabler Dicke besteht aus einem dicken Gate-Oxid und einem dünnen Gate-Oxid, so dass ein Teil der Kanallänge durch das dicke Gate-Oxid und der verbleibende Teil der Kanallänge durch das dünne Gate-Oxid abgedeckt werden. Von diesem Zeitpunkt an entspricht der dünne Gate-Oxidanteil dem Anti-Sicherungsbauteil der Einzeltransistor-Sicherungsspeicherzelle, während der dicke Gate-Oxidanteil dem Zugriffstransistor oder dem Bauelementanteil der Einzeltransistor-Anti-Sicherungs-Speicherzelle entspricht. Im Allgemeinen ist das dünne Gate-Oxid ein Bereich, in dem es zu einem Oxidabbau kommen kann. Die dicke Gate-Oxidkante, die auf den Diffusionsbereich
72 trifft, definiert dagegen eine Zugangskante, an der ein Durchschlagen des Gate-Oxids verhindert wird und der Strom zwischen dem Gate
66 und dem Diffusionsbereich
72 für eine programmierte Sicherungseinrichtung fließen soll.
-
Im vorliegend dargestellten Beispiel ist der Diffusionsbereich 72 über einen Bitleitungskontakt 76 oder eine andere Leitung zur Erfassung eines Stroms vom Gate 66 mit einer Bitleitung verbunden und kann zur Aufnahme von Programmierspannungen oder -strömen dotiert werden. Dieser Diffusionsbereich 72 wird in der Nähe des dicken Oxidanteils des Gate-Oxids 62 mit variabler Dicke gebildet. Wenn das Ausgangssubstrat vom Typ P ist, dann ist der Diffusionsbereich 72 als Material vom Typ N dotiert. Zur Programmierung der Anti-Sicherungs-Speicherzelle 60 wird auf der Wortleitung WL ein hoher Spannungspegel wie z.B. eine Programmierspannung angelegt und die Bitleitung mit einem niedrigen Spannungspegel wie z.B. VSS gekoppelt. Das hohe elektrische Feld zwischen dem Kanalbereich 64 und dem Gate 66 sollte ausreichen, um eine leitende Verbindung im dünnen Gateoxid herzustellen, um das Gate 66 mit dem Kanalbereich 64 elektrisch zu verbinden. Dies wird in der vorliegenden Beschreibung als eine programmierte Anti-Sicherungs-Speicherzelle betrachtet. Das gleiche Prinzip gilt für die in 1 gezeigte Anti-Sicherungs-Speicherzelle 30, mit der Ausnahme, dass die leitende Verbindung im dünnen Gate-Oxid 46 gebildet wird, um das Gate 44 mit dem Kanal 48 zu koppeln. Die Dotierstofftypen können in beiden Typen von Anti-Sicherungszellen umgekehrt werden, und dementsprechend wird auch die angelegte Spannung umgekehrt, wie es der Fachmann leicht verstehen würde.
-
Die hier beschriebenen Ausführungsformen wandeln eine Kombination von zwei Zufallsvariablen, d.h. die Zeiten für den dielektrischen Durchbruch in zwei Sicherungseinrichtungen, in eine einzige Zufallsbitvariable um. Die Ausführungsformen der vorliegenden Erfindung machen sich die Tatsache zunutze, dass eine Sicherung in einem Paar von Sicherungen aufgrund des zufälligen Verlaufs der Ausfallzeit zuerst bricht. 3 ist ein Blockschaltbild, das eine allgemeine Schaltungsanordnung eines PUF-Werterzeugungssystems mit einem einzelnen Bit entsprechend einer vorliegenden Ausführungsform zeigt.
-
In der Ausführung des PUF-Programmiersystems in 3 sind ein Paar paralleler Anti-Sicherungs-Speicherzellen 100 und 102 zwischen einem hohen Spannungsknoten und einem niedrigen Spannungsknoten über einen ersten Strombegrenzer 104 bzw. einen zweiten Strombegrenzer 106 angeschlossen. Zwei Anti-Sicherungseinrichtungen sind miteinander parallel zu den ersten und zweiten Strombegrenzern 104 und 106 gekoppelt. Eine vom hohen Spannungsknoten bereitgestellte hohe Spannung wird an die Gate-Anschlüsse des Paar Anti-Sicherungen angelegt. Eine vom niedrigen Spannungsknoten bereitgestellte VSS-Spannung ermöglicht die Programmierung der Sicherungen bei anliegender hoher Spannung. In den vorliegenden Ausführungen bezieht sich eine hohe Spannung auf eine Programmierspannung relativ zur VSS-Spannung, die ein elektrisches Feld von ausreichender Intensität erzeugen kann, um einen Bruch im dünnen Oxidbereich der Anti-Sicherungseinrichtung zu verursachen. Die parallele Anordnung der Zellen ermöglicht einen automatischen Abbau der Beanspruchung für beide Zellen, sobald eine von ihnen zufällig in der Zeit bricht. Eine Unterbrechung im Zusammenhang mit den vorhandenen Anti-Sicherungseinrichtungen bezieht sich auf die Bildung einer leitenden Verbindung zwischen dem Gate und dem darunter liegenden Kanal. Verminderte Beanspruchung macht es sehr unwahrscheinlich, dass eine zweite Zelle innerhalb eines festen Programmierspannungs-Zeitfensters bricht. Nach den vorliegenden Ausführungen kann nur einer von dem ersten Strombegrenzer 104 und dem zweiten Strombegrenzer 106 zur Reduzierung dieser Programmierbelastung der nicht programmierten Anti-Sicherung-Speicherzelle verwendet werden. Wenn der Programmiervorgang beendet ist, wird entweder die Anti-Sicherungszelle 100 oder die Anti-Sicherungszelle 102 programmiert.
-
Wie später ausführlicher beschrieben, kann ein Speicher-Array mit Paaren von Anti-Sicherungszellen wie den Zellen 100 und 102 in 3, in denen eine der Zellen zufällig programmiert ist, konfiguriert werden, um die zufällig programmierten Daten auszulesen. Dies ist in 4 konzeptionell dargestellt, wo das Zellenpaar 100 und 102 an die Eingänge „+“ und „-“ eines differentiellen Leseverstärkers 108 gekoppelt sind. Obwohl beide Zellen 100 und 102 mit den Eingängen des Differenzverstärkers 108 gekoppelt werden können, wie in 4 gezeigt, wird eine einseitige (single-ended) Messung verwendet. Das bedeutet, dass beim Auslesen der Zufallsdaten nur eine der Zellen 100 und 102 verwendet wird. Die Konfiguration in einem Schaltkreis zum Lesen von Zelle 100 oder 102 ist eine Designwahl. Je nachdem, welche der Zellen 100 und 102 gelesen wird, stellt der Ausgang des Leseverstärkers 108 entweder den logischen Zustand „1“ oder „0“ dar. Im vorliegenden Beispiel ist der Leseverstärker 108 so konfiguriert, dass er einen Single-Ended-Ausgang liefert.
-
In einer alternativen Ausführung können die Komplementdaten, sobald der Datenzustand von Zelle 100 oder 102 gelesen und bekannt ist, auf eine dritte Zelle programmiert werden, um die Daten in einer Konfiguration mit zwei Zellen pro Bit zu speichern. In einer solchen Konfiguration liest der differentielle Leseverstärker 108 die komplementären Daten von Zelle 100 oder 102 und der dritten Zelle und kann so konfiguriert werden, dass er differentielle Ausgänge bereitstellt, um jegliche Leistungssignatur während des Lesevorgangs zu minimieren. Wie der Fachmann verstehen würde, bietet die differenzielle Abtastung eine verbesserte Lesemarge im Vergleich zur einseitigen Abtastung.
-
5A zeigt ein Beispiel für das in 3 gezeigte PUF-Programmiersystem, und die folgende Beschreibung erklärt, wie das System die Programmierung einer zweiten Anti-Sicherungs-Speicherzelle nach der zufälligen Programmierung einer ersten Zelle selbst verhindert. Im Beispiel von 5A sind zwei Anti-Sicherungs-Speicherzellen 100 und 102 mit der gleichen Struktur wie in 2 elektrisch miteinander verbunden und mit einem Wortleitungstreiber und einem Schreibtreiber gekoppelt. Die Gatter der Zellen 100 und 102 sind beide parallel zu einer Wortleitung WL geschaltet. Das Gate der in der vorliegenden Anwendung beschriebenen Zellen und Transistoren kann aus Polysilizium, Metall oder jedem anderen elektrisch leitenden Material bestehen. Die Wortleitung WL wird von einer Wortleitungstreiberschaltung angesteuert, die aus einem P-Kanal-Transistor 204 und einem N-Kanal-Transistor 206 besteht, die in Reihe zwischen einem hohen Spannungsknoten und einem niedrigen Spannungsknoten geschaltet sind. In diesem Beispiel funktioniert der Transistor 204 als Strombegrenzer 104 wie in 3 dargestellt. Ein Auswahlsignal SEL_WL auf dem niedrigen Logikpegel wählt den Treiber aus, um einen positiven Spannungspegel des hohen Spannungsknotens an WL anzulegen. Dieser positive Spannungspegel kann während eines Lesevorgangs ein Lesespannungspegel sein und während eines Programmiervorgangs einen höheren Programmierspannungspegel (VPGM) haben. In diesem Beispiel ist der niedere Spannungsknoten gleich VSS.
-
Die Bitleitungskontakte 76 der beiden Zellen 100 und 102 sind über die jeweiligen N-Kanal-Transistoren 207 und 209 selektiv mit einer Quellleitung SL gekoppelt, wobei ein N-Kanal-Transistor 208 als zweiter Strombegrenzer 106 in 3 dient. Die N-Kanal-Transistoren 207 und 209 werden durch die Signale PUF_SEL0 bzw. PUF_SEL1 gesteuert, die gleichzeitig auf den hohen logischen Pegel angesteuert werden können, um die Diffusionskontakte 76 der beiden Zellen 100 und 102 elektrisch miteinander zu koppeln. Der Gate Anschluss des -Kanaltransistors 208 empfängt ein Signal PUF_PGM auf dem hohen Logikpegel zur Kopplung der Bitleitungskontakte 76 an VSS.
-
Der PUF-Programmiervorgang wird nun für das in 5A gezeigte System mit Bezug auf das in 5B gezeigte Zeitdiagramm beschrieben. Das in 5A gezeigte System ist nicht notwendigerweise Teil eines Speicherarrays und kann als eigenständige Schaltung in jedem Halbleiterbauelement implementiert werden. Mehrere Instanzen der Zellen 100, 102 und des Strombegrenzers 106 können für jede Wortleitung WL erzeugt werden, wobei jedes Zellenpaar 100 und 102 einen einzelnen Zufallsbitwert erzeugt. Jedes Paar von Zellen 100 und 102 jeder Instanz kann mit WL verbunden werden, und jedes Paar kann für die PUF-Programmierung ausgewählt werden, indem die Bitleitungskontakte 76 beider Zellen selektiv miteinander gekoppelt und ein entsprechendes PUF_PGM-Signal für dieses Paar von Zellen aktiviert wird.
-
Sowohl PUF_SEL0 als auch PUF_SEL1 werden auf den hohen Logikpegel gesetzt. Dann wird das Signal PUF_PGM auf den hohen Logikpegel gesetzt, um den N-Kanal-Transistor 208 zum Zeitpunkt t0 einzuschalten. Die oben genannte Reihenfolge kann umgekehrt oder ungefähr zur gleichen Zeit durchgeführt werden. Dann wird SEL_WL zum Einschalten des P-Kanal-Transistors 204 auf den niedrigen Logikpegel gefahren und die Programmierspannung VPGM am Hochspannungsknoten an die Wortleitung WL angelegt. Zunächst werden die Gates 66 der Zellen 100 und 102 mit einem Strom von 210 geladen, bis die Gates die VPGM -Spannung erreicht haben. Mit der Wortleitung bei VPGM und den mit VSS gekoppelten Bitleitungskontakten 76 sind die Anti-Sicherungszellen 100 und 102 nun unter den richtigen Programmierbedingungen, um eine leitende Verbindung im Bereich des dünnen Gate-Oxids der Zellen zu bilden.
-
Nach einer zufälligen Zeitspanne t1 bildet eine der beiden Zellen 100 und 102 eine leitende Verbindung zwischen dem Gate 66 und dem Kanal der Zelle als Reaktion auf die elektrische Feldbeanspruchung. Dies ist in 5C dargestellt, wo Zelle 102 eine leitende Verbindung 212 gebildet hat. Der Strom kann nun vom Gate 66 zum Bitleitungskontakt 76 der Zelle 102 fließen. Da der Transistor 208 eingeschaltet ist, ist die Wortleitung WL jetzt mit VSS gekoppelt. Kurz nach der Zeit t1 sinkt die Wortleitungsspannung, da der Transistor 204 so bemessen ist, dass er die Strommenge begrenzt, die er führen kann, wenn ein Pfad zu VSS durch die Reihenschaltung einer programmierten Anti-Sicherungszelle und des Transistors 208 bereitgestellt wird. Wie in 5B dargestellt, sinkt die Wortleitungsspannung VWL um einen Betrag, der als ΔVWL bezeichnet wird. Dementsprechend entsteht eine Spannungsdifferenz zwischen den Source- und Drain-Anschlüssen des Transistors 204. Diese Reduzierung der Wortleitungsspannung führt zu einer entsprechenden Verringerung des elektrischen Feldes in der unprogrammierten Zelle 100, wodurch der zeitabhängige Durchbruchsprozess in der zweiten Zelle 100 verlangsamt und ein Bruch und die Bildung einer leitenden Verbindung zwischen ihrem Gate 66 und ihrem Kanalbereich verhindert wird.
-
Schließlich endet der Programmiervorgang zu einem voreingestellten Zeitpunkt t2 mit der Deaktivierung der Wortleitung. In diesem Beispiel wird die Wortleitung am Ende des Programmiervorgangs auf VSS gefahren. Diese Zeit kann simuliert, modelliert oder getestet werden, um die ungünstigste Zeit für die Programmierung einer Anti-Sicherungs-Speicherzelle auf der Grundlage des Herstellungsprozesses, der während der Programmierung anzulegenden Spannungen oder anderer Faktoren zu sein, die einen Einfluss auf die für die Programmierung der Anti-Sicherungs-Speicherzelle benötigte Zeit haben können. Wenn die voreingestellte Zeit nicht ausreicht, um eine der beiden Zellen zufällig zu programmieren, kann der Prozess iterativ wiederholt werden, um zu überprüfen, ob die zufällige Programmierung einer der beiden Zellen erfolgreich war.
-
In dieser Ausführung ist der Strombegrenzer 104 so konfiguriert, dass ein Spannungsabfall, der ausreicht, um die Bildung einer leitenden Verbindung in der unprogrammierten Zelle 100 zu verhindern, auftritt, wenn die andere Zelle 102 zufällig programmiert. Der Strom durch eine programmierte Sicherungsspeicherzelle und Transistor 208 kann simuliert, modelliert oder getestet werden. Daher können Parameter wie Peaking Transistor 204, Transistorgröße des Bausteins 204 in Verbindung mit dem Spannungspegel von VPGM und der Spannung von SEL_WL mit Hilfe genauer Modellierungs-/Simulationswerkzeuge so eingestellt werden, dass eine Konfiguration erreicht wird, die den Strom ausreichend begrenzt, um den gewünschten Spannungsabfall über Transistor 204 zu liefern.
-
Bei der oben beschriebenen Technik wird eine Zelle aus einem Zellenpaar programmiert und eine andere bleibt unprogrammiert, wenn die Programmierroutine endet. Welche Zelle gebrochen wird, ist aufgrund der zufälligen Natur des Oxidabbaus wirklich zufällig, was die Erzeugung eines einzelnen zufälligen Bitwertes ermöglicht.
-
In der oben beschriebenen Ausführung ist der Transistor 208 zwar vorhanden und vollständig eingeschaltet, funktioniert aber nicht als Strombegrenzer. Mit anderen Worten, es wird angenommen, dass Transistor 208 so dimensioniert wurde, dass er den gesamten vom Transistor 204 gelieferten Strom über eine programmierte Anti-Sicherungszelle absenkt. Nach einer alternativen Ausführung ist Transistor 204 nicht als Strombegrenzer konfiguriert, während Transistor 208 als Strombegrenzer konfiguriert ist. In dieser alternativen Ausführung ist der Transistor 208 so dimensioniert, dass er weniger Strom absorbiert als eine programmierte Anti-Sicherungs-Speicherzelle. Der Programmiervorgang für diese alternative Ausführungsform wird nun anhand des Zeitdiagramms in 5D, das die Signalspuren für die Wortleitung (VWL) und die Quellleitung (VSL) zeigt, sowie der Diagramme der 5A und 5C diskutiert
-
Wie bei der zuvor beschriebenen Ausführung wird Transistor 208 eingeschaltet, um SL mit VSS zum Zeitpunkt to zu koppeln, und die Wortleitung WL wird vom Transistor 204 auf den VPGM -Spannungspegel angesteuert. Der Strom 210 wird zunächst aufgebaut, bis die Gates 66 die VPGM-Spannungsebene erreichen. Zu einem beliebigen Zeitpunkt t1 wird in Zelle 102 eine leitende Verbindung 212 gebildet, und die Wortleitung von WL ist nun mit dem Strombegrenzer 106 gekoppelt. Obwohl der Transistor 208 vollständig eingeschaltet ist, weil er so dimensioniert ist, dass er weniger Strom absorbiert, als die programmierte Zelle 102 liefert, steigt die Spannung am Drain-Anschluss des Transistors 208 nach der Zeit t1 an. Der Anstieg von VSL vom VSS-Spannungspegel wird als ΔVSL bezeichnet und reduziert die elektrische Feldstärke in der unprogrammierten Zelle 100. Dies verlangsamt den zeitabhängigen Abbauprozess in der zweiten Zelle 100 und verhindert, dass sie bricht und eine leitende Verbindung zwischen ihrem Gate 66 und ihrem Kanalbereich bildet. Zum Zeitpunkt t2 endet der Programmiervorgang. Aufgrund der Spannungsdifferenz über dem Strombegrenzer 106 ist die Programmierung der unprogrammierten Zelle 100 während des Programmierfensters von t0-t2 wieder gesperrt.
-
Ähnlich wie bei der vorherigen Ausführung, bei der Transistor 204 zur Strombegrenzung konfiguriert ist, kann Transistor 208 so konfiguriert werden, dass ein Spannungsabfall auftritt, wenn eine der Anti-Sicherungs-Speicherzellen eine leitende Verbindung bildet.
-
In dem in den 5A, 5B und 5C gezeigten Beispiel ist ein Wortleitungstreiber mit einem Paar Anti-Sicherungs-Speicherzellen verbunden. In einer alternativen Konfiguration können zwei Wortleitungstreiber gleichzeitig aktiviert werden, um eine der beiden Anti-Sicherungs-Speicherzellen ähnlich wie oben beschrieben zu programmieren. Dies wird im Hinblick auf die Ausführungsform von 6 näher erläutert und dargestellt.
-
In der Ausführungsform von 6 sind die gleichen Zellen 100 und 102 dargestellt, nur dass sie nun jeweils mit einer entsprechenden Wortleitung verbunden sind. Zelle 100 ist mit WL[0] verbunden, die mit einem Wortleitungstreiber verbunden ist, der aus den zuvor beschriebenen Transistoren 204 und 206 besteht. Zelle 102 ist mit WL[1] verbunden, die mit einem Wortleitungstreiber verbunden ist, der durch Feld 214 dargestellt wird. Jeder Wortleitungstreiber wird durch entsprechende Signale SEL_WL[0] und SEL_WL[1] gesteuert. Ein Programmierspannungsgenerator (VPGM-Generator) 216 oder Schaltkreis versorgt die Wortleitungstreiber mit VPGM. Beide Zellen 100 und 102 sind an die gleiche Quellleitung SL angeschlossen, die über den Strombegrenzer 106 mit dem VSS gekoppelt ist. Bei der zufälligen PUF-Datenprogrammierung werden beide Signale SEL_WL[0] und SEL_WL[1] aktiviert, um WL[0] und WL[1] parallel zur VPGM - Spannung anzusteuern, und PUF_PGM wird auf Transistor 208 gesetzt. Wenn Transistor 208 als Strombegrenzer konfiguriert ist, dann folgt die Spannung der Quellleitung VSL dem gleichen Muster wie in 5D, wenn eine der Zellen zufällig programmiert, um die Programmierung der anderen Zelle zu verhindern. Alternativ kann der VPGM-Generator 216 so konfiguriert werden, dass er einen Strombegrenzer enthält, so dass bei zufälliger Programmierung einer der Zellen 100 oder 102 der Spannungspegel des VPGM dem gleichen Muster folgt wie VWL in 5B, um die Programmierung der anderen Zelle zu verhindern.
-
Nach einer weiteren alternativen Ausführungsform können die beiden Strombegrenzer 104 und 106 aktiv sein, um die Programmierung einer zweiten Zelle zu verhindern, nachdem eine erste Zelle programmiert wurde. Insbesondere können die Transistoren der beiden Strombegrenzer 104 und 106 so dimensioniert werden, dass ein Spannungsabfall von VWL der Wortleitung und eine Erhöhung von VSL der Quellleitung gewährleistet ist. Es wird darauf hingewiesen, dass die Reihenschaltung von Transistor 204, einer Anti-Sicherungs-Speicherzelle und Transistor 208 als Spannungsteiler konfiguriert werden kann, wobei die Bauteile 204 und 208 so ausgelegt werden können, dass der WL-Knoten einen bestimmten Spannungspegel hat, der kleiner ist als VPGM oder der SL-Knoten einen bestimmten Spannungspegel hat, der größer ist als VSS. Fachkundige sollten verstehen, wie man einen Spannungsteiler konfiguriert, um die gewünschten Spannungspegel an den WL- und SL-Knoten zu erreichen.
-
Die in den 5A, 5C und 6 dargestellten Ausführungen des PUF-Programmiersystems können in einem Speicher-Array implementiert werden, das für das normale Schreiben und Lesen von Daten verwendet wird. Dementsprechend kann ein solches Anti-Sicherungsspeicher-Array Benutzerdaten speichern und zufällige PUF-Daten erzeugen.
-
7 ist ein Schaltplan, der einen Teil eines Speicherarrays mit Wortleitungstreibern, Spaltenzugriffsschaltungen, einem Leseverstärker und Schreibschaltungen zeigt. Das Speicher-Array enthält die Bitleitungen BL[0] bis BL[3], die Wortleitungen WL[0] bis WL[i] und die Anti-Sicherungs-Speicherzellen 300, die als Kreise mit den Kreuzungspunkten der Bitleitungen und der Wortleitungen verbunden sind. In diesem Beispiel kann es bis zu „i“-Wortzeilen geben, wobei „i“ ein ganzzahliger Wert ist. Die Anti-Sicherungs-Speicherzellen 300 können die in den 1 und 2 der vorliegenden Anmeldung oder jede andere Anti-Sicherungs-Speicherzelle sein, die auf die gleiche Weise programmiert werden kann. Jede Wortleitung ist mit einem Wortleitungstreiber 302 verbunden, wobei jeder Wortleitungstreiber 302 ein komplementäres Paar CMOS-Transistoren 304 und 306 enthält. Jeder Wortleitungstreiber erhält ein entsprechendes Auswahlsignal SEL_WL[0] bis SEL_WL[i], um es bei Lese- und Programmiervorgängen zu aktivieren. Bei jedem Lese- und Programmbetrieb wird nur eine Wortleitung angewählt. Jeder Wortleitungstreiber ist mit einem Hochspannungsknoten und einem Niederspannungsknoten verbunden, wo eine Vielzahl von Spannungsgeneratoren zur Verfügung gestellt werden kann, um den Wortleitungstreibern Spannungen unterschiedlicher Stärke zur Verfügung zu stellen. Obwohl in 7 nicht dargestellt, sind die Hochspannungsknoten der Wortleitungstreiber mit einem VPGM-Generator verbunden, wie in 6 gezeigt.
-
Die Bitleitungen können an eine Vorladeschaltung angeschlossen werden, die in 7 nicht dargestellt ist. Es wird davon ausgegangen, dass die Bitleitungen vorgeladen und/oder auf einem Spannungspegel gehalten werden, der die Programmierung der angeschlossenen Speicherzellen vor Beginn der Programmierung verhindern würde. Beispielsweise kann der Programmsperrspannungspegel ein positiver Spannungspegel sein, während ein Programmfreigabespannungspegel VSS sein kann. Die Spaltenzugriffsschaltung 308 koppelt Bitleitungen selektiv an ein Datenbuspaar DB[0] und DB[1]. Ein Leseverstärker 310 hat einen „+“-Eingang und einen „-“-Eingang, die an DB[0] bzw. DB[1] angeschlossen sind, um die dort auftretenden Spannungspegel zu erfassen und einen entsprechenden Datenausgang D_OUT zu liefern. Die Datenbusse DB[0] und DB[1] sind weiterhin mit einer Schreibschaltung verbunden, die aus einem Schreibdatenpuffer 312, der ein Bit Dateninformation DATA empfängt, und den Schreibtreibern 314 und 316 besteht. In dieser Ausführung sind die Schreib-Treiber 314 und 316 N-Kanal-Transistoren an VSS angeschlossen. Im Rahmen der PUF-Programmierung wird dieses Signal als PUF-Programmfreigabesignal PUF_PGM bezeichnet. Abgesehen von den Wortleitungen können die in 7 gezeigten Elemente in einem größeren Speicher-Array wiederholt werden.
-
Es wird darauf hingewiesen, dass es sich bei den dargestellten Schaltplänen um grafische Darstellungen vieler verschiedener spezifischer Halbleiterschaltungen handelt, die das gleiche gewünschte Ergebnis liefern können. Beispielsweise können die Wortleitungssignale über lokale Wortleitungen, globale Wortleitungen usw. mit Zellen verbunden werden.
-
Es folgt eine weitere ausführliche Diskussion über die Spaltenzugriffsschaltung 308. Diese Schaltung enthält Schaltvorrichtungen, dargestellt als N-Kanal-Transistoren 318, 320, 322, 324, 326, 328 und 330, die durch Spaltenzugriffssignale gesteuert werden. Die N-Kanal-Transistoren 318, 320, 322 und 324 bilden eine erste Stufe der Spaltenauswahl, wobei die Transistoren 318 und 320 durch das decodierte COL_A[0]-Signal gesteuert werden, während die Geräte 322 und 324 durch das decodierte COL_A[1]-Signal gesteuert werden. Die Signale COL_A[0] und COL_A[1] werden, wie in der Technik bekannt, aus Spaltenadresssignalen abgeleitet. Entsprechend koppelt die erste Stufe der Spaltenauswahl-Schaltung entweder die Bitleitungen BL[0] und BL[2] oder BL[1] und BL[3] an die zweite Stufe der Spaltenauswahl-Schaltung. Die zweite Stufe besteht aus den Transistoren 326, 328 und 330, die die dekodierten Signale COL_B[0], COL_B[1] und COL_B[2] empfangen. Ebenso werden die Signale COL_B[0], COL_B[1] und COL_B[2] aus einer Kombination von Spaltenadresssignalen und anderen Steuersignalen abgeleitet, wie es in der Technik bekannt ist. Die Schaltgeräte der Spaltenzugriffsschaltung 308 werden im normalen Datenprogrammbetrieb gesteuert, um die Schreib-Treiber 314 und 316 mit ausgewählten Bitleitungen zu koppeln, und im normalen Lesebetrieb, um die ausgewählten Bitleitungen mit dem Leseverstärker 310 zu koppeln. Für die vorliegenden Ausführungen relevanter sind die gleichen Schaltgeräte der Spaltenzugriffsschaltung 308 in Verbindung mit den Zeilentreibern 302, die zur Ausführung der PUF-Datenprogrammierung in einem von drei verschiedenen Modi gesteuert werden können. Diese werden als Redundanter PUF-Modus, Normaler PUF-Modus und Differentieller PUF-Modus bezeichnet. Unabhängig davon, welcher Modus verwendet wird, werden zwei Speicherzellen gleichzeitig programmiert. Eine Beschreibung, wie die PUF-Programmierung in der Speicher-Array-Konfiguration von 7 für jeden dieser Modi ausgeführt wird, folgt nun.
-
Um die folgende Diskussion der drei PUF-Programmiermodi zu erleichtern, wird auf 7 und 8 verwiesen. In 7 sind bestimmte Anti-Sicherungs-Speicherzellen 300 mit den Ziffern 1, 2, 3, 4, 5, 6, 7 und 8 gekennzeichnet. 8 zeigt eine Tabelle, die den PUF-Schreib-, PUF-Lese-Verifizierungs- und PUF-Lesevorgang für jeden Modus auflistet, wobei auf die spezifischen Zellnummern zugegriffen wird, die Spannung durch spezifische Wortleitungen angelegt wird und die entsprechenden logischen Zustände der Spaltenzugriffssignale, die in 7 erscheinen, für den Zugriff auf die angegebenen Zellen erforderlich sind. In diesem Beispiel wird davon ausgegangen, dass alle anderen Wortzeilen in 7 nicht markiert sind. In den vorliegenden Beispielen bedeutet eine Logik „1“, dass der Transistor, der dieses Signal empfängt, eingeschaltet ist, während eine Logik „0“ bedeutet, dass der Transistor, der dieses Signal empfängt, ausgeschaltet ist, VPGM eine Programmierspannung ist und VSS 0V ist. Informationen in Klammern zeigen den Zustand oder die Spannung für die alternative Zellenauswahl in Klammern an.
-
In dem Redundanten PUF-Modus werden zwei Speicherzellen 300, die an die gleiche Bitleitung angeschlossen sind und an separate Wortleitungstreiber 302 angeschlossen sind, gleichzeitig programmiert. Die Konfiguration dieser beiden Speicherzellen 300 ist in Verbindung und Funktion ähnlich wie in 6 dargestellt. Dies wird als „redundanter“ Modus bezeichnet, da es im normalen Betrieb des Speichers möglich ist, das gleiche Bit von Daten auf zwei (oder mehr) Zellen zu programmieren, die mit der gleichen Bitleitung verbunden sind, und beide Zellen gleichzeitig zu lesen. Dieser Modus verbessert die Zuverlässigkeit und Robustheit der Datenspeicherung. Die Tabelle in 8 zeigt beispielhaft logische Zustände für die Spaltenzugriffssignale und Spannungspegel für die Wortleitungen, wodurch die Auswahl der Zellen mit den Nummern 1 und 3 der Programmierspannung unterworfen wird und die Bitleitung BL[0] über die Transistoren 318, 326 und 314 mit VSS gekoppelt wird. Es wird davon ausgegangen, dass sich DATA im hohen logischen Zustand befindet, um den Schreib-Treiber 314 einzuschalten. Der Fachmann wird verstehen, dass verschiedene Zustände der Spaltenzugriffssignale verwendet werden können, um die Zellpaarungen 2 und 4, 5 und 7 sowie 6 und 8 für die Kopplung an VSS entweder über die Schreib-Treiber 314 oder 316 auszuwählen. In einer Ausführung des PUF-Schreibvorgangs werden die ausgewählten Wortleitungstreiber 302 aktiviert, um die Programmierspannung an die ausgewählten Wortleitungen WL[0] und WL[1] für eine bestimmte Zeitdauer anzulegen, die aufgrund des Herstellungsprozesses, der Zellstruktur und der Spannungen simuliert oder modelliert wurde, um eine beliebige Programmierung einer der Zellen zu erreichen. Diese spezifische Zeitdauer, auch als Impuls bezeichnet, sollte kürzer sein als der bei der normalen Datenprogrammierung verwendete Impuls. Während eine der Zellen während des PUF-Programmierimpulses nicht programmiert werden darf, sollte die kumulative Wirkung mehrerer angelegter Impulse zu einer zufälligen Programmierung von nur einer der beiden Zellen führen.
-
Nach Ablauf des Programmierzeitraums wird eine PUF-Lese-Verifizierung durchgeführt, um zu prüfen, ob mindestens eine der beiden Zellen programmiert wurde. In Bezug auf die Tabelle in 8 wird ein einseitiger (single-ended) Lesevorgang ausgeführt, indem die beiden ausgewählten Wortleitungen auf die Lesespannung Vread gefahren werden, die kleiner als die Programmierspannung von VPGM ist, und die gleichen Spaltenzugriffssignale aus dem PUF-Schreibvorgang aktiviert werden. Vor der Aktivierung der Wortleitungen wird die Bitleitung BL[0] über die aktivierten Spaltenzugriffssignale und den von DATA eingeschalteten Schreib-Treiber 314 auf VSS vorgeladen. Entsprechend ist nun die Bitleitung BL[0] mit dem „+“-Eingang des Leseverstärkers 310 gekoppelt. Der „-“-Eingang des Leseverstärkers 310 erhält während des PUF-Lesevorgangs eine Referenzspannung. Diese Referenzspannung kann so gewählt werden, dass sie ausreicht, um das erste Anzeichen eines Durchbruchs im Gateoxid der Schmelzsicherung einer Zelle zu erkennen. Dies kann als eine schwache leitende Verbindung angesehen werden, die in der Sicherungseinrichtung gebildet wird, und eine solche Zelle wird als schwache programmierte Zelle bezeichnet.
-
Je nach Prozess, Schaltungsdesign und verwendeten Spannungsebenen können Anti-Sicherungs-Speicherzellen bei der Programmierung leitfähige Verbindungen mit unterschiedlicher Leitfähigkeit bilden. Daher werden Anti-Sicherungs-Speicherzellen mit niedrigerer Leitfähigkeit als schwach programmierte Zellen bezeichnet, während Anti-Sicherungs-Speicherzellen mit einer höheren Leitfähigkeit als stark programmierte Zellen bezeichnet werden, wobei die Schwelle zwischen einer schwachen und einer stark programmierten Zelle durch den gewünschten Lesestrom bestimmt wird, der von einem Leseverstärker erfasst werden kann. Dementsprechend können verschiedene Referenzspannungen während des normalen Programmverifizierungsvorgangs verwendet werden, da das gewünschte Ergebnis der PUF-Programmierung darin besteht, das erste Anzeichen eines Ausfalls oder einer schwachen leitenden Verbindung zu erkennen. Dieser wird typischerweise als schwacher Lesestrom oder als minimaler Strom dargestellt, der mit einem Leseverstärker und einer geeigneten Referenzspannung detektierbar ist.
-
Da beide Zellen 1 und 3 mit der gleichen Bitleitung BL[0] verbunden sind, erhöht jede Zelle mit einer darin gebildeten leitenden Verbindung den Spannungspegel von DB[0], der vom Leseverstärker 310 erkannt werden kann. Die erfolgreiche Erkennung dieses erhöhten Spannungspegels ist ein Zeichen für eine erfolgreiche PUF-Programmierung und wird im D_OUT-Signal des Leseverstärkers 310 wiedergegeben. D_OUT kann von einer Steuerlogik empfangen werden, die die zufällige Programmierung der Zellen 1 und 3 festlegt. Ansonsten wiederholt diese Steuerlogik den oben beschriebenen PUF-Schreibvorgang und PUF-Lese-Verifizierungsvorgang, bis eine erfolgreiche PUF-Programmierung erkannt wird oder eine vorgegebene Anzahl von Iterationen ohne erfolgreiche PUF-Programmierung abgelaufen ist und die Operation als fehlgeschlagen gilt. Im Falle einer fehlgeschlagenen Operation kann die Steuerungslogik eine alternative Paarung von Zellen für die PUF-Programmierung wählen.
-
Die Zyklen des PUF-Schreibvorgangs und des PUF-Lese-Verifizierungsvorgangs werden für eine beliebige Anzahl von Zellenpaaren ausgeführt, die mit den Wortleitungen WL[0] und WL[1] verbunden sind. Schließlich werden alle Zellpaare als eine Zelle erfolgreich programmiert, aber es ist nicht bekannt, welche Zelle des Zellpaares programmiert wurde. Dies ist die zufällige Natur der Werterzeugung von PUF nach den vorliegenden Ausführungsformen. Um ein PUF-Wort zu erhalten, das aus Daten von jedem Zellenpaar besteht, wird ein PUF-Lesevorgang durchgeführt, bei dem nur die Zellen verwendet werden, die mit einer der beiden Wortleitungen verbunden sind. Wie in der Tabelle in 8 dargestellt, werden die Wortleitungen WL[0] und WL[1] auf den Spannungspegel Vread gefahren und nur eines der Schaltgeräte 318 und 324 wird in Verbindung mit dem aktivierenden Schaltgerät 326 im vorliegenden Beispiel aktiviert. Dieser Vorgang ähnelt dem PUF-Lese-Verifizierungsvorgang. Dementsprechend werden einige der Zellen als programmiert erkannt, während andere als unprogrammiert erkannt werden, da es sich um die andere Zelle des Paares handelt, die mit der nicht angesprochenen Wortleitung verbunden ist, die programmiert wurde.
-
Nachdem das PUF-Wort gewonnen wurde, kann eine normale Datenprogrammierung durchgeführt werden, um dieses PUF-Wort auf die gleichen Zellen zu programmieren. Wie bereits erwähnt, führt die PUF-Programmierung zur Bildung einer schwachen leitfähigen Verbindung in der Sicherungseinrichtung. Der Zweck einer normalen Datenprogrammierung besteht darin, die programmierten PUF-Zellen zu durchdringen, oder die leitende Verbindung so zu verstärken, dass das Lesen aus einer programmierten Zelle einen großen Abstand zu einer unprogrammierten Zelle ergibt. Dies gewährleistet ein zuverlässiges und genaues Lesen des PUF-Wortes während des normalen Betriebs des Speichermediums. Anstatt das PUF-Wort auf die gleichen Zellen umzuprogrammieren, kann das PUF-Wort normalerweise auf Zellen an einer anderen Adresse programmiert werden.
-
Nach einer alternativen Ausführungsform kann das PUF-Wort, nachdem es wie oben beschrieben gewonnen und neu programmiert wurde, zu seinem Komplement invertiert werden, das dann an einer anderen Stelle im Speicher-Array programmiert wird. Diese Position kann für die differentielle Abtastung jedes PUF-Datenbits gegen das entsprechende Komplementärbit gewählt werden. Wenn beispielsweise Zelle 1 in 7 die PUF-Daten ist, kann ihr Komplement in Zelle 5 gespeichert werden. Dann wird die Differenzmessung ausgeführt, indem COL_A[0], COL_B[0] und COL_B[1] so eingestellt werden, dass BL[0] und BL[2] mit dem Leseverstärker 310 gekoppelt werden.
-
Es folgt eine Diskussion über den normalen PUF-Modus. Im normalen PUF-Modus werden zwei Speicherzellen 300, die an die gleiche Wortleitung angeschlossen und an separate Bitleitungen angeschlossen sind, gleichzeitig programmiert. Die Konfiguration dieser beiden Speicherzellen 300 ist bezüglich Verbindung und Funktion der in 5A gezeigten ähnlich. Dies wird als „normaler“ Modus bezeichnet, da eine einzelne Wortleitung aktiviert wird, um das Programmieren und Lesen einer einzelnen Speicherzelle während des normalen Programm- und Lesevorgangs des Speichers zu ermöglichen.
-
Die Tabelle in 8 zeigt beispielhaft logische Zustände für die Spaltenzugriffssignale und Spannungspegel für die ausgewählte Wortleitung, wodurch die Auswahl der Zellen mit den Nummern 1 und 2 der Programmierspannung unterworfen wird und die Bitleitungen BL[0] und BL[1] über die Transistoren 318, 324, 326 und 314 mit VSS gekoppelt werden. Es wird davon ausgegangen, dass sich DATA im hohen logischen Zustand befindet, um den Schreib-Treiber 314 einzuschalten. Fachkundige werden verstehen, dass verschiedene Zustände der Spaltenzugriffssignale verwendet werden können, um die Zellpaarungen 3 und 4, 5 und 6 sowie 7 und 8 für die Kopplung an VSS über den Schreib-Treiber 314 auszuwählen. Alternativ können die Spaltenzugriffssignale so konfiguriert werden, dass sie die Zellenpaare 5 und 6 sowie 7 und 8 über den Schreib-Treiber 316 an VSS koppeln. In einer Ausführung des PUF-Schreibvorgangs wird der ausgewählte Wortleitungstreiber 302 aktiviert, um die Programmierspannung auf der ausgewählten Wortleitung WL[0] für eine bestimmte Zeitdauer anzulegen, die aufgrund des Herstellungsprozesses, der Zellstruktur und der Spannungen simuliert oder modelliert wurde, um eine beliebige Programmierung einer der Zellen zu erreichen.
-
Nach Ablauf des Programmierzeitraums wird eine PUF-Lese-Verifizierung durchgeführt, um zu prüfen, ob mindestens eine der beiden Zellen programmiert wurde. In Bezug auf die Tabelle in 8 wird ein Single-Ended Lesevorgang ausgeführt, indem die ausgewählte Wortleitung auf die Lesespannung Vread gefahren wird, die kleiner als die Programmierspannung von VPGM ist, und die gleichen Spaltenzugriffssignale aus dem PUF-Schreibvorgang aktiviert werden. Vor der Aktivierung der Wortleitungen werden die Bitleitungen BL[0] und BL[1] über die aktivierten Spaltenzugriffssignale und den von DATA eingeschalteten Schreib-Treiber 314 auf VSS vorgeladen. Entsprechend sind nun beide Bitleitungen BL[0] und BL[1] mit dem „+“-Eingang des Leseverstärkers 310 gekoppelt. Der „-“-Eingang des Leseverstärkers 310 erhält während des PUF-Lesevorgangs eine Referenzspannung. Diese Referenzspannung kann so gewählt werden, dass sie ausreicht, um das erste Anzeichen eines Durchbruchs im Gate-Oxid der Sicherungseinrichtung einer Zelle zu erkennen, wie für den vorherigen Redundanten PUF-Modus beschrieben.
-
Da beide Zellen 1 und 2 mit DB[0] gekoppelt sind, erhöht jede Zelle mit einer darin gebildeten leitenden Verbindung den Spannungspegel von DB[0], der vom Leseverstärker 310 erfasst werden kann. Die erfolgreiche Erkennung dieses erhöhten Spannungspegels ist ein Zeichen für eine erfolgreiche PUF-Programmierung und wird im D_OUT-Signal des Leseverstärkers 310 wiedergegeben. Wie im redundanten PUF-Modus werden die PUF-Schreib- und PUF-Lese-Verifizierungsoperationen wiederholt, bis eine erfolgreiche PUF-Programmierung erkannt wird oder eine vorgegebene Anzahl von Iterationen ohne erfolgreiche PUF-Programmierung abgelaufen ist und die Operation als fehlgeschlagen gilt.
-
Die Zyklen des PUF-Schreibvorgangs und des PUF-Lese-Verifizierungsvorgangs werden für eine beliebige Anzahl von Zellenpaaren ausgeführt, die an Paare von Bitleitungen angeschlossen sind, die selektiv an den gleichen Eingang eines Leseverstärkers, z.B. Leseverstärker 310, gekoppelt werden können. Schließlich werden alle Zellpaare als eine Zelle erfolgreich programmiert, aber es ist nicht bekannt, welche Zelle des Zellpaares programmiert wurde. Auch hier wird der Zufallscharakter der PUF-Werterzeugung nach den vorliegenden Ausführungsformen wiedergegeben. Um ein PUF-Wort zu gewinnen, das aus Daten von jedem Zellenpaar besteht, wird ein PUF-Lesevorgang durchgeführt, bei dem nur die Zellen verwendet werden, die mit einer der beiden Bitleitungen verbunden sind. Wie in der Tabelle in 8 dargestellt, wird die Wortleitung WL[0] auf den Spannungspegel Vread gefahren und nur eines der Schaltgeräte 318 und 324 in Verbindung mit dem aktivierenden Schaltgerät 326 im vorliegenden Beispiel aktiviert. Dementsprechend werden einige der Zellen als programmiert erkannt, während andere als unprogrammiert erkannt werden, da es die andere Zelle des Paares ist, die mit der nicht angesprochenen Bitleitung verbunden ist, die programmiert wurde.
-
Nachdem das PUF-Wort gewonnen wurde, kann eine normale Datenprogrammierung durchgeführt werden, um dieses PUF-Wort auf die gleichen Zellen oder auf einen anderen Satz von Zellen zu programmieren, wie zuvor für den Redundanten PUF-Modus beschrieben. Ähnlich wie zuvor beschrieben, kann das Komplement des PUF-Wortes gewonnen und an einer Stelle programmiert werden, die eine differentielle Abtastung jedes PUF-Datenbits und seines Komplements ermöglicht.
-
Im Folgenden wird der differentielle PUF-Modus diskutiert. Im differentiellen PUF-Modus werden zwei Speicherzellen 300, die an die gleiche Wortleitung angeschlossen und an separate Bitleitungen angeschlossen sind, gleichzeitig programmiert, was dem normalen PUF-Modus entspricht. Der Unterschied besteht darin, dass jede selektierte Bitleitung (und die entsprechende selektierte Zelle) mit ihren eigenen Schreib-Treibern 314 und 316 gekoppelt ist.
-
Die Tabelle in 8 zeigt beispielhaft logische Zustände für die Spaltenzugriffssignale und Spannungspegel für die ausgewählte Wortleitung, wodurch die Auswahl der Zellen mit den Nummern 1 und 5 der Programmierspannung unterworfen wird und die Bitleitungen BL[0] und BL[2] über die Transistoren 318, 320, 326, 328, 314 und 316 mit VSS gekoppelt werden. Es wird davon ausgegangen, dass sich DATA im hohen logischen Zustand befindet, um die Schreib-Treiber 314 und 316 einzuschalten. Fachkundige werden verstehen, dass verschiedene Zustände der Spaltenzugriffssignale verwendet werden können, um die Zellpaarungen 2 und 6 und 4 und 8 für die Kopplung an VSS über den Schreib-Treiber 314 auszuwählen. In einer Ausführung des PUF-Schreibvorgangs wird der ausgewählte Wortleitungstreiber 302 aktiviert, um die Programmierspannung auf der ausgewählten Wortleitung WL[0] für eine bestimmte Zeitdauer anzulegen, die aufgrund des Herstellungsprozesses, der Zellstruktur und der Spannungen simuliert oder modelliert wurde, um eine beliebige Programmierung einer der Zellen zu erreichen.
-
Nach Ablauf des Programmierzeitraums wird eine PUF-Lese-Verifizierung durchgeführt, um zu prüfen, ob mindestens eine der beiden Zellen programmiert wurde. Im Gegensatz zu den zuvor beschriebenen PUF-Lese-Verifizierungsoperationen, bei denen nur ein einziger Zyklus erforderlich ist, um festzustellen, ob eine der beiden Zellen programmiert ist, erfordert der aktuelle differentielle PUF-Modus separate Lese-Verifizierungszyklen für jede der beiden Zellen, die der Programmierung unterzogen wurden. Vor der Aktivierung der Wortleitungen werden die Bitleitungen BL[0] und BL[2] über die zuvor aktivierten Spaltenzugriffssignale und die von DATA eingeschalteten Schreib-Treiber 314 und 316 auf VSS vorgeladen.
-
In Bezug auf die Tabelle in 8 wird ein erster einseitiger (single-ended) Lesevorgang ausgeführt, indem die ausgewählte Wortleitung auf die Lesespannung Vread gefahren wird, die kleiner als die Programmierspannung von VPGM ist, und nur die Spaltenzugriffssignale COL_A[0] und COL_B[0] aktiviert werden. Entsprechend ist die Bitleitung BL[0] mit dem „+“-Eingang des Leseverstärkers 310 gekoppelt. Der „-“-Eingang des Leseverstärkers 310 erhält während des PUF-Lesevorgangs eine Referenzspannung. Diese Referenzspannung kann so gewählt werden, dass sie ausreicht, um das erste Anzeichen eines Durchbruchs im Gate-Oxid der Sicherungseinrichtung einer Zelle zu erkennen, wie für den vorherigen Redundanten PUF-Modus beschrieben. Das Ergebnis dieses ersten Lese-Verifizierungszyklus kann in einem Register gespeichert werden. Die Bitleitungen werden wieder vorgeladen, und ein zweiter Single-Ended-Lesevorgang wird ausgeführt, indem die ausgewählte Wortleitung auf die Lesespannung Vread gefahren wird, die kleiner als die Programmierspannung von VPGM ist, und nur die Spaltenzugriffssignale COL_A[0] und COL_B[2] aktiviert werden. Entsprechend wird die Bitleitung BL[2] mit dem „+“-Eingang des Leseverstärkers 310 gekoppelt und dieses zweite Messergebnis mit dem ersten Messergebnis verglichen. Ein einfacher XOR-Vergleich, der eine Logik ergibt, zeigt an, dass nur eine der beiden Zellen programmiert wurde. Jedes andere Ergebnis zeigt an, dass entweder beide Zellen nicht programmiert wurden oder beide Zellen programmiert wurden.
-
Wie im redundanten PUF-Modus werden die PUF-Schreiboperationen und PUF-Lese-Verifizierungsoperationen wiederholt, bis eine erfolgreiche PUF-Programmierung erkannt wird oder eine vorbestimmte Anzahl von Iterationen ohne erfolgreiche PUF-Programmierung abgelaufen ist und die Operation als fehlgeschlagen gilt. Wurden beide Zellen programmiert, gilt der Vorgang als fehlgeschlagen.
-
Die Zyklen des PUF-Schreibens und PUF-Lese-Verifizierens werden für eine beliebige Anzahl von Zellenpaaren ausgeführt, die mit Bitleitungspaaren verbunden sind, die jeweils selektiv an beide Eingänge eines Leseverstärkers, wie z.B. Leseverstärker 310, gekoppelt werden können. Schließlich werden alle Zellpaare als eine erfolgreich programmierte Zelle bestimmt. Auch hier wird der Zufallscharakter der PUF-Werterzeugung nach den vorliegenden Ausführungsformen wiedergegeben. Um ein PUF-Wort zu gewinnen, das aus Daten von jedem Zellenpaar besteht, wird ein PUF-Lesevorgang durchgeführt, bei dem nur die Zellen verwendet werden, die mit einer der beiden Bitleitungen verbunden sind. Wie in der Tabelle in 8 dargestellt, wird die Wortleitung WL[0] auf den Spannungspegel Vread gefahren und nur eines der Schaltgeräte 326 und 330 in Verbindung mit den Schaltgeräten 318 und 320 im vorliegenden Beispiel aktiviert. Dementsprechend werden einige der Zellen als programmiert erkannt, während andere als unprogrammiert erkannt werden, da es die andere Zelle des Paares ist, die mit der nicht angesprochenen Bitleitung verbunden ist, die programmiert wurde.
-
Nachdem das PUF-Wort gewonnen wurde, kann eine normale Datenprogrammierung durchgeführt werden, um dieses PUF-Wort auf die gleichen Zellen oder auf einen anderen Satz von Zellen zu programmieren, wie zuvor für den Redundanten PUF-Modus beschrieben. Ähnlich wie zuvor beschrieben, kann das Komplement des PUF-Wortes gewonnen und an einer Stelle programmiert werden, die eine differentielle Abtastung jedes PUF-Datenbits und seines Komplements ermöglicht.
-
Wie bereits in den 5A und 6 beschrieben, kann der Schreibtreibertransistor, wie der P-Kanal-Transistor 304, ein erster Strombegrenzer sein, während der Schreibtreibertransistor 314 ein zweiter Strombegrenzer sein kann, wobei entweder einer oder beide so konfiguriert werden können, dass sie die Programmierung einer zweiten Anti-Sicherungs-Speicherzelle innerhalb des Programmierzeitfensters verhindern, wenn eine erste Anti-Sicherungs-Speicherzelle programmiert wurde. Darüber hinaus kann der VPGM-Spannungsgenerator oder -Schalter auch als Strombegrenzer während der PUF-Programmierung konfiguriert werden, obwohl er nicht in 7 dargestellt ist.
-
Die vorangegangene Diskussion erwähnt die PUF-Programmierung und die normale Programmierung von Zellen im Speicher-Array von 7. Es wird darauf hingewiesen, dass die Ziele der PUF-Programmierung und der normalen Programmierung unterschiedlich sind. Bei der normalen Datenprogrammierung wird die Programmierzeit optimiert und geringfügig programmierte Zellen (schwach programmierte Zellen) werden vermieden. Dies kann beispielsweise durch längere Programmierimpulse, höhere Programmierspannungen und höhere Programmierströme erreicht werden. Bei der normalen Programmierung von Lese-Verifizierungsoperationen werden höhere Referenzspannungen verwendet, um die marginal programmierten Zellen zu identifizieren und in stark programmierte Zellen weiter zu programmieren. Im Idealfall wird eine Speicherzelle in einem einzigen Programmiervorgang programmiert, der einen einzigen Programmierimpuls beinhaltet.
-
Andererseits optimiert die PUF-Programmierung die Parameter, um die Wahrscheinlichkeit zu maximieren, dass nur eine von zwei parallel geschalteten Speicherzellen programmiert wird. Wie bereits erwähnt, kann dies durch eine Strombegrenzung im Pull-Down und/oder Pull-Up-Pfad mit optionaler Steuerung der den Pull-Up- und Pull-Down-Geräten zur Verfügung gestellten Spannungen erfolgen. Bezogen auf die Ausführung von 5A kann VPGM während der PUF-Programmierung einen reduzierten Strom liefern, und der VSS-Anschluss des Transistors 208 kann durch eine kontrollierte Stromquelle ersetzt werden, die weniger Strom aus den Zellen abgibt.
-
9 ist ein Flussdiagramm, das den PUF-Programmiervorgang zusammenfasst, der dem Redundanten PUF-Modus, dem normalen PUF-Modus und dem differentiellen PUF-Modus gemeinsam ist. Es wird davon ausgegangen, dass die Länge des PUF-Wortes eingestellt und ein Startpunkt für die zu programmierenden Zellen gewählt wurde. Die Methode beginnt bei 400, wo die zufällige Programmierung eines Paares von Speicherzellen unter Verwendung eines der zuvor beschriebenen PUF-Modi Redundant, Normal oder Differentiell ausgeführt wird. Dieser Schritt beinhaltet die Programmierung und Lese-Verifizierung jeder der Paarzellen, die eine Bitposition des PUF-Wortes bilden. Bei 402 ermittelt das System, ob alle PUF-Datenpositionen programmiert sind. Wenn nicht, dann wird das nächste Zellenpaar für die Programmierung bei 400 ausgewählt. Ansonsten wurden alle PUF-Datenpositionen mit einer Zelle des Paares programmiert und das PUF-Datenwort wird bei 404 ausgelesen.
-
Gemäß einer optionalen Ausführungsform der vorliegenden Methode kann es bei einigen Anwendungen erforderlich sein, einen bestimmten Prozentsatz des Versatzes zwischen zufällig programmierten logischen 0- und 1-Daten des PUF-Datenworts zu verwenden. Zum Beispiel kann ein vorgegebener Offset 50% betragen, wobei die Hälfte der PUF-Datenbits logisch 0 und die andere Hälfte logisch 1 ist. Die Onboard-Logik kann die Bits zählen und bestimmen, ob der Offset 50% oder innerhalb eines bestimmten Bereichs des vorgegebenen Offsets liegt. Beispielsweise können 50% bis 60% der Datenbits logisch 0 sein.
-
Die PUF-Datenwort-Offsetbestimmung erfolgt bei 406, und wenn sie nicht mit einem vorgegebenen Offset übereinstimmt oder nicht innerhalb eines vorgegebenen Offsetbereichs liegt, gilt der PUF-Programmiervorgang für den aktuell gewählten Startort als fehlgeschlagen und ein neuer Startort für den PUF-Programmiervorgang wird bei 408 gewählt. Dann beginnt ein neuer PUF-Programmiervorgang wieder bei 400. Anstatt neue Zellen bei 408 auszuwählen, kann das gesamte Gerät als defekt angesehen werden. Andernfalls stimmt der PUF-Datenwort-Offset mit dem Offset überein oder liegt innerhalb eines vorgegebenen Offsetbereichs, und die Methode geht zu 410 für die harte Programmierung der PUF-Daten zu den aktuellen Zellen oder zu neuen Zellen an einer anderen Stelle im Speicher-Array über. Diese harte Programmierung verwendet normale Programmierspannungen und -ströme, die während der normalen Datenprogrammierung des Speichers verwendet würden, was dazu führt, dass programmierte Zellen einen Lesestrom haben, der größer ist als der minimale Lesestrom einer PUF programmierten Zelle.
-
10 ist ein Flussdiagramm mit einer Methode zur PUF-Programmierung, die als Teil von Schritt 400 der 9 verwendet werden kann. Das Verfahren beginnt bei 500, indem zwei Anti-Sicherungs-Speicherzellen parallel mit mindestens einer Strombegrenzungseinrichtung gekoppelt werden. Ein Beispiel hierfür ist in 5A dargestellt, wo die Sicherungsspeicherzellen 100 und 102 Gatter 66 parallel zum Strombegrenzer 104 und Bitleitungskontakte 76 parallel zum Strombegrenzer 106 geschaltet sind. Ebenso zeigt der Schaltplan in 7, wie zwei Anti-Sicherungs-Speicherzellen parallel an einen Wortleitungstreiber 302 und einen Schreib-Treiber 314 angeschlossen werden können. Nach 502 werden gleichzeitig Spannungen an beide Anti-Sicherungs-Speicherzellen angelegt, die die Programmierung der Zellen durch Bildung einer leitenden Verbindung in ihren Gate-Oxiden begünstigen. Bei 504 programmiert eine der Anti-Sicherungs-Speicherzellen zufällig und bildet eine leitende Verbindung in ihrem Gate-Oxid. Ein Beispiel hierfür ist bereits in 5C dargestellt, wo eine leitende Verbindung 212 in der Anti-Sicherungs-Speicherzelle 102 gebildet wird. Nach 506 wird die andere Anti-Sicherungs-Speicherzelle am Programmieren gehindert. Dies kann durch die Wirkung eines oder beider Strombegrenzer geschehen, die das elektrische Feld über der unprogrammierten Anti-Sicherungs-Speicherzelle reduziert.
-
Der zuvor beschriebene Ansatz wurde mit gleichzeitiger Belastung für zwei Zellen parallel im Testmodus für fünf Arrays getestet. Die Zufälligkeit und Einzigartigkeit der erzeugten PUF-Werte wurde mit Hamming-Distanzen bewertet. Die Ergebnisse zeigen eine nahezu ideale Zufälligkeit und Einzigartigkeit der Codes für jedes der 5 Arrays. Der generierte PUF-Wert zeigte Stabilität über 50 Lesezyklen, über verschiedene Temperaturbedingungen und Leseverfahren hinweg.
-
Die spezifische Konfiguration der in 7 dargestellten Schaltelemente ist nur ein Beispiel für eine mögliche Konfiguration und Typen von Geräten, Logikgattern und Adresssignalen, die zur Bereitstellung der oben genannten drei PUF-Programmiermodi verwendet werden können. Nach den vorliegenden Ausführungsformen kann jede Konfiguration verwendet werden, die die Ausführung aller drei Betriebsarten ermöglicht.
-
In den zuvor beschriebenen Ausführungsformen endet die PUF-Zufallsdatenprogrammierung zu einer vorgegebenen „worst case“-Zeit, wie in den 5A, 5B und 5C erläutert. Diese Worst-Case-Programmierzeit wird auf der Grundlage der Modellierung oder des Experimentierens von Anti-Sicherungs-Speicherzellen, die am schwierigsten zu programmieren sind, ausgewählt und von einer Zustandsmaschine (nicht dargestellt) oder einer anderen Steuerlogik (nicht dargestellt) des Speichergeräts implementiert, die das Timing und die Anwendung von Signalen steuert. Solche Zellen würden einen längeren Zeitraum benötigen, um eine schwache leitende Verbindung zu bilden.
-
Die zuvor beschriebenen zufälligen PUF-Programmierausführungen werden mit der Anti-Sicherungs-Speicherzelle mit einem Transistor in 2 dargestellt. Die zuvor beschriebenen PUF-Programmierausführungen gelten für jede Speicherzelle, die über eine Anti-Sicherungseinrichtung verfügt, unabhängig von der Anzahl der Transistoren, aus denen sich die Zelle zusammensetzt. Beispielsweise kann die Anti-Sicherungs-Speicherzelle mit zwei Transistoren in 1 anstelle der Anti-Sicherungs-Speicherzelle mit gleicher Effektivität verwendet werden. 11 ist ein Diagramm eines PUF-Datenprogrammiersystems ähnlich 5A, mit der Ausnahme, dass die Anti-Sicherungs-Speicherzellen 100 und 102 durch Zwei-Transistor-Anti-Sicherungs-Speicherzellen 600 und 602 ersetzt sind. Die gleichen Bezugszeichen wie in den vorangegangenen Figuren bezeichnen die gleichen Elemente, die bereits beschrieben wurden. Die Elemente, die sich zwischen 11 und 5A unterscheiden, werden nun beschrieben. Die Treiberschaltung aus den Transistoren 204 und 206 fungiert nun als Zellentreiber (cell plate (CP)) zum Anlegen einer Programmierspannung VPGM an das Gate 44 der Zellen 600 und 602 als Antwort auf das Zellplattenauswahlsignal SEL_CP. In diesem Beispiel steuert eine separate Wortleitungstreiberschaltung 604 eine Wortleitung, die mit den Gattern 32 der Zellen 600 und 602 verbunden ist, als Antwort auf das Wortleitungsauswahlsignal SEL_WL. Die zufällige PUF-Programmierung ist genau die gleiche wie vorstehend für die Ausführungsform von 5A beschrieben, mit Ausnahme des zusätzlichen Schrittes der Ansteuerung einer ausgewählten Wortleitung, um den Bitleitungskontakt 42 für die Dauer des Programmiervorgangs elektrisch mit dem Kanal unter Gate 44 zu koppeln. Diese Wortleitungsspannung sollte so hoch sein, dass der gesamte Strom von einer leitenden Verbindung zwischen dem Gate 44 und dem darunter liegenden Kanal zum Bitleitungskontakt 40 fließen kann.
-
In dem in 11 gezeigten Beispiel sind ein Wortleitungstreiber und ein Zellentreiber mit einem Paar Anti-Sicherungs-Speicherzellen verbunden. In einer alternativen Konfiguration können zwei Wortleitungstreiber und zwei Zellentreiber gleichzeitig aktiviert werden, um eine eines Paars von Zwei-Transistor-Anti-Sicherungs-Speicherzellen in ähnlicher Weise zu programmieren, wie in 6 dargestellt. In einer solchen Ausführungsform würden die beiden Speicherzellen 600 und 602 direkt mit der gleichen Bitleitung verbunden, wie in 6 dargestellt.
-
Der vorgeschlagene Ansatz ist stabil bezüglich einer Vielzahl von Parametern und signifikanten Prozessschwankungen aufgrund der großen Unterschiede in der Leitfähigkeit zwischen gebrochenen und ungebrochenen Oxiden (mindestens 3 Größenordnungen als Beispiel).
-
Die vorliegenden Ausführungsformen bieten ein hohes Maß an wahrer Zufälligkeit, besser als andere bekannte Techniken. Die vorliegenden Ausführungen bieten eine hohe Zuverlässigkeit über die Zeit und über Lesezyklen und eine hohe Wiederholbarkeit des PUF-Wertes, besser als andere bekannte Techniken.
-
Ein OTP-Speicherbaustein, der auf den zuvor beschriebenen Ausführungsformen basiert, wurde mit einem 180BCD (180nm bipolar-CMOS-DMOS) Verfahren hergestellt, das von Chipherstellern wie z.B. TSMC angeboten wird. Die 12, 13 und 14 zeigen Beispielparameter und Ergebnisse der PUF-Programmierung. Die PUF-Programmierung wurde im zuvor beschriebenen Redundanten PUF-Modus mit einem einzigen, an die Bitleitung gekoppelten Strombegrenzer durchgeführt. 12 zeigt eine Tabelle mit beispielhaften Parametern für die normale Programmierung von OTP-Daten und für die PUF-Programmierung. Die 13 und 14 zeigen die Ergebnisse der OTP PUF-Programmierbarkeitstests bzw. der OTP PUF-Fehlertests für das gefertigte OTP-Speichergerät.
-
Die Tabelle in 12 zeigt die Programmierspannung, die an die Gates der Sicherungen angelegt wird, die Impulslänge, die Anzahl der Impulse, die Anzahl der Bits, die mit dem ersten Impuls programmiert wurden, die an den Gates der Sicherungen anliegende Prüfspannung und die Prüfimpulslänge während der normalen Datenprogrammierung und der PUF-Programmierung. Bei der normalen Datenprogrammierung werden die Parameter so gewählt, dass die Wahrscheinlichkeit, dass eine Zelle nach dem ersten Programmierimpuls programmiert wird, maximiert wird. Wie bereits für die PUF-Programmierung beschrieben, benötigen einige Anwendungen 50% logische 0's und 1's über den gesamten Satz von Bits, aus denen das PUF-Datenwort besteht. Dies wird erreicht, indem in jedem Speicherzellenpaar genau ein Bit programmiert wird. In den vorliegenden Ausführungen erfolgt dies durch Reduzierung der Programmierspannung und der Programmimpulslänge gegenüber der normalen Datenprogrammierung wie in 12 dargestellt, jedoch durch wiederholtes Anlegen des kürzeren Programmierimpulses (mit dazwischenliegenden Lesezyklen zur Überprüfung der erfolgreichen Programmierung einer Speicherzelle). Im vorliegenden Beispiel führt eine minimale Impulslänge von 5µs letztendlich zu 99,9% Zellenpaaren mit einem einzelnen Bit. Typischerweise ist die PUF-Programmierimpulslänge 10 mal bis 100 mal kürzer als bei der normalen Datenprogrammierung.
-
Die Grafik der OTP PUF-Programmierbarkeits-Testergebnisse in 13 zeigt den Prozentsatz der unprogrammierten Stellen (in diesem Beispiel zwei Zellen pro Stelle) nach jedem Impuls für Pulslängen von 5µs, 20µs, 50µs und 150µs über eine kumulative Expositionszeit. Die Grafik zeigt, dass bei vielen kurzen 5µs Pulsen 99,9% Zellenpaare mit einem einzelnen Bit programmiert werden. Je nach Anwendung kann die Verwendung von Pulslängen von 20µs und 50µs zu zufriedenstellenden Ergebnissen führen, wenn 50% logische 0's und 1's nicht benötigt werden.
-
Das OTP PUF-Fehlertestergebnisdiagramm in 14 zeigt die Höhe des Fehlers in der PUF-Programmierung gegen die Programmierimpulslänge. In diesem Diagramm ist der Fehler definiert als der prozentuale Anteil von zwei programmierten Bits pro Zellenpaar. Aus den Ergebnissen in 14 ist deutlich ersichtlich, dass ein 5µs-Puls einen Fehler von <0,1% ergibt. Die Verwendung des 5µs-Pulses führt dazu, dass 99,9% Bit-Zellenpaare nur eine Zelle programmiert haben. Die Verwendung von Impulsen zwischen 50µs und 150µs Dauer führt zu einem Fehler von 0,5% bis 2,1 %, was bedeutet, dass bis zu 2% der Zellpaare beide Zellen programmiert haben.
-
Um auf die Tabelle in 12 zurückzukommen, folgt nun eine kurze Diskussion über die Lese-Verifizierungsspannung und Impulslängen für die normale Datenprogrammierung und die PUF-Programmierung. Während der normalen Datenprogrammierung erfolgt die Lese-Verifizierung mit einer minimalen Lesespannung und einem maximalen Referenzspannungspegel (oder einer minimalen Impulsbreite), um sicherzustellen, dass eine programmierte Zelle genügend Sicherheitsreserve hat. Auf der anderen Seite soll die PUF-Programmier-Lese-Verifizierung frühe Anzeichen eines Oxidausfalls in der Sicherungseinrichtung erkennen. In den vorliegenden Ausführungen geschieht dies, indem die Lese-Verifizierungsspannung beispielhaft auf ein Maximum erhöht wird und ein minimaler Referenzspannungspegel (oder eine maximale Impulsbreite) verwendet wird.
-
Der Fachmann wird verstehen, dass Anti-Sicherungs-Speicherzellen, die mit unterschiedlichen Verfahren aus verschiedenen Fertigungsstätten hergestellt wurden, zu unterschiedlichen Programmierspannungen, Lese-Verifizierungsspannungen und möglicherweise in Kombination mit anderen Impulslängen als in der Tabelle in 12 führen können, um ähnliche Ergebnisse zu erzielen.
-
Die hier beschriebenen Ausführungsformen erfordern keinen Lesevorgang, keine Selbstabschaltung der Beanspruchung für die zweite Sicherung. Die hier beschriebenen Ausführungsformen sorgen für eine hohe Stabilität und Zuverlässigkeit des erzeugten PUF-Wertes über Lesezyklen und Lesebedingungen, und es kommt zu einer minimalen Verschlechterung der Hamming-Distanz über die Zeit. Bekannte Techniken des Standes der Technik haben eine Degradation der Hamming-Distanz von 2-3% im Laufe der Zeit berichtet. Hohe Zufälligkeit und Einzigartigkeit des PUF-Wertes (nahe den idealen Hamming-Abständen) wurde beobachtet.
-
Die zuvor beschriebenen Ausführungsformen verwenden Anti-Sicherungseinrichtungen zur Erzeugung der PUF, wobei die Ausführungsformen nicht unbedingt auf Anti-Sicherungseinrichtungen beschränkt sind. Andere Speichergeräte wie Sicherungen können verwendet werden. Jedes Speichermedium, bei dem für eine erfolgreiche Programmierung Spannungen und Ströme benötigt werden und in der Zelle ein Leitungsweg zwischen einer Wortleitung und einer durch die Programmierung elektrisch mit der Zelle gekoppelten Bitleitung gebildet wird, ist für den Einsatz in den vorliegenden Ausführungsformen geeignet. Während Wortleitungen und Bitleitungen speicherkontextabhängige Begriffe sind, können andere Halbleiterstrukturen mit ähnlicher Funktion wie Wortleitungen und Bitleitungen verwendet werden. Es können verschiedene Strombegrenzungsschaltungen entwickelt werden, um festzustellen, wann eine erste Zelle eines Zellenpaares erfolgreich programmiert wurde. Solche Schaltungen können auf der Grundlage des verwendeten Zelltyps und der Kenntnis des Zellverhaltens entwickelt werden, wenn sie programmiert oder unprogrammiert sind.