-
Die
Erfindung betrifft ein Verfahren zum Programmieren einer Fuse einer
integrierten Schaltung nach dem Oberbegriff von Anspruch 1 und eine Schaltungsanordnung
zum Programmieren einer Fuse einer integrierten Schaltung nach dem
Oberbegriff von Anspruch 11.
-
Zur
einmaligen Programmierung einer integrierten Schaltung (IC: Integrated
Circuit) werden in jenen Fällen,
die eine hohe Zuverlässigkeit
erfordern, insbesondere in automotiven Anwendungsbereichen, oftmals
sogenannte Hohlraumfuses (auch als fusible links bezeichnet) verwendet.
Bei einer Hohlraumfuse wird eine Polysiliziumbrücke durch einen starken Programmierpuls
zum Schmelzen gebracht. Die hohe Zuverlässigkeit dieser Programmiermethode
rührt daher,
dass das Abschmelzen der Brücke anlässlich der
Programmierung irreversibel ist. Dies steht in Gegensatz zu EPROMs
(Electrical Programmable Read Only Memories) oder EEPROMs (Electrical
Erasable and Programmable Read Only Memories), deren Programmier-Ladung
sich u.U. während der
Lebensdauer des Bausteins verflüchtigen
kann.
-
Eine
weitere Möglichkeit
zum Programmieren besteht in der Verwendung von Aluminimum-Fuses.
Diese funktionieren ähnlich
den Hohlraumfuses. Durch einen starken Programmierpuls wird eine
dünne Aluminimumleitung
zum Schmelzen gebracht. Dafür
sind außerordentlich
hohe Stromstärken
erforderlich (von typischerweise ca. 0.5 A), da die dünne Aluminiumleitung
nur durch ein dünnes
Dielektrikum vom Substrat getrennt ist und somit in sehr innigem thermischen
Kontakt zum gut wärmeleitenden
Silizium steht. Um dennoch die nötige
Energiedichte in der Fusestrecke zu erzeugen, muss daher ein hoher Strom
fließen.
-
Neben
der Programmierung durch Hohlraumfuses wird in gleichen Anwendungen
auch das sogenannte Zener-Zapping verwendet. Dabei wird während der
Programmierung an eine Zener-Diode eine hohe Spannung angelegt,
so dass die Zener-Diode
kurzgeschlossen wird und danach niederohmig bleibt. Dieses traditionelle
Verfahren hat wie die Aluminium-Fuses den Nachteil, dass verhältnismäßig große Ströme zum Programmieren
notwendig sind (typischerweise ca. 200 mA). In Anwendungen, in denen
aus Schutzgründen
ein Serienwiderstand in der Versorgungsleitung liegt, ist es daher
nicht möglich, die
integrierte Schaltung in der Applikationsschaltung zu programmieren
(sogenanntes In-Circuit Programming).
-
Zum
Programmieren einer integrierten Schaltung auf Scheibenebene (d.h.
bevor die Schaltung in Form eines Halbleiterplättchens in ein Gehäuse montiert
wurde) verwendet man häufig
ebenfalls Polysiliziumbrücken,
die allerdings durch Beschuss mit einem Laser programmiert werden.
Diese Methode hat allerdings den Nachteil, dass die integrierte Schaltung
nach Montage in das Gehäuse
nicht mehr getrimmt werden kann. Durch die Montage der integrierten
Schaltung verursachte Ungenauigkeiten können demnach nicht mehr herauskalibriert
werden. Insbesondere bei Analog-ICs ist es aber oftmals unerlässlich,
dass man Offsets und Temperaturgänge, die
beispielsweise durch mechanische Verspannungen des Chips im Gehäuse stark
beeinflusst werden, nach der Gehäusemontage
trimmt.
-
Die
Hohlraumfuses zeichnen sich im Unterschied zum Zener-Zapping durch
den wesentlich geringeren Programmierstrom aus: sie benötigen nur typischerweise
ca. 50 mA, also ca. 25% des Zener-Programmierstroms. Dieser niedrige Programmierstrom
wird dadurch erreicht, dass die Poly(silizium)-Brücke nicht
in unmittelbarem thermischen Kontakt mit dem Chip steht: Sie ist
nicht, wie alle übrigen Bauelemente
in den IC eindiffundiert bzw. auf der Oberfläche des ICs aufgewachsen, sondern
sie befindet sich in einem Hohlraum. Dadurch ist jene Stelle, die
beim Programmieren aufschmilzt, nur von schlecht wärmeleitender
Luft umgeben und der thermische Kontakt zum restlichen IC gering.
Erreicht wird das, indem die Poly-Fuse auf eine sogenannte Opferschicht
(sacrificial layer) aufgewachsen wird, darüber kommt eine weitere Opferschicht,
die mit einem Deckel abgedeckt wird. Dieser Deckel enthält Löcher, durch
die eine Säure
die Opferschichten auflösen
kann. Sobald die Opferschichten vollständig aufgelöst sind, schwebt die Poly-Fuse wie eine Brücke in der
Luft. Daher auch die Bezeichnung Poly-Brücke.
-
Gelegentlich
wird der Deckel auch weggelassen. Zudem kann auch eine der beiden
Opferschichten durch eine säurebeständige Schicht
ersetzt werden, so dass die resultierende Fuse als Halbraum-Fuse
bezeichnet wird. Vornehmlich für Forschungszwecke
wird die Fuse auch komplett in Vollmaterial eingebettet.
-
Bei
Hohlraumfuses kommt es gelegentlich zum Problem der Oszillationen:
Wenn an die Fuse eine hohe Spannung angelegt wird, so steigt zunächst der
Strom durch diese Fuse für
einige Mikrosekunden stark an. Danach bricht der Stromfluss abrupt
ab. In einer Vielzahl der Fälle
ist die Fuse zu diesem Zeitpunkt bereits einwandfrei aufgeschmolzen und
bleibt auch weiterhin hochohmig. Gelegentlich jedoch zeigt sich,
dass die Fuse nicht einwandfrei aufgeschmolzen ist. Wenn man den
Fusevorgang zu diesem Zeitpunkt abbricht, so zeigt die Fuse nach
ca. 10 μs
wiederum einen niederohmigen Kontakt zwischen ihren beiden Elektroden.
-
Wenn
der Fusevorgang nicht abgebrochen wird – d.h. die hohe Programmierspannung
bleibt unverändert
an der Anode der Fuse anliegen, selbst wenn der Stromfluss abbricht – dann setzt
der Stromfluss nach einigen weiteren Mikrosekunden wieder ein. Dieser
Vorgang wiederholt sich zumeist viele Male: Der Stromfluss dauert
nur wenige Mikrosekunden an und wird sodann unterbrochen für eine ähnlich lange
Zeit, danach wiederholt sich dieser Vorgang. Diese Oszillationen
scheinen dadurch zu entstehen, dass die Fuse kurzzeitig aufschmilzt,
dabei durch die Oberflächenspannung
des Schmelztropfens der Kontakt unterbrochen wird, sodann aufgrund
der fehlenden Energieeinkopplung die Schmelze im amorphen, ungeordneten
Zustand sehr schnell erstarrt und es dadurch zu einer Volumenvergrößerung kommt
(Poly-Si zeigt ähnlich
wie Wasser eine Anomalie, indem es beim Übergang vom flüssigen zum festen
Aggregatzustand zu einer Volumensvergrößerung kommt), so dass sich
der Kontakt wiederum schließt.
-
Durch
Optimierung der Geometrie der Fusestrecke kann die Auftrittswahrscheinlichkeit
stark reduziert werden, jedoch gelang es bisher in manchen Technologien
noch nicht, derartige Oszillationen gänzlich zu vermeiden. Deshalb
war man bislang genötigt,
den Fusepuls bei Hohlraumfuses für
eine hinreichend lange Zeit zu applizieren. Es zeigt sich nämlich, dass
bei einem 100 ms langen Fusepuls sämtliche Oszillationen noch
vor Ende des Pulses abbrechen und diese Fuses einwandfrei aufgeschmolzen sind.
Im optimalen Fall jedoch, wenn die Fuse nicht oszilliert, benötigt man
für einen
Programmierpuls nur ca. 10 μs.
D.h. durch die Oszillationen muss die Programmierdauer um 4 Zehnerpotenzen
vergrößert werden,
will man die hohe Zuverlässigkeit
der Programmierung gewährleisten.
-
Die
DE 199 20 721 C2 beschreibt
eine Schaltungsanordnung zur Programmierung einer Fuse, die eine
Kontrollschaltung aufweist, an deren Ausgang ein Strom abgegriffen
werden kann, der einer gemessenen elektrischen Kenngröße proportional
ist. Gemäß
DE 199 20 721 C2 wird
lediglich eine elektrische Kenngröße gemessen, in der sich der
sich ein abrupter Wechsel der elektrischen Eigenschaften der Schaltung,
wie er durch das Durchschmelzen der Fuse erfolgt, niederschlägt.
-
Die
US 6,268,760 beschreibt
eine Schaltung zur Programmierung einer Fuse. Bei der Fuseprogrammierung
gemäß
US 6,268,760 wird während der Dauer
des BLOW-Signals eine Programmierspannung an die Fuse angelegt,
so daß bei
Herstellung eines elektrischen Kontakts aufgrund von Filamentbildung
ein Programmierstrom durch die Fuse fließt. Jedoch werden keinerlei
Mittel zum Überwachen
des während
der Programmierung durch die Fuse fließenden Stroms bereitgestellt.
-
Aufgabe
der Erfindung ist es daher, ein Verfahren und eine Schaltungsanordnung
zum Programmieren einer Fuse einer integrierten Schaltung anzugeben,
welche die Programmierzeit der Fuse verringern.
-
Diese
Aufgabe wird durch ein Verfahren zum Programmieren einer Fuse einer
integrierten Schaltung mit den Merkmalen nach Anspruch 1 und durch eine
entsprechende Schaltungsanordnung mit den Merkmalen nach Anspruch
11 gelöst.
weitere vorteilhafte Ausführungsformen,
Ausgestaltungen und Aspekte der vorliegenden Erfindung ergeben sich
aus den abhängigen
Patentansprüchen,
der Beschreibung und den beiliegenden Zeichnungen.
-
Eine
der Erfindung zugrunde liegende Idee besteht darin, dass Mittel
zur Verfügung
gestellt werden, die während
des Programmierens der Fuse einen Strom durch die Fuse bzw. eine
an der Fuse anliegende Spannung überwachen
und das Ergebnis der Überwachung
zum Regeln des Programmiervorgangs verwenden. Das Ergebnis der Überwachung kann
insbesondere als analoge Spannung ausgegeben werden, die linear
proportional zum Stromfluss durch die Fuse bzw. zur an der Fuse
anliegenden Spannung ist. Die Mittel können insbesondere beim Programmieren
einer Fuse eventuell auftretende Oszillationen erkennen und einen
Fusepuls so lange aufrecht erhalten, bis diese unerwünschten
Oszillationen abgeklungen sind und die Fuse einwandfrei programmiert
ist.
-
Dieser
Idee liegt insbesondere die folgende Erkenntnis zugrunde: Nach Applikation
eines kurzen Strom- oder Spannungsimpulses mit einer Zeitdauer von
beispielsweise etwa 100 μs
zum Programmieren einer Fuse könnte überprüft werden,
ob die Fuse hochohmig geblieben ist. Wenn nicht, würde der
Impuls wiederholt, gegebenenfalls mit einer längeren Zeitdauer.
-
Dieses
Verfahren hätte
jedoch folgenden gravierenden Nachteil: Wenn die Fuse kurzzeitig
mit einem Strom- oder Spannungsimpuls beansprucht wird (wie dies
im ersten Fuseversuch geschieht) und sie sich danach wieder abkühlt, so
wird sie durch die Überprüfung elektrisch
getrimmt. Das bedeutet insbesondere, dass sie irreversibel vorgeschädigt wird, indem
sich ihr Widerstand erhöht.
Da beim Programmieren der Fuse eine bestimmte Spannung angelegt wird,
wird eine Energie U2/R (U: Programmierspannung,
R: Fuse-Innenwiderstand)
aufgebracht. Wenn der Fuse-Innenwiderstand R allerdings unzulässig steigt,
reicht die Energie nicht mehr aus, um die Fuse nochmals aufzuschmelzen.
In der Praxis heißt
das, dass bei beispielsweise einer Hohlraumfuse, die nicht gleich
beim ersten Versuch (d.h. beim ersten Programmier- oder Fusepuls) einwandfrei
programmiert wird, die Wahrscheinlichkeit für eine einwandfreie Programmierung
bei nachfolgenden Impulsen wesentlich sinkt.
-
Daher
muss bei auftretenden Oszillationen während des Programmierens der
Fuse die Entscheidung über
einwandfreie und nicht einwandfreie Programmierung sehr schnell
(„online") getroffen werden,
noch bevor die geschmolzene Fusestrecke erstarrt. Dies ist ein wesentlicher
Gedanke der Erfindung.
-
Konkret
betrifft die Erfindung ein Verfahren zum Programmieren einer Fuse
einer integrierten Schaltung, bei dem zum Programmieren der Fuse
ein Strom durch die Fuse geleitet oder eine Spannung an die Fuse
angelegt wird. Mittel überwachen
während des
Programmierens der Fuse den Strom durch die Fuse bzw. die an der
Fuse anliegende Spannung und verwenden das Ergebnis der Überwachung
zum Regeln des Programmiervorgangs. Insbesondere durch die Überwachung
kann vermieden werden, dass eine Fuse beim Programmieren irreversibel
vorgeschädigt und
daher "unsauber" programmiert wird.
Insgesamt wird somit eine zuverlässige
und sichere Programmierung der Fuse erreicht. Das Ergebnis der Überwachung
wird ferner verwendet, um den weiteren Programmiervorgang der Fuse
zu regeln, beispielsweise den Fusepuls in die Fuse für eine längere Zeit aufrecht
zu erhalten.
-
Zum Überwachen
kann eine Abnahme des Stromes durch die Fuse bzw. ein Absinken der
an der Fuse anliegenden Spannung während einer vorgebbaren Zeitdauer
kontrolliert werden. Eine Überwachung
dieser physikalischen Größen kann
vorteilhafterweise mit einfachen Mitteln bei ausreichender Genauigkeit
erfolgen.
-
Vorzugsweise
wird diese Zeitdauer derart vorgegeben, dass sie länger als
die längste
Periodendauer einer Oszillation ist, die typischerweise beim Programmieren
der Fuse auftreten kann. Hierdurch wird sichergestellt, dass eine
beim Programmieren auftretende Oszillation durch die Überwachung
sicher festgestellt wird. Durch anschließende Auswertung des Programmiervorgangs
kann dann auf einfache Art und Weise ermittelt werden, ob eine Oszillation
aufgetreten und daher die Fuse u.U. "schlecht" programmiert worden ist.
-
In
einer konkreten, bevorzugten Ausführungsform wird die Zeitdauer
derart vorgegeben, dass die Fuse während der Zeitdauer sicher
programmiert und der Strom bzw. die Spannung unter einen vorgebbaren
Wert absinken können.
-
Die
Beendigung der Programmierung kann signalisiert werden. Diese Signalisierung
kann insbesondere über
einen Anschluss erfolgen, der einfach ausgewertet werden kann. Der
Anschluss kann beispielsweise ein Pad einer integrierten Schaltung sein,
so dass über
einen mit diesem Pad konnektierten Pin eine einfache Auswertung
erfolgen kann.
-
Nach
Signalisieren der Beendigung der Programmierung kann der Strom bzw.
die Spannung zum Programmieren abgeschaltet werden.
-
Vorzugsweise
wird eine erfolgreiche oder erfolglose Programmierung nach Beendigung
derselben signalisiert. Dies erleichtert die insbesondere automatische
Auswertung des Ergebnisses der Programmierung wesentlich.
-
In
einer bevorzugten Ausführungsform
wird die Anzahl von Oszillationen des Stromes bzw. der Spannung
zum Programmieren während
des Programmiervorgangs gezählt.
Dies ermöglicht
beispielsweise eine Beurteilung der Güte der Programmierung.
-
Vorzugsweise
wird bei Erreichen einer vorgebbaren Anzahl von Oszillationen während des
Programmierens das Programmieren abgebrochen. Dadurch kann ein ohnehin
erfolgloser Programmiervorgang u.U. stark verkürzt werden. In einer Produktionslinie
für integrierte
Schaltungen, in der Fuses auf den Schaltungen programmiert werden,
kann dies eine wertvolle Zeiteinsparung beim Herstellen bewirken.
-
Im
Falle einer Vielzahl von Fuses werden diese vorzugsweise sequentiell
programmiert; anschließend
wird die Beendigung des Programmierens der letzten Fuse signalisiert
und der Strom bzw. die Spannung zum Programmieren abgeschaltet. Dies
ermöglicht
eine komfortable Programmierung mehrer Bits bzw. Fuses, da erst
nach Programmierung des letzten Bits bzw. der letzten Fuse über den erfolgreichen
Abschluss des Programmiervorgangs berichtet wird.
-
Ferner
betrifft die Erfindung eine Schaltungsanordnung zum Programmieren
einer Fuse einer integrierten Schaltung, wobei zum Programmieren
der Fuse ein Strom durch die Fuse geleitet oder eine Spannung an
die Fuse angelegt wird. Es sind Mittel vorgesehen, die derart ausgebildet
sind, dass sie während
des Programmierens der Fuse den Strom durch die Fuse bzw. die an
der Fuse anliegende Spannung überwachen
und das Ergebnis der Überwachung
zum Regeln des Programmiervorgangs verwenden.
-
Vorzugsweise
können
die Mittel einen Stromwächter
in Form eines insbesondere kleinen Widerstandes umfassen; dies kann
insbes. der Widerstand der Zuleitungsdrähte von einem Pad zur Fuse
sein.
-
Die
Mittel können
auch eine Spannungsquelle und einen Komparator umfassen, der die
an einem Anschluss der Fuse anliegende Spannung mit der Spannung
der Spannungsquelle vergleicht. Die Spannung der Spannungsquelle
gibt hier sozusagen eine Schwelle für die Steuerung des Programmiervorgangs
vor.
-
Um
eine "intelligente" Schaltungsanordnung zum
Programmieren von Fuses zu schaffen, umfassen die Mittel vorzugsweise
eine Auswertelogik, die zum Auswerten des Ausgangssignals des Komparators
ausgebildet ist.
-
Die
Auswertelogik kann einen ersten Zähler umfassen, der durch ein
Taktsignal angesteuert ist und durch das Ausgangssignal des Komparators
zurück
gesetzt werden kann. Der erste Zähler
dient sozusagen zum Protokollieren des Programmiervorgangs der Fuse,
indem sein Zählwert
der Zeitdauer entspricht, in der die Fuse programmiert ist.
-
Vorzugsweise
ist der erste Zähler
zum Erzeugen eines Zeitdauersignals ausgebildet, das zum Beenden
des Programmierens über
eine Steuerlogik vorgesehen ist. Beispielsweise kann das Zeitdauersignal
durch ein Overflow- Bit
oder -Signal des Zählers gebildet
werden. Das Zeitdauersignal kann sehr einfach durch Logikschaltungen
ausgewertet und zum Steuern des Programmierens der Fuse eingesetzt werden.
-
Zum
Ansteuern des ersten Zählers
kann das Ausgangssignal des Komparators mit einem Programmiersteuersignal
logisch verknüpft
und dem Rücksetzeingang
des ersten Zählers
zugeführt
sein.
-
Ferner
kann zum Steuern des Programmiervorganges das Zeitdauersignal mit
dem Programmiersteuersignal logisch verknüpft und einem Schaltelement
zugeführt
sein, über
welches das Programmieren ein- und ausgeschaltet werden kann.
-
Diese
Schaltelement ist vorzugsweise ein Schalter, insbesondere ein Bipolartransistor.
-
Schließlich kann
ein zweiter Zähler
zum Zählen
von Fusepulsen vorgesehen sein, der durch das Ausgangssignal des
Komparators getaktet ist, durch das Programmiersteuersignal zurück gesetzt
werden kann und zum Erzeugen eines Ausgangssignals zum Ein- und
Ausschalten des Programmierens nach einer vorgebbaren Zahl von Fusepulsen
ausgebildet ist.
-
Vorzugsweise
ist die Fuse eine Hohlraum-Fuse oder eine Anti-Fuse, insbesondere
eine Zener-Diode.
-
Die
Erfindung wird nachfolgend anhand zweier unterschiedlicher Ausführungsbeispiele
in Verbindung mit den Figuren der Zeichnung näher dargestellt. Es zeigen:
-
1 ein
erstes Ausführungsbeispiel
der erfindungsgemäßen Schaltungsanordnung
zum Programmieren einer Fuse einer integrierten Schaltung, und
-
2 ein
zweites Ausführungsbeispiel
der erfindungsgemäßen Schaltungsanordnung
zum Programmieren einer Fuse einer integrierten Schaltung.
-
Im
folgenden sind gleiche und funktionell gleiche Elemente mit den
gleichen Bezugszeichen bezeichnet.
-
1 zeigt
eine erfindungsgemäße Schaltungsanordnung
zum Programmieren einer Fuse 10, beispielsweise einer Hohlraum-Fuse.
Die Fuse 10 ist zwischen den Emitter eines Bipolartransistors 26,
der als Schaltelement zum Ein- und Ausschalten des Programmierens
dient, und einen Widerstand 12 geschaltet, der als Stromwächter dient. Über den
Widerstand 12 ist die Fuse 10 mit einem ersten
Pad 14 verschaltet, das zum Programmieren auf ein Bezugspotential
wie beispielsweise 0 V oder GND gelegt wird. Ferner ist die Fuse 10 über die
Kollektor-Emitter-Strecke des Bipolartransistors 26 mit
einem zweiten Pad 24 verschaltbar, an das zum Programmieren
ein hohes Potential in Bezug auf das Bezugspotential gelegt wird,
beispielsweise eine Versorgungsspannung VDD.
-
Die
Verbindung zwischen Fuse 10 und Widerstand 12 ist
mit dem nicht-invertierenden Eingang eines Komparators 18 verschaltet,
dessen invertierender Eingang wiederum mit einer Gleichspannungsquelle 16 verschaltet
ist. Die Gleichspannungsquelle 16 stellt eine vorgegebene
Schwelle dar, anhand der beurteilt wird, ob ein Programmieren erfolgreich
war.
-
Das
Ausgangssignal des Komparators 18 wird mit einem Programmiersteuersignal "FuseInhibit" über ein OR-Gatter 20 logisch
verknüpft.
Das so gebildete Signal wird einerseits einem Rücksetz- oder Reset-Eingang 36 eines
ersten Zählers 22 und andererseits
einem Takteingang eines zweiten Zählers 32 zugeführt. Der
zweite Zähler 32 dient
zum Zählen
der Fusepulse-Oszillationen und wird hierzu vom Programmiersteuersignal "FuseInhibit" zurück gesetzt.
-
Der
erste Zähler 22 wird
durch ein vorgegebenes Taktsignal CLK getaktet. Er ist zum Erzeugen eines
Zeitdauersignals ausgebildet, das über ein NOR-Gatter 30 mit
dem Programmiersteuersignal "FuseInhibit" und mit dem Ausgangssignal
des zweiten Zählers 32 logisch
verknüpft
wird. Das so gebildete Signal wird einerseits einem dritten Pad 28 zum Auswerten
zugeführt
und steuert anderseits die Basis des Bipolartransistors 26 an.
Dadurch wird der Bipolartransistor 26 durch das Ausgangssignal
des NOR-Gatters 30 ein- oder ausgeschaltet.
-
Der
Programmiervorgang der Fuse 10 wird im folgenden erläutert: Vor
der eigentlichen Programmierung ist das Programmiersteuersignal „FuseInhibit" logisch „HIGH", so dass der durch
den Bipolartransistor 26 gebildete Schalter ausgeschaltet
ist und der erste und zweite Zähler 22 bzw. 32 zurück gesetzt
sind.
-
Die
Programmierung der Fuse 10 wird durch Setzen des Programmiersteuersignals „FuseInhibit" auf logisch „LOW" gestartet. Da unmittelbar
zuvor beide Zähler 22 und 32 noch
zurück
gesetzt waren, ist das als Zeitdauersignal genutzte Overflow-Signal bzw.
-Bit des Zählers
logisch „LOW". Somit sind alle Eingänge des
NOR-Gatters 30 auf logisch „LOW", womit der Ausgang des NOR-Gatters 30 logisch „HIGH" wird. Dadurch wird
die Basis des Bipolartransistors 26 aufgesteuert und der
dadurch gebildete Schalter „eingeschaltet": ein über das
zweite Pad 24 eingeprägter
Programmierstrom beginnt zu fließen.
-
Gleichzeitig
indiziert das dritte Pad 28, dass eine integrierte Schaltung,
welche die Schaltungsanordnung aufweist, programmiert wird. Durch
Setzen des Programmiersteuersignals „FuseInhibit" auf logisch „LOW" wird der erste Zähler 22 für eine kurze Zeit
(max. etwa 1 μs)
nicht zurück
gesetzt wird; er zählt
daher geringfügig
hoch, erreicht jedoch noch nicht seinen Endwert Overflow OV. Sobald
der Stromfluss durch die Fuse 10 nennenswert groß ist, d.h.
die über
den Widerstand 12 abfallende Spannung größer als
die Spannung des Gleichspannungsquelle 16 ist, schaltet
der Ausgang des Komparators 18 auf logisch „HIGH", so dass der erste
Zähler 22 wieder
zurück
gesetzt wird.
-
Erst
wenn der Stromfluss durch die Fuse 10 aussetzt (und das
Programmiersteuersignal „FuseInhibit" nach wie vor logisch „LOW" bleibt), schaltet
der Komparator 18 auf logisch „LOW", wodurch der erste Zähler 22 nicht
mehr zurück
gesetzt ist. Somit wird der Zählerstand
des ersten Zählers 22 im
Takt des Taktsignals CLK hochgezählt.
Bleibt der Strom durch die Fuse 10 längere Zeit (z.B. etwa 100 μs, d.h. wesentlich
länger,
als dies bei Oszillationen beim herkömmlichen Programmieren der
Fuse 10 der Fall wäre)
verschwindend klein, dann erreicht der erste Zähler 22 seinen maximalen
Zählstand,
der durch das Overflow-Bit gekennzeichnet ist. Das durch das Overflow-Bit
gebildete Zeitdauersignal schaltet über das NOR-Gatter 30 den Bipolartransistor 26 aus
und indiziert das Ende der Programmierung, indem das Ausgangsignal
des NOR-Gatters 30 am dritten Pad 28 logisch „LOW" wird. Beide Zähler 22 und 32 sollten überlaufgeschützt sein,
d.h. das Overflow-Bit der beiden Zähler 22 und 32 wird
erst durch ein nachfolgendes Rücksetzsignal
gelöscht.
-
Sobald
die Programmierung beendet ist (z.B. indem eine am zweiten Pad 24 anliegende
Programmierspannung auf einen niedrigeren Betriebsspannungswert
gesetzt worden ist) wird das Programmiersteuersignal „FuseInhibit" logisch „HIGH", wodurch der erste
Zähler 22 wieder
zurück
gesetzt wird, die Fuse 10 mittels des Bipolartransistors 26 von
der über
das zweite Pad 24 anliegenden Programmierspannung entkoppelt
wird und das Ausgangsignal des NOR-Gatters 30 auf logisch „LOW" bleibt.
-
Als
Erweiterung kann noch der zweite Zähler 32 vorgesehen
sein, der die Anzahl der Fusepulse zählt. Auch er setzt bei Erreichen
seines Zählstand-Maximalwerts
ein Overflow-Bit. Das Overflow-Bit kann ebenfalls dem NOR-Gatter 30 zugeführt werden
und somit das Ausgangssignal des NOR-Gatters 30 auf logisch „LOW" setzen und dadurch
den Bipolartransistor 26 hochohmig schalten. Dadurch wird
der Programmiervorgang bei Überschreiten
einer maximalen Anzahl an Oszillationen abgebrochen.
-
Wie
bereits oben erläutert
worden ist, kann die analoge, am Widerstand 12 abfallende
Spannung insbesondere von dem Komparator 18 mit einer vorgegebenen
Schwelle verglichen werden. Der Vergleich setzt den ersten Zähler 22 zurück, der
mit einer insbesondere festen Taktfrequenz des Taktsignals CLK hochgezählt wird.
Sobald der Strom durch die Fuse 10 unter einen Grenzwert
sinkt, schaltet der Komparator 18 seinen Ausgang auf logisch „LOW", wodurch der erste
Zähler 22 nicht
mehr zurückgesetzt
wird und mit der festen Taktfrequenz des Taktes CLK hoch zählt. Wenn
der Stromfluss für
genügend lange
Zeit unter der Komparatorschwelle bleibt (z.B. 50 μs), erreicht
der erste Zähler 22 einen
Endwert, der die erfolgreiche Programmierung der Fuse indiziert.
Wenn jedoch die Fuse 10 beim Programmieren oszilliert,
dann beginnt typischerweise nach beispielsweise ca. 5..20 μs wiederum
ein starker Strom durch die Fuse 10 zu fließen, wodurch
der Komparatorausgang auf logisch „HIGH" geht und den ersten Zähler 22 zurücksetzt.
-
Durch
geeignete Wahl von Taktfrequenz am Zählereingang und der Zählertiefe
des ersten Zählers 22 können beliebige
Beobachtungszeiten des Stromwächters
eingestellt werden; somit kann die Schaltung an die Oszillations-Eigenschaften
der Fuse in der jeweiligen Technologie angepasst werden, in der die
Schaltung implementiert wird.
-
Im
einfachen Fall der Programmierung eines einzelnen Bits (entsprechend
einer einzelnen Fuse) kann bei Erreichen des Zählerendwerts des ersten Zählers 22 (entsprechend
etwa OV, d.h. Overflow) – also
nach erfolgreicher Programmierung des Bits – über ein (nicht dargestelltes)
Dateninterface die erfolgreiche Programmierung mitgeteilt werden.
Dann kann der Fusepuls, typischerweise eine hohe Spannung, beendet
werden.
-
Um
definierte zeitliche Verhältnisse
bei der Beendigung des Fusepulses zu erzielen, kann es vorteilhaft
sein, wenn zusätzlich
bei Erreichen des Zählerendwerts
des ersten Zählers 22 der
chip-interne Schalter 26 geöffnet wird, so dass die Fuse 10 von der
Fusespannung sicher entkoppelt ist.
-
Im
komfortablen Fall der Programmierung mehrerer Bits (entsprechend
mehreren Fuses) kann nach erfolgter Programmierung eines Bits mit
der Programmierung des folgenden Bits fortgefahren werden (sequentielle
Programmierung). Erst nach dem letzten Bit kann dann die Mitteilung
erfolgen, dass die Programmierung erfolgreich beendet wurde.
-
In
beiden Fällen
kann es zweckmäßig sein, auch
dann (beispielsweise via Dateninterface) zu informieren, wenn sich zumindest
ein Bit bzw. eine Fuse nicht programmieren ließ, also der Programmiervorgang
nicht erfolgreich oder überhaupt
nicht abgeschlossen werden konnte. Es kann beispielsweise vorkommen,
dass die Oszillationen auch nach etwa 100 ms nicht aufhören. Deshalb
empfiehlt es sich, während
eines Programmiervorgangs einen (nicht dargestellten) Ausgangspin
auf logisch „HIGH" zu legen. Solange
dieser Ausgangspin logisch „HIGH" ist, gilt der Programmiervorgang
als nicht abgeschlossen. Wenn der Programmiervorgang abgeschlossen
ist, wird dieser Ausgangspin logisch „LOW". Dies vereinfacht die Auswertung der
Programmierung wesentlich. Es braucht dann nämlich lediglich überprüft zu werden,
wann dieser Ausgangspin logisch „LOW" wird; die erfolglose Programmierung
kann auch nach einer maximalen Zeitdauer abgebrochen werden.
-
Ferner
ist es möglich,
durch den zweiten Zähler 32,
dessen Zähl-
oder Takt-Eingang an den Ausgang des Komparators 20 gelegt
wird, zu ermitteln, aus wie vielen Oszillationen ein Fusevorgang besteht.
Dieses Datum kann insbesondere auch über das Dateninterface dem
Anwender mitgeteilt werden. Dadurch lassen sich in besonders sicherheitsrelevanten
Anwendungen verdächtige
Bausteine, d.h. solche, bei denen während der Programmierung eine maximale
Anzahl an Oszillationen überschritten
wurde, ausmustern. Auch kann bei Erreichen einer vorgegebenen Obergrenze
der Programmiervorgang chip-intern abgebrochen werden, indem z.B.
ein (nicht dargestellter) chip-interner Schalter die betreffende
Fuse von der anliegenden Programmierspannung trennt. In diesem Fall
sollte über
ein bestimmtes Signal, das logisch „LOW" wird, mitgeteilt werden, dass die Programmierung
beendet ist. An einem weiteren (nicht dargestellten) Pin kann via
einem logischen „LOW" mitgeteilt werden,
dass die Programmierung erfolglos beendet wurde. Über einen
nachfolgenden Datentransfer kann ferner ausgewertet werden, bei
welchem Bit der Programmiervorgang erfolglos abgebrochen wurde.
-
2 zeigt
eine Schaltungsanordnung zum Programmieren von Anti-Fuses, wie beispielsweise Zener-Fuses.
Bei Zener-Fuses
tritt das Problem der Oszillationen nicht auf, jedoch kann es auch
hier zu einem Problem hinsichtlich der Zuverlässigkeit der Programmierung
kommen: Prinzipiell ist eine Zener-Fuse im unprogrammierten Zustand
hochohmig und wird erst nach der Programmierung niederohmig, weshalb
sie auch als Anti-Fuse bezeichnet wird. Im Unterschied zu (normalen)
Fuses (beispielsweise Hohlraum- oder Aluminium-Fuses) wird anlässlich der Programmierung nicht
eine Spannung an die Zener-Fuse angelegt, sondern ein Strom für eine gewisse
Zeit (der Fusepuls-Länge)
eingeprägt.
Während dieser
Zeit erhitzt sich der PN-Übergang
der Zener-Fuse so stark, dass er irreversibel geschädigt wird
und somit niederohmig wird.
-
Auch
hier tritt die Problematik auf, dass man den Fusepuls genügend lange
applizieren muss, um eine einwandfreie Programmierung zu gewährleisten.
Zwar kommt es hier nicht zu einer Trimmung wie im Fall der Hohlraumfuses.
Daher ist es möglich, auch
geraume Zeit (mehrere Sekunden) nach der Programmierung mittels
Dateninterface zu überprüfen, ob
die Programmierung erfolgreich war. Eine on-chip Überwachungsschaltung
kann auch hier helfen (a) unnötig
lange Fusepuls-Längen
zu reduzieren und somit die Energieeinbringung in eine integrierte Schaltung
zu minimieren (wodurch sich die Schaltung nicht unnötig erwärmt und
somit z.B. die Testzeit minimiert werden kann) und (b) die Zuverlässigkeit der Überwachung
zu erhöhen,
indem die Überwachung
vorwiegend von einer on-chip Logik ausgeführt wird.
-
Die
on-chip Logik müsste
dann die Spannung von Kathode zu Anode der Zener-Fuse überwachen
(beispielsweise mittels eines Komparators) und den Strom durch die
Zener-Fuse so lange aufrechterhalten, bis diese Spannung für genügend lange
Zeit einen Grenzwert unterschreitet. Dann wird der Stromfluss durch
die betreffende Fuse unterbrochen und die Beendigung des Programmiervorgangs
dieses Bits mitgeteilt, oder automatisch die Programmierung des
nächsten
Bits eingeleitet und erst die Beendigung der Programmierung des
letzten zu programmierenden Bits mitgeteilt. Sollte die Spannung an
der Zener-Fuse nach einer gewissen Maximaldauer noch immer nicht
unter den notwendigen Grenzwert gefallen sein, so gilt die Programmierung als „verdächtig", potentiell unzuverlässig und
wird erfolglos abgebrochen. Die Beendigung des Programmiervorgangs
wird auch in diesem Fall mitgeteilt. Sowohl für erfolgreiche als auch erfolglose
Programmierung kann über
den Erfolg der Programmierung über
ein weiteres Signal informiert werden; alternativ kann auch der
durch die Fuses gebildete Festwertspeicher mittels eines geeigneten
Lesemodus ausgelesen werden, um zu erfahren ob alle Bits erfolgreich
gesetzt wurden bzw. welche Bits erfolgreich gesetzt wurden.
-
Das
Verfahren lässt
sich in analoger Weise auf die Programmierung von Alu-Fuses übertragen. Eine
Programmierung eines Bits gilt als erfolgreich abgeschlossen, wenn
der Spannung durch die Alu-Fuse für hinreichend lange Zeit unter
ein notwendiges Limit sinkt.
-
Die
in 2 dargestellte Schaltung ähnelt der in 1 dargestellten
Schaltung. Anstelle der Fuse in 1 ist bei
der Schaltung in 2 eine Anti-Fuse in Form einer
Zener-Diode 38 vorgesehen. Ferner
ist der nicht-invertierende Eingang des Komparators 18 mit
der Kathode der Zener-Diode 38 verschaltet.
-
Das
Programmieren der Zener-Diode 38 unterscheidet sich vom
Programmieren einer normalen Fuse geringfügig (zum prinzipiellen Verlauf
beim Programmieren siehe Beschreibung zu 1): Sobald der
Stromfluss durch die Zener-Diode 38 beim Programmieren
nennenswert groß ist,
schaltet der Ausgang des Komparators 18 auf logisch "HIGH", sodass der erste
Zähler 22 wieder
zurück
gesetzt wird. Erst wenn die Zener-Diode 38 programmiert ist,
d.h. niederohmig ist und somit die Spannung an ihrer Kathode kleiner
als die (Referenz-)Spannung der Gleichspannungsquelle 16 wird
(und das Programmiersteuersignal "FuseInhibit" nach wie vor logisch "LOW" bleibt), schaltet
der Komparator 18 auf logisch "LOW",
wodurch der erste Zähler 22 nicht
mehr zurück
gesetzt wird. Somit wird der Zählerstand
im Takt des Taktsignals CLK hochgezählt. Bleibt die Spannung an
der Zener-Diode 38 hinreichend lange Zeit kleiner als die
Spannung des Gleichspannungsquelle 16, dann erreicht der
erste Zähler 22 seinen
maximalen Zählstand,
der durch das Overflow-Bit gekennzeichnet ist. Dieses Bit schaltet
den Bipolartransistor 26 aus und indiziert das Ende der
Programmierung
-
- 10
- Fuse
- 12
- Widerstand
- 14
- erstes
Pad
- 16
- Gleichspannungsquelle
- 18
- Komparator
- 20
- OR-Gatter
- 22
- erster
Zähler
- 24
- zweites
Pad
- 26
- Bipolartransistor
- 28
- drittes
Pad
- 30
- NOR-Gatter
- 32
- zweiter
Zähler
- 34
- Reset-Eingang
- 36
- Reset-Eingang
- 38
- Zener-Diode