DE69802927T2 - Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen - Google Patents
Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisenInfo
- Publication number
- DE69802927T2 DE69802927T2 DE69802927T DE69802927T DE69802927T2 DE 69802927 T2 DE69802927 T2 DE 69802927T2 DE 69802927 T DE69802927 T DE 69802927T DE 69802927 T DE69802927 T DE 69802927T DE 69802927 T2 DE69802927 T2 DE 69802927T2
- Authority
- DE
- Germany
- Prior art keywords
- logic
- column
- programmable
- conductors
- programmable logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 239000004020 conductor Substances 0.000 claims abstract description 80
- 230000002950 deficient Effects 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 230000007547 defect Effects 0.000 abstract description 9
- 230000008439 repair process Effects 0.000 abstract description 7
- 238000012360 testing method Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17764—Structural details of configuration resources for reliability
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17736—Structural details of routing resources
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/1778—Structural details for adapting physical parameters
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Logic Circuits (AREA)
Description
- Diese Erfindung betrifft programmierbare Logikanordnungen, insbesondere Redundanzschaltungen zum Reparieren schadhafter programmierbarer Logikanordnungen.
- Programmierbare Logikanordnungen sind integrierte Schaltungen, die so programmiert werden können, daß sie gebräuchliche Logikfunktionen ausführen. Die Techniken zur Herstellung integrierter Schaltungen sind nicht perfekt, so daß gelegentlich eine programmierbare Logikanordnung hergestellt werden kann, die einen Defekt aufweist. Sofern der Defekt nicht repariert werden kann, bevor die Logikanordnung in Gebrauch genommen wird, muß die Logikanordnung verworfen werden. Das Verwerfen einer solchen Anordnung ist verlustreich, insbesondere, wenn der Defekt relativ geringfügig ist. Infolgedessen sind verschiedene Redundanzschemata entwickelt worden, etwa diejenigen, die von Patel et al. in dem US-Patent 5 369 314 gezeigt werden, die es gestatten, eine Reserveschaltung so einzuschalten, daß ein schadhafter Teil einer Schaltung repariert wird.
- Die Schwierigkeit bei der Implementierung eines geeigneten Redundanzschemas für eine gegebene Architektur einer Logikanordnung Ist von den Eigenschaften der Architektur abhängig. Zum Beispiel gibt es Schwierigkeiten im Zusammenhang mit der Bereitstellung von Redundanz für programmierbare Logikanordnungen, die zum Verteilen von Signalen auf Logikarray-Blöcke verschachtelte Multiplexerschaltungen benutzen. Da sich in solchen Anordnungen benachbarter Logikarray-Blöcke Ressourcen zur Weiterleitung von Signalen teilen, kann das Auftreten eines Fehlers in einem Logikarray-Block einen benachbarten und ansonsten fehlerfreien Logikarray-Block beeinträchtigen. Obgleich es möglich sein mag, ein Redundanzschema zu benutzen, bei dem beide betroffenen Logikarray-Blöcke bei Detektion eines Fehlers ersetzt werden, würde ein solches Schema notwendigerweise bedeuten, daß wenigstens ein fehlerfreier Logikarray- Block umgangen wird. Wünschenswert wäre ein Redundanzschema, das die Logik-Ressourcen effizienter nutzt.
- Aus US-A-5 369 314 ist es bekannt, eine Redundanzschaltung für eine programmierbare Logikanordnung bereitzustellen, die eine redundante Spalte oder Zeile mit Logik umfaßt. Wenn sich eine Zeile oder Spalte der Logik als schadhaft herausstellt, wird die redundante Spalte oder Zeile mit Hilfe einer Schalteinrichtung in Gebrauch genommen, um Programm- und Datensignale zu dem fehlerfreien Teil umzuleiten und Ausgangssignale von den fehlerfreien Bereichen auf ihre normalen Ziele zurückzuschalten. Dieses Dokument lehrt jedoch nicht die effiziente Benutzung von Logikressourcen und lenkt insbesondere von der Verwendung mehrerer verschachtelter Multiplexerschaltungen ab.
- Es ist eine Aufgabe der vorliegenden Erfindung, eine Redundanzanordnung für programmierbare Logikanordnungen mit verschachtelten Eingangsschaltungen zu schaffen.
- Diese und weitere Ziele der Erfindung werden nach den Prinzipien der vorliegenden Erfindung dadurch erreicht, daß eine Redundanzschaltung für eine programmierbare Logikanordnung bereitgestellt wird, die verschachtelte Eingang- Multiplexerschaltungen zum Verteilen der Signale auf benachbarte Logikbereiche benutzt. Die programmierbare Logikanordnung hat wenigstens eine Zeile von Logikbereichen und hat mehrere Spalten, deren jede einen der verschachtelten Eingangs-Multiplexer und einen der Logikbereiche enthält. Ein der Zeile von Logikbereichen zugeordneter Satz von Leitern wird dazu benutzt, Signale zwischen den Logikbereichen zu übertragen.
- Jede verschachtelte Eingangs-Multiplexerschaltung verteilt Logiksignale von den Leitern in der Zeile auf benachbarte Logikbereiche. Einer der Logikbereiche, auf welche die Signale verteilt werden, liegt in derselben Spalte wie die verschachtelte Eingangs-Multiplexerschaltung. Der andere Logikbereich, auf den die Signale verteilt werden, liegt in einer benachbarten Spalte.
- In jeder Spalte ist eine Bypaßschaltung vorgesehen, um den verschachtelten Eingangs-Multiplexer und den Logikbereich dieser Spalte zum umgehen. Bei der Herstellung der Anordnung wird die Anordnung geprüft, um zu entscheiden, ob irgendeine der Spalten schadhafte Schaltungen enthält. Wenn ein Defekt in einer Spalte festgestellt wird, kann der Hersteller die Anordnung reparieren, indem er die Bypaßschaltung so konfiguriert, daß diese Spalte während des Gebrauchs des Anordnung umgangen wird.
- Bei der Programmierung der programmierbaren Logikanordnung übermittelt ein Benutzer Programmdaten an die Anordnung, die verschiedene Logikkomponenten in der Anordnung anweisen, gewünschte logische Funktionen auszuführen. Wenn eine Spalte der Schaltung einen Fehler enthält, verschiebt die vorab vom Hersteller konfigurierte Schaltung die ursprünglich für diese Spalte vorgesehen Programmdaten in eine benachbarte Spalte. Die Programmdaten, die ursprünglich für die benachbarte Spalte und jede nachfolgende Spalte der Logik in der Zeile vorgesehen waren, werden ebenfalls verschoben.
- Am Ende der Zeile ist eine Reservespalte mit Logik vorgesehen, um die verschobenen Programmdaten von der letzten Spalte der regulären Logik zu empfangen, wenn die Programmdaten für die verschiedenen Spalten der Logik verschoben werden, um eine schadhafte Spalte zu umgehen. Die Reservelogik ersetzt die Logik, die verloren geht, wenn die schadhafte Spalte umgangen wird. Im Ergebnis wird die gleiche Anzahl von Logikbereichen benutzt, unabhängig davon, ob die Anordnung im Anschluß an die Erkennung eines Fehlers repariert wird oder von Anfang an fehlerfrei war.
- Ausgangssignale von den Logikbereichen werden mit Hilfe von programmierbaren Treibern an die Leiter angelegt. Die jeder Spalte zugeordneten Treiber bilden typischerweise ein einzigartiges Muster von Verbindungen zu den Leitern. Wenn bei der Reparatur eines Fehlers Programmdaten zu einer nachfolgenden Spalte verschoben werden, werden die den Treibern zugeordneten Programmdaten ebenfalls auf die nachfolgend Spalte verschoben. In einer Ausführungsform benutzt die programmierbare Logikanordnung Programmdaten-Umleitungsschaltungen zum Umleiten der verschobenen Programmdaten für die Treiber zurück zu den Treibern in der ursprünglichen Spalte. In einer anderen Ausführungsform sind in jeder Spalte Hilfstreiber vorgesehen. Die Hilfstreiber in jeder Spalte bilden dasselbe Muster von Verbindungen zu den Leitern, wie sie von den normalen Treibern in der vorherigen Spalte gebildet werden. Wenn eine Spalte, die einen Fehler enthält, repariert wird, werden die Hilfstreiber in nachfolgenden Spalten anstelle der normalen Treiber benutzt, um sicher zu stellen, daß die Ausgangssignale der Logikbereiche in den nachfolgenden Spalten zu denselben Zielen geleitet werden, zu denen sie geleitet worden wären, wenn die Programmdaten nicht verschoben worden wären.
- Die Logikbereiche sind vorzugsweise programmierbare Logikarray-Blöcke, die jeweils mehrere programmierbare Logikelemente auf der Grundlage einer Nachschlagtabelle mit vier Eingängen oder auf der Grundlage einer Produkttermlogik enthalten.
- In einer Zeile können zwei Sätze von Logikarray-Blöcken vorgesehen sein. Bei dieser Ausführungsform kann ein einzelner Reserve-Logikarray-Block in der Mitte der Zeile vorgesehen sein. Dies reduziert den mit der Redundanz zusammenhängenden Vorspann, weil sich die beiden Sätze von Logikarray-Blöcken in der Zeile den Reserve-Logikarray-Block teilen können.
- Weitere Merkmale der Erfindung, ihre Natur und verschiede Vorteile werden verdeutlicht durch die beigefügten Zeichnungen und die nachstehende detaillierte Beschreibung der bevorzugten Ausführungsformen.
- Diese Aufgaben werden in vorteilhafter Weise gelöst, grundsätzlich durch Anwendung der in den unabhängigen Ansprüchen angegebenen Merkmale. Weitere Ausgestaltungen sind in den Unteransprüchen angegeben.
- Fig. 1 ist ein Schaltungsdiagramm eines Teils einer illustrativen programmierbaren Logikanordnung mit einer Redundanzanordnung gemäß der vorliegenden Erfindung.
- Fig. 2 ist ein detaillierteres Schaltungsdiagramm eines Teils einer programmierbaren Logikanordnung der in Fig. 1 gezeigten Art.
- Fig. 3 ist ein Schaltungsdiagramm eines Teils der programmierbaren Logikanordnung nach Fig. 2 und zeigt die verschachtelten Eingangs-Multiplexerschaltungen im näheren Detail.
- Fig. 4 ist ein Schaltungsdiagramm und zeigt die Schaltung, die dazu benutzt wird, Programmdaten zu verschiedenen Bereichen der programmierbaren Logikanordnung gemäß der vorliegenden Erfindung zu dirigieren.
- Fig. 5 ist ein Schaltungsdiagramm und zeigt die Ausgangstreiber-Verbindungen, die zwischen den Logikarray-Blöcken und horizontalen Leitern in einer programmierbaren Logikanordnung gemäß der vorliegenden Erfindung hergestellt werden.
- Fig. 6 ist ein Schaltungsdiagramm und zeigt eine Anordnung zum Verringern des mit der Bereitstellung von Redundanz zusammenhängenden Vorspanns gemäß der vorliegenden Erfindung.
- Fig. 7 ist ein Diagramm eines Datenverarbeitungssystems, in dem die programmierbare Logikanordnung mit der Redundanzschaltung gemäß der vorliegenden Erfindung benutzt werden kann.
- Programmierbare Logikanordnungen sind integrierte Schaltungen, die Logik enthalten, die von einem Benutzer rekonfiguriert oder "programmiert" werden kann, um gebräuchliche Logikfunktionen auszuführen. Auf ihrem elementarsten Niveau beruhen programmierbare Logikanordnungen auf programmierbaren Schaltern oder Verbindern. Solche programmierbaren Komponenten können Speicher mit wahlfreien Zugriff, Nur-Lese-Speicher, löschbare programmierbare Nur-Lese-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher, Sicherungen, Gegensicherungen (antifuses), ferroelektrische Elemente oder andere geeignete Technologien für programmierbare Komponenten benutzen.
- Programmierbare Logikanordnungen, die Redundanz- oder Reserverschaltungen enthalten, können von einem Hersteller im Herstellungsprozeß so konfiguriert werden, daß Teile der Schaltung, die als schadhaft festgestellt wurden, repariert werden.
- Eine integrierte Schaltung einer programmierbaren Logikanordnung mit einer Redundanzanordnung gemäß der vorliegenden Erfindung ist in Fig. 1 gezeigt. Die programmierbare Logikanordnung 10 hat vorzugsweise eine oder mehrere Zeilen von Logikarray-Blöcken 12, obgleich die Prinzipien der Erfindungen auf programmierbare Logikanordnungen anwendbar sind, irgendeinen geeigneten Typ von programmierbaren Logikbereichen enthalten. Die Logikarray-Blöcke in einer Zeile sind durch horizontale Leiter 14 verbunden. Wenn mehr als eine Zeile von Logikarray-Blöcken 12 erwünscht ist, können geeignete vertikale Leiter und zugehörige programmierbare Routerschaltungen (nicht gezeigt) dazu benutzt werden, die Logiksignale zwischen den Zeilen zu übertragen. Um die Zeichnung nicht übermäßig zu komplizieren, ist in Fig. 1 nur eine einzige Zeile von Logikarray-Blöcken 12 gezeigt worden. Weiterhin sind in Fig. 1 nicht sämtliche der Komponenten der Logikanordnung 10 gezeigt worden. Zum Beispiel sind Einzelheiten der Eingabe/Ausgabe-Schaltungen für die Anordnung 10 in Fig. 1 nicht gezeigt.
- Jeder Logikarray-Block 12 enthält vorzugsweise eine Anzahl von programmierbaren Logikelementen 16. Die Logikelemente 16 und andere programmierbare Logikschaltungen in der programmierbaren Logikanordnung 10 können von einem Benutzer dazu programmiert werden, verschiedene Logikfunktionen auszuführen. Die Logikelemente 16 können basieren auf Nachschlagtabellenlogik, Produkttermlogik oder anderen geeigneten Typen programmierbarer Logik. Falls erwünscht, können die Logikelemente 16 Registerlogik zum Registrieren verschiedener Logiksignale enthalten.
- Die programmierbare Logikanordnung 10 hat mehrere Spalten, deren jede einen Logikarray-Block 12 und eine verschachtelte Eingangs-Multiplexerschaltung 18 enthält. Verschachtelte Multiplexerschaltungen 18 werden dazu benutzt, Logiksignale von den horizontalen Leitern 14 auf die Logikarray-Blöcke 12 zu verteilen. Jede verschachtelte Eingang-Multiplexerschaltung 18 verteilt Signale über Leiter 20 auf zwei benachbarte Logikarray-Blöcke 12. Einer der Blöcke 12, auf welche die Signale verteilt werden, liegt in derselben Spalte wie die verschachtelte Eingangs-Multiplexerschaltung 18. Der andere Logikarray-Block 12, auf den die Signale verteilt werden, liegt in einer benachbarten Spalte. Obgleich Leiter wie die Leiter 14 und die Leiter 20 in Fig. 1 als einzelne Linien dargestellt sind, repräsentiert jede Linie typischerweise mehrere parallele Signalleiter.
- In jeder Zeile der Anordnung 10 ist vorzugsweise wenigstens ein Reserve-Logikarray-Block 12 und wenigstens eine verschachtelte Reserve-Eingangs-Multiplexerschaltung 18 vorgesehen. Die Lage solcher Reserveschaltungen innerhalb einer Zeile der Logikarray-Blöcke 12 ist nicht kritisch. Zum Beispiel kann die Reserveschaltung sich an irgendeinem Ende einer Zeile oder erwünschtenfalls in der Mitte einer Zeile befinden.
- Während des Herstellungsprozesses wird die Anordnung 10 vom Hersteller getestet. Wenn ein Defekt in einem der Logikarray-Blöcke 12 oder einer der verschachtelten Eingangs-Multiplexerschaltungen 18 lokalisiert wird, kann die Anordnung 10 repariert werden, indem der Logikarray-Block 12 und die verschachtelte Eingangs-Multiplexerschaltung 18 in der schadhaften Spalte mit Hilfe der Reserveschaltungen ersetzt werden.
- Das Ersetzen der schadhaften Schaltungen umfaßt typischerweise eine Konfiguration der Anordnung derart, daß Logiksignale, die ursprünglich für die Eingänge der schadhaften Schaltungen vorgesehen waren, auf nicht beeinträchtigte Schaltungen umgeleitet werden, die der schadhaften Schaltung benachbart sind. Wenn z. B. festgestellt wird, daß ein Defekt in der Spalte vorliegt, die den Logikarray-Block 12a und die verschachtelte Eingangs-Multiplexerschaltung 18a enthält (Spalte N - 1), kann eine dieser Spalte zugeordnete Bypaßschaltung 22a dazu benutzt werden, Signale, die normalerweise den Eingängen 20a des Logikarray-Blockes 12a zugeführt werden, auf Eingänge 20b des Logikarray- Blockes 12b in der Spalte N umzuleiten. Die Bypaßschaltung 22b in der Spalte N, die Bypaßschaltung 22c in der Spalte N + 1 und die Bypaßschaltungen der übrigen Spalten werden nicht benutzt.
- Jeder Logikarray-Block 12 in einer Zeile stellt typischerweise Ausgangsverbindungen zu den horizontalen Leitern 14 in der Zeile unter Verwendung eines anderen Musters von Treibern her. Infolgedessen schließt das Ersetzen der schadhaften Schaltung auch das Umleiten der Ausgangssignale von einigen der Logikarray-Blöcke ein, derart, daß die Ausgänge der reparierten Zeile von Logikarray-Blöcken mit den horizontalen Leitern 14 auf dieselbe Weise verbunden werden wie sie mit den horizontalen Leitern verbunden worden wären, wenn die Schaltung fehlerfrei wäre. Dies stellt sicher, daß die Ausgangssignale von jedem Logikarray-Block zu den gleichen Zielen geleitet werden, zu denen sie geleitet würden, wenn die Schaltung keinen Fehler enthielte. Eine reparierte Schaltung arbeitet daher genauso wie eine fehlerfreie Schaltung.
- Wenn zum Beispiel festgestellt wird, daß ein Fehler in dem Logikarray-Block 12a oder der verschachtelten Eingangs-Multiplexerschaltung 18a in der Spalte N - 1 vorliegt, kann eine Ausgangssignal-Umleitungsschaltung 24a dazu benutzt werden, die Signale von den Ausgängen 26b zu den Treiberpfaden 28a zurückzuleiten. Da es dies gestattet, zur Verbindung der Ausgänge 26b mit den Leitern 14 dasselbe Muster von Treiberverbindungen zu benutzen, daß zum Verbinden der Ausgänge 26a mit den Leitern 14 benutzt würde, wenn kein Fehler vorläge, stellt diese Anordnung sicher, daß die Ausgangssignale von den Logikarray-Blöcken 12b zu denselben Zielen geleitet werden, zu denen die Ausgangssignale von dem Logikarray-Block 12a geleitet worden wären, wenn der Logikarray-Block 12a oder die verschachtelte Eingangs-Multiplexerschaltung 18a nicht schadhaft wäre.
- Da die Ausgangssignale 26b des Logikarray-Blockes 12b zu den Treiberpfaden 28a zurückgeleitet werden, müssen die Ausgangssignale 26c durch die Ausgangssignal-Umleitungsschaltung 24b zu den Treiberpfaden 28b umgeleitet werden. Die Ausgänge der Logikarray-Blöcke 12 in den nachfolgenden Spalten links des Logikarray-Blockes 12c benutzen ähnliche Ausgangssignal-Umleitungsschaltungen 24 zum Verschieben der Ausgangssignale zu den Ausgangstreibern in vorherigen Spalten unmittelbar rechts von ihnen.
- Falls erwünscht, kann das ursprüngliche Muster von Ausgangstreibern einer Schaltung bei der Ersetzung von schadhaften Schaltungen beibehalten werden, indem andere Anordnungen von Ausgangssignal-Umleitungsschaltungen benutzt werden. Zum Beispiel kann die Anordnung von Ausgangssignal-Umleitungsschaltungen Hilfstreiberpfade 28' umfassen, die anstelle der Schaltungen normaler Treiberpfade 28 benutzt werden können. Jeder Hilfstreiberpfad 28' benutzt dasselbe Muster von Treibern zur Verbindung der Ausgänge seines zugehörigen Logikarray-Blockes mit den Leitern 14, die auch von dem normalen Treiberpfad 28 in der vorherigen Spalte benutzt werden.
- Wenn keine schadhafte Schaltung festgestellt wird, ist jeder Logikarray-Block durch seinen zugehörigen Treiberpfad 28 mit den Leitern 14 verbunden. Wenn festgestellt wird, daß eine Spalte einen Fehler enthält, werden die Logikarray- Blöcke 12 rechts von der schadhaften Spalte durch die normalen Treiberpfade 28 mit den Leitern 14 verbunden, und die Logikarray-Blöcke 12 links von der schadhaften Spalte werden mit Hilfe der Hilfstreiberpfade 28' mit den Leitern 14 verbunden. Wenn z. B. der Logikarray-Block 12a schadhaft ist, werden die Ausgänge jedes Logikarray-Blockes 12 rechts von dem Logikarray-Block 12a durch den jeweiligen normalen Treiberpfad 28 mit den Leitern 14 verbunden. Die Ausgänge des Logikarray-Blockes 12b und jedes Logikarray-Blockes 12 links von dem Logikarray-Block 12b werden dagegen durch die Hilftstreiberpfade 28' mit den Leitern 14 verbunden.
- Fig. 2 ist ein detaillierteres Schaltungsdiagramm eines Teils einer programmierbaren Logikanordnung der in Fig. 1 gezeigten Art. Der in Fig. 2 gezeigte Teil der programmierbaren Logikanordnung 30 hat eine einzige Zeile und mehrere Spalten von Logikelementen 32, die durch horizontale Leiter 34 verbunden sind. Eine Anzahl solcher Logikelemente 32 in jeder Spalte ist vorzugsweise zu einem Logikarray-Block in jeder Spalte zusammengefaßt, wie in Fig. 1 gezeigt ist. Dieses Niveau an Detail ist in Fig. 2 nicht gezeigt, um eine übermäßige Verkomplizierung der Zeichnung zu vermeiden. Die programmierbare Logikanordnung 30 enthält vorzugsweise auch mehrere Zeilen solcher Logikarray- Blöcke, deren jeder eine Anordnung von Logikelementen von der gleichen Art enthält. Die Logikarray-Blöcke in anderen Zeilen können mit der Zeile von Logikarray-Blöcken, die die Zeile der in Fig. 2 gezeigten Logikelemente 32 enthält, durch vertikale Leiter (nicht gezeigt) verbunden sein, um Signale zwischen verschiedenen Zeilen von horizontalen Leitern 34 zu übermitteln. Obgleich in der in Fig. 2 gezeigten Zeile von Logikelementen 32 nur vier Logikelemente 32 vorhanden sind, kann die Logikanordnung 30 irgendeine geeignete Anzahl von Logikelementen 32 enthalten.
- Die Logikelemente 32 können auf irgendeinem geeigneten Logiktyp beruhen, etwa Produkttermlogik oder Nachschlagtabellenlogik, und können gewünschtenfalls Registerlogik enthalten. Die Logikelemente 32 können irgendeine geeignete Anzahl von Eingängen und Ausgängen aufweisen. In der illustrativen Anordnung nach Fig. 2 haben die Logikelemente 32 Eingänge A, B, C und D, bei denen es sich z. B. um die Eingänge einer Standard-Nachschlagtabellenschaltung mit vier Eingängen handeln kann. Die Logikelemente 32 in Fig. 2 haben jeweils einen L-Ausgang und einen G-Ausgang, bei denen es sich um die Ausgänge einer Standard-Nachschlagtabellenschaltung handeln kann.
- Signale von horizontalen Leitern 34 werden Eingangs-Multiplexerschaltungen 36 über programmierbare Multiplexer 38 und lokale vertikale Leiter 40 zugeführt. Die Eingangs-Multiplexerschaltungen 36 erstrecken sich vorzugsweise über sämtliche der Logikelemente 32 in einem gegebenen Logikarray-Block. Die programmierbaren Multiplexer 38 können von einem Benutzer der Anordnung 30 programmiert werden, um ausgewählte horizontale Leiter 34 mit lokalen vertikalen Leitern 40 zu verbinden. Lokale horizontale Leiter 42 dienen dazu, Signale von den Eingangs-Multiplexerschaltungen 36 an die Logikelemente 32 zu übermitteln.
- Ein illustrativer Satz von Eingangs-Multiplexerschaltungen 36 und Logikelementen 32 ist in größeren Einzelheiten in Fig. 3 gezeigt. Wie in Fig. 3 gezeigt ist, können Signale auf den vier vertikalen Leitern 40, die jeder Eingangs-Multiplexerschaltung 36 zugeordnet sind, durch programmierbare Verbinder 43 selektiv an die kreuzenden lokalen horizontalen Leiter 42 angelegt werden. Der Betrieb der programmierbaren Verbinder 43 wird durch Daten in Speicherzellen 45 kontrolliert.
- Jeder Multiplexer 47 schaltet einen der vier horizontalen Leiter 42, die mit seinem Eingang verbunden sind, auf einen Eingang eines Logikelements 32. Jeder programmierbare Multiplexer 38 wird vorzugsweise durch eine Anzahl einzelner programmierbarer Verbinder 49 gebildet.
- Bei der in Fig. 2 gezeigten Ausführungsform gibt es vier Spalten von Logikelementen 32. Die Logikelemente 32b, 32c und 32d sind reguläre Logikelemente. Das Logikelement 32a ist ein Reserve- oder redundantes Logikelement 32. Während des Herstellungsprozesses wird die Anordnung 30 auf Fehler getestet. Wenn festgestellt wird, daß die Anordnung 30 fehlerfrei ist, braucht das Reserve-Logikelement 32a nicht benutzt zu werden. Wenn ein Fehler in einer Spalte festgestellt wird, kann der Fehler umgangen werden, indem die Logik in dieser Spalte umgangen wird. Außerdem kann die Schaltung des Reserve-Logikelements 32a so verschoben werden, daß sie die verloren gegangene Schaltung in der umgangenen Spalte (d. h., dem umgangenen Logikelement) ersetzt.
- Jedes Logikelement 32 kann Signale von vier zugehörigen Eingangs-Multiplexerschaltungen 36 empfangen. Zum Beispiel kann das Logikelement 32c Signale von den Eingangs-Multiplexerschaltungen 36e und 36f empfangen (über die lokalen horizontalen Leiter 42a, die an die Eingänge A und C des Logikelements 32c angeschlossen sind) und von den Eingangs-Multiplexerschaltungen 36g und 36h (über die lokalen horizontalen Leiter 43b', die mit Multiplexern 44 an die Eingänge B und D des Logikelements 32c angeschlossen sind).
- Benachbarte Eingangs-Multiplexerschaltungen 36 sind miteinander verschachtelt, weil sie einen gemeinsamen Satz von lokalen horizontalen Leitern 42 teilen. Zum Beispiel ist die Eingangs-Multiplexerschaltung 36e mit der Eingangs-Multiplexerschaltung 36f verschachtelt, weil die lokalen horizontalen Leiter 42, die durch den Eingangs-Multiplexer 36e hindurchgehen, auch durch den Eingangs- Multiplexer 36f hindurchgehen.
- Die lokalen horizontalen Leiter 42a liefern Signale von den Eingangs-Multiplexerschaltungen 36 direkt an die Logikelement-Eingänge A und C. Lokale horizontale Leiter 42b liefern Signale von den Eingangs-Multiplexerschaltungen 36 über Bypaß-Multiplexer 44 an die Logikelement-Eingänge B und D.
- Während des Herstellungsprozesses wird die Anordnung 30 getestet, um zu entscheiden, ob die Anordnung 30 schadhafte Schaltungen enthält oder nicht. Wenn der Test ergibt, daß die Anordnung 30 fehlerfrei ist, wird kein Bypaß benötigt. Die Bypaß-Multiplexer 44 werden daher so konfiguriert, daß sie Signale von den lokalen horizontalen Leitern 42b durchlassen, die direkt mit ihren Eingängen mit Logikelement-Eingängen B und D über Multiplexer-Ausgänge 46 verbunden sind. Wenn der Test ergibt, daß die Anordnung 30 einen Fehler in einem der Logikelemente 32 oder der Eingangs-Multiplexerschaltungen 36 einer Spalte enthält, konfiguriert der Hersteller die entsprechenden Bypaß-Multiplexer 44 so, daß die schadhafte Logik in dieser Spalte umgangen wird.
- Wenn z. B. ein Fehler in dem Logikelement 32c oder in der verschachtelten Eingangs-Multiplexerschaltung 36e oder 36f in Spalte 2 festgestellt wird, können die Bypaß-Multiplexer 44' so konfiguriert werden, daß sie die Signale von den lokalen horizontalen Leitern 42b' über Bypaßleiter 48 an die B- und D-Eingänge des Logikelements 32b in Spalte 3 weiterleiten, statt über die Ausgänge 46' zu den B- und D-Eingängen des Logikelements 32c in Spalte 2.
- Die Pfade, die Programmdaten zu der Logik der Anordnung 30 übermitteln, werden vom Hersteller vorzugsweise so konfiguriert, daß die Programmdaten, mit denen der Benutzer die Anordnung 30 programmiert, bei der Programmierung der Anordnung zu der passenden Logik weitergeleitet werden. Zum Beispiel werden die Programmdaten, die für die programmierbaren Multiplexer 38' benutzt worden wären, die den verschachtelten Eingangs-Multiplexerschaltungen 36e und 36f zugeordnet sind, wenn die Schaltungen 36e und 36f benutzt worden wären, zu den programmierbaren Multiplexern 38" geleitet. Die Programmdaten, die zum Konfigurieren des Logikelements 32c benutzt worden wären, werden dem Logikelement 32b zugeführt. Die Programmdaten, die dazu benutzt worden wären, das Muster der programmierbaren Verbindungen zwischen den lokalen vertikalen Leitern 40' und den lokalen horizontalen Leitern 42a und 42b" in den verschachtelten Eingangs-Multiplexern 36e und 36f der Spalte 2 herzustellen, werden den verschachtelten Eingangs-Multiplexerschaltungen 36c und 36d in Spalte 3 zugeführt.
- Eine andere Änderung, die hier vorgenommen wird, wenn eine schadhafte Logikschaltung umgangen wird, betrifft die Pfade der Ausgangssignale der Logikelemente zu den Leitern 34. Wenn keine fehlerhafte Schaltung vorliegt, verbinden die Ausgangs-Multiplexer 50, die jedem Logikelement 32 zugeordnet sind, die L- und G-Ausgänge dieses Logikelements 32 direkt mit den horizontalen Leitern 34. Zum Beispiel übermitteln die Multiplexer 50' die L- und G-Ausgänge des Logikelements 32c über Treiber 52' und Pfade 54' an die horizontalen Leiter 34, und die Multiplexer 50" übermitteln die L- und G-Ausgänge des Logikelements 32b über Treiber 52" und Pfade 54" an die horizontalen Leiter 34. Wenn festgestellt wird, daß die Anordnung 30 eine schadhafte Schaltung enthält, werden die Multiplexer 50 so konfiguriert, daß die Ausgangssignale an die horizontalen Leiter 34 mit denselben Treiber-Mustern übermittelt werden, die benutzt würden, wenn es keine schadhafte Schaltung gäbe.
- Wenn z. B. ein Fehler in dem Logikelement 32c oder in den verschachtelten Eingangs-Multiplexerschaltungen 36e oder 36f in Spalte 2 festgestellt wird, werden die Multiplexer 50' und die Pfade 58' dazu benutzt, die Ausgangssignale von dem Logikelement 32b in Spalte 3 auf die Treiber 52' umzuleiten, die dem umgangenen Logikelement 32c in Spalte 2 zugeordnet sind. Ähnlich leiten die Multiplexer 50" die Ausgangssignale von dem Reserve-Logikelement 32a in der red- undanten oder Reserve-Spalte zurück zu den Treibern 52", die ursprünglich dem Logikelement 32b in Spalte 3 zugeordnet waren. Diese Anordnung erlaubt es, daß Muster der Verbindungen 56 zwischen den Pfaden 54 und den horizontalen Leitern 34, die jedem Satz von Treibern 52 zugeordnet sind, selbst dann beibehalten werden, wenn einige der Schaltungen der Anordnung 30 beim Ersetzen von schadhaften Schaltungen durch Reserveschaltungen umgeordnet wurden.
- Jeder Satz von Treiberverbindungen 56 treibt typischerweise ein anderes Muster von horizontalen Leitern 34. Die Beibehaltung des Musters der benutzten Treiberverbindungen 56 stellt folglich sicher, daß die Logikelement-Ausgangssignale für ein gegebenes Logikelement 32 ihre vorgesehenen Ziele erreichen.
- Die Treiber 54 sind vorzugsweise in einen Einschaltzustand oder einen Ausschaltzustand programmierbar. Falls erwünscht, kann jeder Treiber 54 mehr als einen Leiter 34 treiben. Anders als die Programmdaten für das Logikelement 32 und den Eingangs-Multiplexer 36 einer schadhaften Spalte, die auf ein nicht schadhaftes Logikelement 32 und einen nicht schadhaften Eingangs-Multiplexer in einer benachbarten Spalte verschoben werden, werden die Programmdaten für die Treiber in der schadhaften Spalte letztlich nicht verschoben. Dies ist in Fig. 4 gezeigt.
- Die Programmieranordnung nach Fig. 4 hat mehrere vertikale Ketten von Programrnspeicherzellen 60. Die in Speicherzellen 60 geladenen Programmdaten konfigurieren die programmierbare Logik, der die Zellen 60 zugeordnet sind. Jede Spalte von Zellen 60 ist einer anderen Spalte von Logikelementen 32, Eingangs-Multitplexerschaltungen 36 und programmierbaren Mutliplexern 38 in der in Fig. 2 gezeigten Anordnung 30 zugeordnet. Zum Beispiel kann die redundante Spalte von Zellen 60 in Fig. 4 dem redundanten Logikelement 32a in Fig. 2 zugeordnet sein, die Spalte 3 der Zellen 60 kann dem Logikelement 32b zugeordnet sein, die Spalte 2 der Zellen 60 kann dem Logikelement 32c zugeordnet sein, und die Spalte 1 der Zellen 60 kann dem Logikelement 32d zugeordnet sein.
- Um die Anordnung zu programmieren, werden die zu der Eingangsleitung 62 zugeführten Programmdaten seriell in die Datenregister 64 eingetaktet. Wenn keine schadhafte Schaltung festgestellt wird, werden die Multiplexer 68 so konfiguriert, daß sie die Programmdaten für die Spalten 1, 2 und 3 in die Datenregister 66b, 66c und 66d verschieben. Die Programmdaten in den Registern 66b, 66c und 66d werden jeweils in die vertikalen Ketten von Zellen 60 in Spalten 3, 2, und 1 eingetaktet. Wenn eine schadhafte Schaltung festgestellt wird (z. B. in Spalte 2), werden die Mutiplexer 68 so konfiguriert, daß die Programmdaten, die norrmalerweise in der vertikalen Kette von Zellen 60 in Spalte 2 nach unten gelaufen wären, zu der Spalte 3 verschoben werden, und die Programmdaten, die normalerweise in der vertikalen Kette von Zellen 60 in Spalte 3 nach unten gelaufen werden, zu der redundanten oder Reserve-Spalte verschoben werden. Die Programmdaten für Spalte 1 bleiben unbeeinflußt.
- Das Verschieben der Programmdaten für die Logikelemente 32, die Eingangs- Multiplexerschaltungen 36 und die programmierbaren Multiplexer 38 ermöglicht es, daß die Logikfunktionen, die ursprünglich von der als schadhaft festgestellten Schaltung auszuführen waren, von fehlerfreien Schaltungen ausgeführt werden. Die Multiplexer-Anordnung nach Fig. 2 leitet die Ausgangssignale von jedem verschobenen Logikelement während des Gebrauchs der Anordnung zu der ursprünglichen Spalte zurück, so daß die ursprünglichen Treiber benutzt werden. Dies setzt voraus, daß die Programmdaten für diese Treiber während der Programmierung der Anordnung zurück zu der ursprünglichen Spalte verschoben werden, die die schadhafte Schaltung enthält, statt in der Spalte zu verbleiben, in die sie verschoben wurden.
- Wie in Fig. 4 gezeigt ist, werden die Programmdaten für die verschiedenen Komponenten der Anordnung seriell geladen. Zum Beispiel können sämtliche Programmdaten für die Treiber in einer Zeile von Logikarray-Blöcken geladen werden, bevor die Programmdaten für die Logikelemente, die Eingangs-Multiplexerschaltungen und die programmierbaren Multiplexer 38 für diese Zeile geladen werden. Verschiebe-Multiplexer 70 werden dazu benutzt, die Treiber-Programmdaten selektiv zu der Zeile zurückzuleiten, in der diese Daten ursprünglich, vor der Erkennung des Fehlers, benutzt werden sollten. Wenn z. B. die Spalte 2 eine schadhafte Schaltung enthält, werden die ursprünglich für die Treiber in Spalte 2 vorgesehenen Programmdaten durch Multiplexer 68 mit dem Rest der Programmdaten für die verschobene Spalte 2 nach Spalte 3 verschoben, jedoch über den Pfad 72 und den Multiplexer 70' in die Spalte 2 und in die passenden Zellen 60' zurückgeleitet.
- Da die Programmdaten seriell vom oberen Ende jeder Spalte von Zellen 60 aus geladen werden, bewirkt das Konfigurieren des Multiplexers 70' zum Umleiten der Programmdaten für die Treiber der Spalte 2 zurück von Spalte 2 nach Zeile 2, das alle anderen Programmdaten, die durch den Multiplexer 70' laufen, nach Spalte 2 zurückgeleitet werden, selbst dann, wenn diese Daten für Schaltungen der Spalte 3 bestimmt sind. Deshalb wird der Multiplexer 74' dazu benutzt, sicher zu stellen, daß die Programmdaten, die vom Multiplexer 70 nach Spalte 2 zurückgeleitet werden, wieder zur Spalte 3 zurückgeleitet werden, so daß die zu Spalte 3 gehörende programmierbare Logik korrekt programmiert wird. Die übrigen Multiplexer 70 und 74 werden ebenfalls so konfiguriert, daß sich die Programmdaten für die Treiber und die anderen Schaltungskomponenten an die passenden Zellen übermitteln, um die Anordnung 30 zu programmieren.
- Die Programmdaten für die Treiber 52 brauchen nicht zu ihrer ursprünglichen Spalte zurückgeleitet zu werden, wenn jede Spalte der Logik einen Satz von Hilfstreibern aufweist, der benutzt werden kann, wann immer die Logik während der Reparatur eines schadhaften Logikbereiches verschoben wird. Eine geeignete Anordnung dieser Art ist in Fig. 5 gezeigt. Wie in Fig. 5 gezeigt ist, können die L- und G-Ausgänge der Logikelemente 76 entweder über die normalen Treiber 80 oder über die Hilfstreiber 82 mit den horizontalen Leitern 78 verbunden werden. Wenn eine Spalte keine Fehler hat, so werden die Ausgangssignale der Logikelemente 76 in dieser Spalte den horizontalen Leitern 78 über die normalen Treiber 80 zugeführt.
- Wenn z. B. keine Fehler in der Logik der Spalte 2 vorhanden sind, werden die L- und G-Ausgänge des Logikelements 76a über die normalen Treiber 80 und die Verbindungen 84 und 86 an die horizontalen Leiter 78 angelegt. Wenn ein Fehler in Spalte 2 vorliegt, werden die Logikfunktionen, die normalerweise von dem Logikelement 76a ausgeführt werden, von dem Logikelement 76b ausgeführt. Dies wird dadurch erreicht, daß die Anordnung so konfiguriert wird, daß die ursprünglich für die Logik in Spalte 2 vorgehenden Programmdaten bei der Programmierung der Anordnung nach Spalte 3 verschoben werden. Um in Spalte 3 dasselbe Muster von Ausgangstreiberverbindungen beizubehalten, das in Spalte 2 benutzt worden wäre, werden die L- und G-Ausgänge des Logikelements 76b über die Hilfstreiber 82 und die Verbindungen 88 und 90 an die horizontalen Leiter 78 angelegt.
- Die Hilfstreiber 82, die jeder Spalte zugeordnet sind, stellen dieselben Verbindungen zu den horizontalen Leitern 78 her wie die normalen Treiber 80, die der vorherigen Spalte zugeordnet sind (d. h. der nächsten Spalte nach rechts). Zum Beispiel sind die Verbindungen 88 und 90, die den Hilfstreibern 82 für die Lund G-Ausgänge in Spalte 3 zugeordnet sind, mit denselben horizontalen Leitern verbunden wie die Verbindungen 84 und 86, die den regulären Treibern 80 für die L- und G-Ausgänge in Spalte 2 zugeordnet sind. Wenn Spalte 2 einen Fehler enthält, benutzt das Logikelement 76 in Spalte 1 die normalen Treiber 80, und das Logikelement in Spalte 2 wird nicht benutzt. Die Logikelemente in Spalte 3 und in der redundanten Spalte benutzen die Hilfstreiber 82.
- Wie in Fig. 2 gezeigt ist, handelt es sich bei den Eingangs-Multiplexerschaltungen 36a und 36j um "Abschlußteile". Abschlußteile sind aktive Eingangs-Multiplexerschaltungen, die Symmetrie in dem Layout der Anordnung 36 herstellen und die Programmierung der Anordnung 30 erleichtern, indem sie potentielle Software-Anpassungsprobleme vermindern. Die Eingangs-Multiplexerschaltung 36a sorgt für Symmetrie durch Ausbalancieren der Eingangs-Multiplexerschaltung 36d, die sich auf der entgegengesetzten Seite des Logikelements 32a befindet, und die Eingangs-Multiplexerschaltung 36j sorgt für Symmetrie durch Ausbalancieren der Eingangs-Multiplexerschaltung 36g, die sich auf der entgegengesetzten Seite des Logikelements 32d befindet.
- Wenn ein Fehler in einem Eingangs-Multiplexer festgestellt wird, der einem Abschlußteil benachbart ist, werden die Programmdaten etwas anders verschoben als wenn ein Fehler in der Mitte einer Zeile der Logikelemente festgestellt wird. Insbesondere werden die Programmdaten für vier Logikkomponenten verschoben (ein Logikelement und drei Eingangs-Multiplexerschaltungen) und nicht die Programmdaten für drei Komponenten (ein Logikelement und zwei Eingangs- Multiplexerschaltungen). Wenn z. B. ein Fehler in der Eingangs-Multiplexerschaltung 36i der Anordnung 30 in Fig. 2 festgestellt wird, werden die Programmdaten für die folgenden Bereiche der Logik verschoben: Eingangs-Multiplexerschaltung 36i (verschoben nach Eingangs-Multiplexerschaltung 36g), Logikelement 32d (verschoben nach Logikelement 32c), Eingangs-Multiplexerschaltung 36h (verschoben nach Eingangs-Multiplexerschaltung 361) und Eingangs-Multiplexerschaltung 36g (verschoben nach Eingangs-Multiplexerschaltung 36e). Die Schaltanordnung ist äquivalent zum Verschieben nur der Programmdaten, die zu der Eingangs-Multiplexerschaltung 36i gehören.
- In bestimmten Situationen mag es wünschenswert sein, die Kosten für den Overhead (Vorspann) zu reduzieren, der mit der Bereitstellung von Reserveschaltungen zusammenhängt. Wie in Fig. 6 gezeigt ist, kann die programmierbare Logikarray-Anordnung 92 ein Array von Logikbereichen 94 enthalten, die jeweils zwei Gruppen von Logikarray-Blöcken (GOLs; Groups Of Logic array blocks) 96 aufweisen. Jede GOL 96 enthält zwei Sätze von Logikarray-Blöcken (LABs) 98. Reserve-Logikarray-Blöcke 100 können in jedem Logikbereich 94 in der Mitte der beiden Sätze von Logikarray-Blöcken 98 je Zeile vorgesehen sein. Ein Redundanzschema wie das in Fig. 2 gezeigte kann dazu benutzt werden, Logikbereiche 94 mit Hilfe der Reserve-Logikarray-Blöcke 100 zu reparieren. Da die Reserve-Logikarray-Blöcke 100 zentral angeordnet sind, braucht für jede Zeile, die zwei Sätze von Logikarray-Blöcken 98 enthält, nur ein einziger Reserve-Logikarray-Block vorgesehen zu sein, statt zwei solcher Reserve-Logikarray- Blöcke 100, wodurch der Overhead reduziert wird.
- Die vorstehenden Anordnungen werden typischerweise in programmierbaren Logikanordnungen benutzt, die Teil größerer Systeme sind. Fig. 7 zeigt eine programmierbare Logikanordnung 102, die die Redundanzschaltung nach dieser Erfindung enthält, im Gebrauch in einem digitalen Datenverarbeitungssystem 104. Das Datenverarbeitungssystem 104 kann eine oder mehrere der folgenden Komponenten umfassen: einen Prozessor 106, einen Speicher 108, I/O-Schaltungen 110 und Peripherietreiber 112. Diese Komponenten sind durch einen Systembus 114 verbunden und befinden sich auf einer Schaltungsplatine 116, die in dem System 104 enthalten ist.
- Das System 104 kann in einer großen Bandbreite von Anwendungen eingesetzt werden, etwa Computervernetzung, Datenvernetzung, Instrumentierung, Videoverarbeitung, digitale Signalverarbeitung oder irgendeiner anderen Anwendung, bei der der Vorteil der Verwendung programmierbarer Logik erwünscht ist. Die programmierbare Logikanordnung 102 kann dazu benutzt werden, eine Vielzahl verschiedener Logikfunktionen auszuführen. Zum Beispiel kann die programmierbare Logikanordnung 102 als ein Prozessor oder Controller konfiguriert sein, der mit dem Prozessor 106 zusammenarbeitet. Die programmierbare Logikanordnung 102 kann auch als ein Verwalter zur Verwaltung des Zugriffs auf eine geteilte Ressource im System 104 benutzt werden. In noch einem anderen Beispiel kann die programmierbare Logikanordnung 102 als eine Schnittstelle zwischen dem Prozessor 106 und eine der anderen Komponenten in dem System 104 konfiguriert sein.
- Die programmierbaren Verbindungen, die in den programmierbaren Logikanordnungen gemäß der vorliegenden Erfindung zwischen den verschiedenen Komponenten hergestellt werden, können auf irgendeine von vielen unterschiedlichen Weise implementiert werden. Zum Beispiel kann jede programmierbare Verbindung ein relativ einfacher programmierbarer Verbinder wie etwa ein Schalter oder eine Vielzahl von Schaltern zur Verbindung irgendeines von mehreren Eingängen mit einem Ausgang sein. Eine solche Verbindung kann konfiguriert werden, indem eine Speicherzelle benutzt wird, etwa eine Speicherzelle mit wahlfreiem Zugriff. Alternativ können die programmierbaren Verbinder etwas komplexere Elemente sein, die in der Lage sind, sowohl Verbindungen herzustellen als auch logische Operationen auszuführen (z. B. durch logische Kombination mehrerer ihrer Eingänge). Zum Beispiel kann jede programmierbare Verbindung Produkttermlogik benutzen, um Funktionen wie etwa AND, NAND, OR oder NOR zu implementieren. Beispiele für Komponenten, die zur Implementierung von programmierbaren Verbindungen geeignet sind, sind löschbare programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare programmierbare Nur-Lese- Speicher (EEPROMs), Durchgangstransistoren, Transmissionsgatter, Gegensicherungen, Laser-Sicherungen, metall-optionale Links, etc. Diese programmierbaren Komponenten können durch verschiedene programmierbare Funktionssteuerelemente oder Speicherzellen gesteuert werden, die die Konfigurationsdaten speichern, die zur Steuerung der programmierbaren Komponenten und der verschiedenen programmierbaren Logikschaltungen benutzt werden. Beispiele für geeignete Funktionssteuerelemente umfassen statische Speicherzellen mit wahlfreiem Zugriff (SRAM), dynamische Speicherzellen mit wahlfreiem Zugriff (DRAM), FIFO-Zellen, EPROMs, EEPROMs, Funktionsteuerregister (z. B. wie in " dem US-Patent 3 473 160 von Wahlstrom), ferroelektrische Speicher, Sicherungen, Gegensicherungen oder dergleichen. Aus den verschiedenen oben genannten Beispielen ist ersichtlich, daß diese Erfindung sowohl bei einmal programmierbaren Anordnungen als auch bei wiederprogrammierbaren Anordnungen anwendbar ist.
- Das vorstehende dient lediglich zur Illustration der Prinzipien dieser Erfindung, und verschiedene Abwandlungen können vom Fachmann vorgenommen werden, ohne daß der Rahmen der Erfindung verlassen wird.
Claims (18)
1. Programmierbare Logikanordnung (10, 30, 92, 102), die repariert werden
kann, wenn ein Hersteller feststellt, daß die Anordnung einen Fehler aufweist,
mit:
mehreren regulär programmierbaren Logikbereichen (12) und wenigstens einem
programmierbaren Reserve-Logikbereich, die in einer Zeile angeordnet sind,
mehreren Leitern (14), die der Zeile dieser Logikbereiche (12) zugeordnet sind,
mehreren verschachtelten Eingangs-Multiplexerschaltungen (18), deren jede
zwischen zwei benachbarte Logikbereiche (12) in der Zeile geschaltet ist und
Signale von den Leitern (14) auf diese beiden Logikbereiche (12) verteilt, wobei die
programmierbare Logikanordnung (10, 30, 92, 102) mehrere Spalten aufweist,
die jeweils eine der verschachtelten Eingangs-Multiplexerschaltungen (18) und
einen der Logikbereiche (12) enthalten, und
mehreren Bypaßschaltungen (22), die jeweils einer Spalte zugeordnet sind, zum
Umgehen der verschachtelten Eingangs-Multiplexerschaltung (18) und des
Logikbereiches (12) in dieser Spalte, wenn der Hersteller feststellt, daß ein Fehler
in dieser Spalte vorliegt, wobei im Falle eines Fehlers der programmierbare
Reserve-Logikbereich dazu benutzt wird, die in dem umgangenen Logikbereich (12)
verloren gegangene Schaltung zu ersetzen.
2. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, mit
einer Programmdaten-Verschiebeschaltung zum Verschieben der
Programmdaten für die Logikbereiche (12) und die verschachtelten Eingangs-Multiplexer (18)
in Spalten, die keine Fehler enthalten, wenn ein Fehler in einer der Spalten
vorliegt.
3. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 2, mit
einem normalen Satz von Ausgangstreibern in jeder Spalte, der dem Logikbereich
in dieser Spalte zugeordnet ist, zur Bereitstellung von Ausgangssignalen
von dem Logikbereich an die Leiter (14).
4. Programmierbare Logikanordnung (10. 30, 92, 102) nach Anspruch 3, mit
einer Ausgangssignal-Umleitungsschaltung (24), die jeder Spalte zugeordnet ist,
zum Umleiten von Ausgangssignalen von jedem Logikbereich zu entweder (1)
den normalen Treibern in derselben Spalte wie der Logikbereich, wenn die in
diesem Logikbereich benutzten Programmdaten nicht durch die
Programmdaten-Verschiebeschaltung verschoben sind, oder (2) den normalen Treibern in
einer benachbarten Spalte, wenn die in diesem Logikbereich benutzten
Programmdaten durch die Programmdaten-Verschiebeschaltung von der
benachbarten Spalte verschoben worden sind.
5. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 2, mit:
einem Hilfssatz von Ausgangstreibern in jeder Spalte, der dem Logikbereich in
dieser Spalte zugeordnet ist, zum Bereitstellen von Ausgangssignalen von dem
Logikbereich an die Leiter unter Verwendung eines Musters von Verbindungen
zu den Leitern, daß dasselbe ist, wie dasjenige, das für die normalen Treiber in
einer benachbarten Spalte benutzt wird, und
einer Ausgangssignal-Umleitungsschaltung (24), die jeder Spalte zugeordnet ist,
zum Umleiten von Ausgangssignalen von dem Logikbereich in jeder Spalte zu
den Leitern, unter Verwendung von entweder (1) den normalen Treibern in der
Spalte, wenn die in dem Logikbereich benutzten Programmdaten nicht durch die
Programmdaten-Verschiebeschaltung verschoben worden sind, oder (2) der
Hilfstreiber in der Spalte, wenn die in dem Logikbereich benutzten
Programmdaten durch die Programmdaten-Verschiebeschaltung von einer benachbarten
Spalte verschoben worden sind.
6. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 2, mit:
Treibern (50), die jeder Spalte zugeordnet sind, zum Bereitstellen von
Ausgangssignalen von dem Logikbereich in jeder Spalte an die Leiter (34), und
einer Programmdaten-Umleitungsschaltung zum Umleiten der Programmdaten
für die Treiber, die zu einer einen Fehler aufweisenden Spalte gehören, zurück
zu dieser Spalte, nachdem die Programmdaten durch die
Programmdaten-Verschiebeschaltung zu einer anderen Spalte verschoben worden sind.
7. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, bei
der die verschachtelten Eingangs-Multiplexerschaltungen (18) jeweils zwei
Eingangs-Multiplexerschaltungen (36) aufweisen, wobei die programmierbare
Logikanordnung weiterhin mehrere programmierbare Multiplexer aufweist, die
jeweils einer der Eingangs-Multiplexerschaltungen zugeordnet sind.
8. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 7, bei
der jede Eingangs-Multiplexerschaltung aufweist:
mehrere lokale vertikale Leiter, die durch die programmierbaren Multiplexer mit
den Leitern verbunden sind,
mehrere lokale horizontale Leiter, die selektiv mit diesen lokalen vertikalen
Leitern verbunden sind, und
wenigstens einen Multiplexer, der einen der mehreren lokalen horizontalen
Leiter selektiv mit einem der benachbarten Logikbereiche verbindet.
9. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, bei
der die Bypaßschaltung (22) wenigstens einen Bypaß-Multiplexer (44) in jeder
Spalte aufweist, der einen Eingang hat, der Signale von den verschachtelten
Eingangs-Multiplexern (18) in derselben Spalte aufnimmt, und einen anderen
Eingang, der Signale von dem verschachtelten Eingangs-Multiplexer in einer
vorherigen Spalte aufnimmt, wobei das Ausgangssignal des Bypaß-Multiplexers
(44) dem Logikbereich in einer nachfolgenden Spalte zugeführt wird.
10. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, bei
der die Logikbereiche Logikelemente aufweisen.
11. Programmierbare Logikanordnung (10, 20, 92, 102) nach Anspruch 10, mit
mehreren Zeilen von Logikelementen, die jeweils derselben Vielzahl von Leitern
zugeordnet sind.
12. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, bei
der die Logikbereiche Logikarray-Blöcke aufweisen, deren jeder eine Anzahl von
Logikelementen enthält.
13. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 12, mit:
mehreren Zeilen der Logikarray-Blöcke und
mehreren Sätzen der Leiter, wobei jeder Satz von Leitern einer zugehörigen Zeile
der Logikarray-Blöcke zugeordnet ist.
14. Programmierbare Logikanordnung (10, 30, 92, 102) nach Anspruch 1, bei
der die Logikbereiche Logikarray-Blöcke aufweisen, deren jeder eine Anzahl von
Logikelementen enthält, und die programmierbare Logikanordnung weiterhin
aufweist:
zwei Sätze der Logikarray-Blöcke, die in einer Zeile angeordnet sind, und
einen Reserve-Logikarray-Block, der in der Mitte der Zeile angeordnet ist, zur
Verwendung durch jeden der Sätze von Logikarray-Blöcken bei der Reparatur
defekter Schaltungen.
15. Digitales Verarbeitungssystem (104) mit:
einem Prozessor (106),
einem mit dem Prozessor verbundenen Speicher (108) und
einer programmierbaren Logikanordnung (102), die mit dem Prozessor und dem
Speicher verbunden ist, und die repariert werden kann, wenn ein Hersteller
feststellt, daß die programmierbare Logikanordnung einen Fehler aufweist, wobei
die programmierbare Logikanordnung aufweist:
mehrere regulär programmierbare Logikbereiche (12) und wenigstens einen
programmierbaren Reserve-Logikbereich, die in einer Zeile angeordnet sind,
mehrere Leiter (14), die der Zeile dieser Logikbereiche (12) zugeordnet sind,
mehrere verschachtelte Eingangs-Multiplexerschaltungen (18), deren jede
zwischen zwei benachbarte Logikbereiche (12) in der Zeile geschaltet ist und
Signale von den Leitern auf diese beiden Logikbereiche verteilt, wobei die
programmierbare Logikanordnung mehrere Spalten aufweist, die jeweils eine der
verschachtelten Eingangs-Multiplexerschaltungen (18) und einen der Logikbereiche
(12) enthalten, und
mehrere Bypaßschaltungen (24), die jeweils einer zugehörigen Spalte zugeordnet
sind, zum selektiven Umgehen der verschachtelten
Eingangs-Multiplexerschaltungen (18) und des Logikbereiches (12) in dieser Spalte, wenn der Hersteller
feststellt, daß ein Fehler in dieser Spalte vorliegt, wobei im Fall eines Fehlers der
programmierbare Reserve-Logikbereich dazu benutzt wird, die in dem
umgangenen Logikbereich (12) verloren gegangene Schaltung zu ersetzen.
16. Digitales Verarbeitungssystem (104) nach Anspruch 15, mit einer
Schaltungsplatine (116), auf welcher der Speicher (108), der Prozessor (106) und die
programmierbaren Logikanordnungen (102) montiert sind.
17. Digitales Verarbeitungssystem (104) nach Anspruch 15, mit einer
Eingangs/Ausgangs-Schaltung (110), die mit der programmierbaren
Logikanordnung (102), dem Prozessor (106) und dem Speicher (108) verbunden ist.
18. Digitales Verarbeitungssystem (104) nach Anspruch 15, mit
Peripherie-Treibern (112), die mit der programmierbaren Logikanordnung (102), dem Prozessor
(106) und dem Speicher (108) verbunden sind.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4761097P | 1997-05-23 | 1997-05-23 | |
PCT/US1998/010301 WO1998053401A1 (en) | 1997-05-23 | 1998-05-20 | Redundancy circuitry for programmable logic devices with interleaved input circuits |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69802927D1 DE69802927D1 (de) | 2002-01-24 |
DE69802927T2 true DE69802927T2 (de) | 2002-08-08 |
Family
ID=21949943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69802927T Expired - Lifetime DE69802927T2 (de) | 1997-05-23 | 1998-05-20 | Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen |
Country Status (5)
Country | Link |
---|---|
US (3) | US6107820A (de) |
EP (1) | EP0983549B1 (de) |
JP (1) | JP3865789B2 (de) |
DE (1) | DE69802927T2 (de) |
WO (1) | WO1998053401A1 (de) |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69802927T2 (de) * | 1997-05-23 | 2002-08-08 | Altera Corp. ( A Delaware Corporation), San Jose | Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen |
US6126451A (en) * | 1997-06-02 | 2000-10-03 | Compaq Computer Corporation | SCSI connector |
US6084427A (en) | 1998-05-19 | 2000-07-04 | Altera Corporation | Programmable logic devices with enhanced multiplexing capabilities |
EP1162747B1 (de) * | 2000-04-26 | 2012-02-29 | Altera Corporation | Leitungssegmentierung in programmierbaren logischen Vorrichtungen mit redundanten Schaltungen |
NZ508052A (en) * | 2000-11-09 | 2003-06-30 | Derek Ward | Programmable controller |
EP1227385A3 (de) * | 2001-01-24 | 2005-11-23 | Matsushita Electric Industrial Co., Ltd. | Integrierte Halbleiterschaltung |
US6965249B2 (en) * | 2001-10-15 | 2005-11-15 | Altera Corporation | Programmable logic device with redundant circuitry |
US6803782B2 (en) * | 2002-03-21 | 2004-10-12 | John Conrad Koob | Arrayed processing element redundancy architecture |
FR2846491B1 (fr) * | 2002-10-25 | 2005-08-12 | Atmel Corp | Architecture comprenant des cellules de remplacement pour reparer des erreurs de conception dans des circuits integres apres fabrication |
US7111213B1 (en) | 2002-12-10 | 2006-09-19 | Altera Corporation | Failure isolation and repair techniques for integrated circuits |
US7062685B1 (en) | 2002-12-11 | 2006-06-13 | Altera Corporation | Techniques for providing early failure warning of a programmable circuit |
US7024327B1 (en) | 2002-12-18 | 2006-04-04 | Altera Corporation | Techniques for automatically generating tests for programmable circuits |
US7058534B1 (en) | 2003-03-19 | 2006-06-06 | Altera Corporation | Method and apparatus for application specific test of PLDs |
US7215140B1 (en) | 2003-05-30 | 2007-05-08 | Altera Corporation | Programmable logic device having regions of non-repairable circuitry within an array of repairable circuitry and associated configuration hardware and method |
US6879207B1 (en) * | 2003-12-18 | 2005-04-12 | Nvidia Corporation | Defect tolerant redundancy |
US7180324B2 (en) | 2004-05-28 | 2007-02-20 | Altera Corporation | Redundancy structures and methods in a programmable logic device |
ATE412932T1 (de) * | 2004-09-03 | 2008-11-15 | Derek Ward | Verbesserungen an numerischen steuerungen und verwandten elektronischen geräten |
US7277346B1 (en) | 2004-12-14 | 2007-10-02 | Altera Corporation | Method and system for hard failure repairs in the field |
US7265573B1 (en) | 2004-12-18 | 2007-09-04 | Altera Corporation | Methods and structures for protecting programming data for a programmable logic device |
US7265576B1 (en) | 2005-06-14 | 2007-09-04 | Xilinx, Inc. | Programmable lookup table with dual input and output terminals in RAM mode |
US7253658B1 (en) | 2005-06-14 | 2007-08-07 | Xilinx, Inc. | Integrated circuit providing direct access to multi-directional interconnect lines in a general interconnect structure |
US7804719B1 (en) | 2005-06-14 | 2010-09-28 | Xilinx, Inc. | Programmable logic block having reduced output delay during RAM write processes when programmed to function in RAM mode |
US7202698B1 (en) * | 2005-06-14 | 2007-04-10 | Xilinx, Inc. | Integrated circuit having a programmable input structure with bounce capability |
US7375552B1 (en) | 2005-06-14 | 2008-05-20 | Xilinx, Inc. | Programmable logic block with dedicated and selectable lookup table outputs coupled to general interconnect structure |
US7274214B1 (en) | 2005-06-14 | 2007-09-25 | Xilinx, Inc. | Efficient tile layout for a programmable logic device |
US7276934B1 (en) | 2005-06-14 | 2007-10-02 | Xilinx, Inc. | Integrated circuit with programmable routing structure including diagonal interconnect lines |
US7256612B1 (en) | 2005-06-14 | 2007-08-14 | Xilinx, Inc. | Programmable logic block providing carry chain with programmable initialization values |
US7268587B1 (en) | 2005-06-14 | 2007-09-11 | Xilinx, Inc. | Programmable logic block with carry chains providing lookahead functions of different lengths |
JP4552803B2 (ja) * | 2005-08-10 | 2010-09-29 | ソニー株式会社 | 半導体集積回路 |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US7644385B1 (en) | 2005-11-07 | 2010-01-05 | Altera Corporation | Programmable logic device with performance variation compensation |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US7212032B1 (en) * | 2006-04-25 | 2007-05-01 | Altera Corporation | Method and apparatus for monitoring yield of integrated circuits |
US7408380B1 (en) * | 2006-05-16 | 2008-08-05 | Xilinx, Inc. | Method and apparatus for a redundant transceiver architecture |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
US7724031B2 (en) * | 2007-03-21 | 2010-05-25 | Altera Corporation | Staggered logic array block architecture |
US7995067B2 (en) * | 2007-03-29 | 2011-08-09 | Mobileye Technologies Limited | Cyclical image buffer |
US20080263319A1 (en) * | 2007-04-17 | 2008-10-23 | Cypress Semiconductor Corporation | Universal digital block with integrated arithmetic logic unit |
US8111577B2 (en) | 2007-04-17 | 2012-02-07 | Cypress Semiconductor Corporation | System comprising a state-monitoring memory element |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
BRPI0811766A2 (pt) | 2007-05-17 | 2014-11-11 | Octio Geophysical As | Aparelho e método para coletar informação geofísica |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US7589552B1 (en) | 2007-10-23 | 2009-09-15 | Altera Corporation | Integrated circuit with redundancy |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US8626815B1 (en) | 2008-07-14 | 2014-01-07 | Altera Corporation | Configuring a programmable integrated circuit device to perform matrix multiplication |
US8255448B1 (en) | 2008-10-02 | 2012-08-28 | Altera Corporation | Implementing division in a programmable integrated circuit device |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8886696B1 (en) | 2009-03-03 | 2014-11-11 | Altera Corporation | Digital signal processing circuitry with redundancy and ability to support larger multipliers |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8805916B2 (en) | 2009-03-03 | 2014-08-12 | Altera Corporation | Digital signal processing circuitry with redundancy and bidirectional data paths |
US8549055B2 (en) | 2009-03-03 | 2013-10-01 | Altera Corporation | Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US7902855B1 (en) | 2010-03-03 | 2011-03-08 | Altera Corporation | Repairable IO in an integrated circuit |
US8458243B1 (en) | 2010-03-03 | 2013-06-04 | Altera Corporation | Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
KR101209824B1 (ko) | 2011-10-12 | 2012-12-07 | 고려대학교 산학협력단 | 블록 인터리빙 장치 |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
US9236864B1 (en) | 2012-01-17 | 2016-01-12 | Altera Corporation | Stacked integrated circuit with redundancy in die-to-die interconnects |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US8704548B1 (en) * | 2012-10-19 | 2014-04-22 | Altera Corporation | Methods and apparatus for building bus interconnection networks using programmable interconnection resources |
US8860460B1 (en) * | 2012-11-05 | 2014-10-14 | Altera Corporation | Programmable integrated circuits with redundant circuitry |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9030227B1 (en) | 2013-08-20 | 2015-05-12 | Altera Corporation | Methods and apparatus for providing redundancy on multi-chip devices |
US9379687B1 (en) | 2014-01-14 | 2016-06-28 | Altera Corporation | Pipelined systolic finite impulse response filter |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
KR102557310B1 (ko) * | 2016-08-09 | 2023-07-20 | 에스케이하이닉스 주식회사 | 반도체 장치 |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US33521A (en) * | 1861-10-22 | Improved apparatus for heating air for blast-furnaces | ||
US3566153A (en) * | 1969-04-30 | 1971-02-23 | Texas Instruments Inc | Programmable sequential logic |
US3805039A (en) * | 1972-11-30 | 1974-04-16 | Raytheon Co | High reliability system employing subelement redundancy |
US3995261A (en) * | 1975-02-24 | 1976-11-30 | Stanford Research Institute | Reconfigurable memory |
US4020469A (en) * | 1975-04-09 | 1977-04-26 | Frank Manning | Programmable arrays |
US4051354A (en) * | 1975-07-03 | 1977-09-27 | Texas Instruments Incorporated | Fault-tolerant cell addressable array |
US4124899A (en) * | 1977-05-23 | 1978-11-07 | Monolithic Memories, Inc. | Programmable array logic circuit |
DE3015992A1 (de) * | 1980-04-25 | 1981-11-05 | Ibm Deutschland Gmbh, 7000 Stuttgart | Programmierbare logische anordnung |
US4538247A (en) * | 1983-01-14 | 1985-08-27 | Fairchild Research Center | Redundant rows in integrated circuit memories |
US4566102A (en) * | 1983-04-18 | 1986-01-21 | International Business Machines Corporation | Parallel-shift error reconfiguration |
JPS6093700A (ja) * | 1983-10-26 | 1985-05-25 | Hitachi Ltd | ライン切換回路およびそれを用いた半導体記憶装置 |
US4551814A (en) * | 1983-12-12 | 1985-11-05 | Aerojet-General Corporation | Functionally redundant logic network architectures |
US4617479B1 (en) * | 1984-05-03 | 1993-09-21 | Altera Semiconductor Corp. | Programmable logic array device using eprom technology |
US4774421A (en) * | 1984-05-03 | 1988-09-27 | Altera Corporation | Programmable logic array device using EPROM technology |
US4713792A (en) * | 1985-06-06 | 1987-12-15 | Altera Corporation | Programmable macrocell using eprom or eeprom transistors for architecture control in programmable logic circuits |
US4609986A (en) * | 1984-06-14 | 1986-09-02 | Altera Corporation | Programmable logic array device using EPROM technology |
US4598388A (en) * | 1985-01-22 | 1986-07-01 | Texas Instruments Incorporated | Semiconductor memory with redundant column circuitry |
US4706216A (en) * | 1985-02-27 | 1987-11-10 | Xilinx, Inc. | Configurable logic element |
US4677318A (en) * | 1985-04-12 | 1987-06-30 | Altera Corporation | Programmable logic storage element for programmable logic devices |
US4722084A (en) * | 1985-10-02 | 1988-01-26 | Itt Corporation | Array reconfiguration apparatus and methods particularly adapted for use with very large scale integrated circuits |
US4703206A (en) * | 1985-11-19 | 1987-10-27 | Signetics Corporation | Field-programmable logic device with programmable foldback to control number of logic levels |
US4700187A (en) * | 1985-12-02 | 1987-10-13 | Concurrent Logic, Inc. | Programmable, asynchronous logic cell and array |
JPS632351A (ja) * | 1986-06-20 | 1988-01-07 | Sharp Corp | 半導体装置 |
US5187393A (en) * | 1986-09-19 | 1993-02-16 | Actel Corporation | Reconfigurable programmable interconnect architecture |
US5019736A (en) * | 1986-11-07 | 1991-05-28 | Concurrent Logic, Inc. | Programmable logic cell and array |
US4829198A (en) * | 1987-04-10 | 1989-05-09 | International Business Machines Corporation | Fault tolerant logical circuitry |
US4928022A (en) * | 1987-07-17 | 1990-05-22 | Trw Inc. | Redundancy interconnection circuitry |
US4800302A (en) * | 1987-07-17 | 1989-01-24 | Trw Inc. | Redundancy system with distributed mapping |
US4920497A (en) * | 1987-10-27 | 1990-04-24 | State University Of New York | Method for rendering usuable a defective raw programmable logic array and a defective programmable logic array rendered usable by this method |
US4798976A (en) * | 1987-11-13 | 1989-01-17 | International Business Machines Corporation | Logic redundancy circuit scheme |
US4871930A (en) * | 1988-05-05 | 1989-10-03 | Altera Corporation | Programmable logic device with array blocks connected via programmable interconnect |
US4912342A (en) * | 1988-05-05 | 1990-03-27 | Altera Corporation | Programmable logic device with array blocks with programmable clocking |
KR910003594B1 (ko) * | 1988-05-13 | 1991-06-07 | 삼성전자 주식회사 | 스페어컬럼(column)선택방법 및 회로 |
US4899067A (en) * | 1988-07-22 | 1990-02-06 | Altera Corporation | Programmable logic devices with spare circuits for use in replacing defective circuits |
JPH0289299A (ja) * | 1988-09-27 | 1990-03-29 | Nec Corp | 半導体記憶装置 |
US5255228A (en) * | 1989-01-10 | 1993-10-19 | Matsushita Electronics Corporation | Semiconductor memory device with redundancy circuits |
US5471427A (en) * | 1989-06-05 | 1995-11-28 | Mitsubishi Denki Kabushiki Kaisha | Circuit for repairing defective bit in semiconductor memory device and repairing method |
GB8926004D0 (en) * | 1989-11-17 | 1990-01-10 | Inmos Ltd | Repairable memory circuit |
US5005158A (en) * | 1990-01-12 | 1991-04-02 | Sgs-Thomson Microelectronics, Inc. | Redundancy for serial memory |
US5204836A (en) * | 1990-10-30 | 1993-04-20 | Sun Microsystems, Inc. | Method and apparatus for implementing redundancy in parallel memory structures |
US5255227A (en) * | 1991-02-06 | 1993-10-19 | Hewlett-Packard Company | Switched row/column memory redundancy |
US5121006A (en) * | 1991-04-22 | 1992-06-09 | Altera Corporation | Registered logic macrocell with product term allocation and adjacent product term stealing |
US5220214A (en) * | 1991-04-22 | 1993-06-15 | Altera Corporation | Registered logic macrocell with product term allocation and adjacent product term stealing |
US5260611A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic array having local and long distance conductors |
US5260610A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic element interconnections for programmable logic array integrated circuits |
KR950000275B1 (ko) * | 1992-05-06 | 1995-01-12 | 삼성전자 주식회사 | 반도체 메모리 장치의 컬럼 리던던시 |
US5237219A (en) * | 1992-05-08 | 1993-08-17 | Altera Corporation | Methods and apparatus for programming cellular programmable logic integrated circuits |
JP2909328B2 (ja) * | 1992-11-02 | 1999-06-23 | 株式会社東芝 | フィールドプログラマブルゲートアレイ |
US5434514A (en) * | 1992-11-19 | 1995-07-18 | Altera Corporation | Programmable logic devices with spare circuits for replacement of defects |
US5498975A (en) * | 1992-11-19 | 1996-03-12 | Altera Corporation | Implementation of redundancy on a programmable logic device |
US5483178A (en) * | 1993-03-29 | 1996-01-09 | Altera Corporation | Programmable logic device with logic block outputs coupled to adjacent logic block output multiplexers |
CH688425A5 (fr) * | 1993-05-24 | 1997-09-15 | Suisse Electronique Microtech | Circuit électronique organisé en réseau matriciel de cellules. |
US5369314A (en) * | 1994-02-22 | 1994-11-29 | Altera Corporation | Programmable logic device with redundant circuitry |
US5426379A (en) * | 1994-07-29 | 1995-06-20 | Xilinx, Inc. | Field programmable gate array with built-in bitstream data expansion |
US5592102A (en) * | 1995-10-19 | 1997-01-07 | Altera Corporation | Means and apparatus to minimize the effects of silicon processing defects in programmable logic devices |
US5670895A (en) * | 1995-10-19 | 1997-09-23 | Altera Corporation | Routing connections for programmable logic array integrated circuits |
DE69802927T2 (de) * | 1997-05-23 | 2002-08-08 | Altera Corp. ( A Delaware Corporation), San Jose | Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen |
JP3130269B2 (ja) | 1997-05-30 | 2001-01-31 | 愛三工業株式会社 | 燃料供給装置 |
-
1998
- 1998-05-20 DE DE69802927T patent/DE69802927T2/de not_active Expired - Lifetime
- 1998-05-20 JP JP55057098A patent/JP3865789B2/ja not_active Expired - Fee Related
- 1998-05-20 WO PCT/US1998/010301 patent/WO1998053401A1/en active IP Right Grant
- 1998-05-20 US US09/082,081 patent/US6107820A/en not_active Expired - Lifetime
- 1998-05-20 EP EP98923566A patent/EP0983549B1/de not_active Expired - Lifetime
-
2000
- 2000-03-17 US US09/527,903 patent/US6222382B1/en not_active Expired - Lifetime
-
2001
- 2001-02-28 US US09/795,870 patent/US6337578B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20010006347A1 (en) | 2001-07-05 |
US6107820A (en) | 2000-08-22 |
US6222382B1 (en) | 2001-04-24 |
US6337578B2 (en) | 2002-01-08 |
JP3865789B2 (ja) | 2007-01-10 |
EP0983549A1 (de) | 2000-03-08 |
WO1998053401A1 (en) | 1998-11-26 |
DE69802927D1 (de) | 2002-01-24 |
EP0983549B1 (de) | 2001-12-12 |
JP2001526866A (ja) | 2001-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69802927T2 (de) | Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen | |
DE69322608T2 (de) | Programmierbare logische Vorrichtungen mit Ersatzschaltungen zum Ersatz von Defekten | |
EP0212208B1 (de) | Schaltungsanordnung zum Prüfen integrierter Schaltungseinheiten | |
DE3486312T2 (de) | Speicher mit programmierbarer Wortlänge in einem Gatterfeld mit bidirektionaler Symmetrie. | |
DE3638632C2 (de) | ||
DE4425552C2 (de) | Gatterarray | |
DE3751002T2 (de) | Halbleiterspeicher. | |
DE69726668T2 (de) | Verfahren und Vorrichtung zur Prüfung einer Speicherschaltung in einer Halbleitereinrichtung | |
DE69330974T2 (de) | Unterbrechungsfreies wahlfreies Zugriffspeichersystem | |
DE69329220T2 (de) | Zeilenredundanzschaltung eines Halbleiterspeichersgeräts | |
DE68923541T2 (de) | Programmierbare Logikeinrichtung mit einer Vielzahl von programmierbaren Logikarrays, die sich in mosaikförmiger Anordnung zusammen mit einer Vielzahl von vermischt angeordneten Interface-Blöcken befinden. | |
EP0010173B1 (de) | Halbleiterplättchen mit verbesserter Prüfbarkeit der monolithisch hochintegrierten Schaltungen | |
EP0202456B1 (de) | In integrierter Technik hergestellter Logik-Array-Baustein | |
DE69026673T2 (de) | Bitzeile-Segmentierung in einer logischen Speicheranordnung | |
DE3520003C2 (de) | ||
DE60010614T2 (de) | On-line Prüfung des programmierbaren Verbindungsnetzwerks in einer feldprogrammierbaren Gatteranordnung | |
DE2335785B2 (de) | Schaltungsanordnung zum Prüfen einer Matrixverdrahtung | |
WO2005036750A1 (de) | Konfigurierbare logikschaltungsanordnung | |
DE19823584A1 (de) | Halbleiterspeicherbauelement sowie Reparaturschaltung für ausgefallene Zellen und Verfahren hierfür | |
EP0126785A1 (de) | Prüf- und Diagnoseeinrichtung für Digitalrechner | |
DE4117585A1 (de) | Halbleiterschaltkreis mit multiplexauswahlfunktionen | |
DE4316283A1 (de) | Halbleiterspeichervorrichtung | |
DE69026899T2 (de) | Integriertes Halbleiterschaltungsgerät mit Prüfschaltung | |
DE3855550T2 (de) | Redundanz für Schaltungskomplex | |
DE69414310T2 (de) | Integrierte Halbleiterschaltung mit Prüfschaltung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |