[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE69802927T2 - Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen - Google Patents

Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen

Info

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
Application number
DE69802927T
Other languages
English (en)
Other versions
DE69802927D1 (de
Inventor
E. Jefferson
T. Reddy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Application granted granted Critical
Publication of DE69802927D1 publication Critical patent/DE69802927D1/de
Publication of DE69802927T2 publication Critical patent/DE69802927T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/17764Structural details of configuration resources for reliability
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/1778Structural 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

    Hintergrund der Erfindung
  • 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.
  • Kurzdarstellung der Erfindung
  • 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.
  • Kurzbeschreibung der Zeichnungen
  • 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.
  • Detaillierte Beschreibung der bevorzugten Ausführungsformen
  • 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.
DE69802927T 1997-05-23 1998-05-20 Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen Expired - Lifetime DE69802927T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 愛三工業株式会社 燃料供給装置

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