DE69835106T2 - Eingebetteter logischer Analysator - Google Patents

Eingebetteter logischer Analysator Download PDF

Info

Publication number
DE69835106T2
DE69835106T2 DE69835106T DE69835106T DE69835106T2 DE 69835106 T2 DE69835106 T2 DE 69835106T2 DE 69835106 T DE69835106 T DE 69835106T DE 69835106 T DE69835106 T DE 69835106T DE 69835106 T2 DE69835106 T2 DE 69835106T2
Authority
DE
Germany
Prior art keywords
pld
logic analyzer
logic
signals
jtag port
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
DE69835106T
Other languages
English (en)
Other versions
DE69835106D1 (de
Inventor
Kerry San Jose Veenstra
Krishna Pleasanton Rangasayee
Alan L. Sunnyvale Herrmann
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 DE69835106D1 publication Critical patent/DE69835106D1/de
Publication of DE69835106T2 publication Critical patent/DE69835106T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/25Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft allgemein die Untersuchung einer Hardwarevorrichtung in Verbindung mit einem Computersystem. Sie betrifft insbesondere einen Logikanalysator, der zum Zweck der Fehlersuche automatisch in eine Hardwarevorrichtung eingebettet wird.
  • HINTERGRUND DER ERFINDUNG
  • Auf dem Gebiet der Elektronik sind verschiedene elektronische Werkzeuge zur Entwurfsautomatisierung (EDA, EDA = Electronic Design Automation) nützlich für das Automatisieren des Vorgangs, durch den integrierte Schaltungen, Multi-Chip-Module, Platinen usw. entworfen und gefertigt werden. Elektronische Werkzeuge zur Entwurfsautomatisierung eignen sich ganz besonders für den Entwurf von integrierten Standardschaltungen, kundenspezifischen integrierten Schaltungen (z.B. ASICs) und den Entwurf von kundenspezifischen Anordnungen für programmierbare integrierte Schaltungen. Integrierte Schaltungen, die vom Kunden programmierbar sind, damit er seinen eigenen Entwurf herstellen kann, enthalten programmierbare Logikvorrichtungen (PLDs, PLD = Programmable Logic Device). Der Ausdruck programmierbare Logikvorrichtungen bezeichnet beliebige integrierte Schaltungen, die man programmieren kann, damit sie eine gewünschte Funktion ausführen, und die programmierbare Logikanordnungen (PLAs, PLA = Programmable Logic Array), PALs (PAL = Programmable Array Logic), feldprogrammierbare Gatearrays (FPGAs, FPGA = Field Programmable Gate Array), komplexe programmierbare Logikvorrichtungen (CPLDs, CPLD = Complex Programmable Logic Device) sowie zahlreiche unterschiedliche Logikvorrichtungen und Speichervorrichtungen enthalten, die man programmieren kann. Derartige PLDs werden häufig von einem Entwurfsingenieur mit Hilfe eines elektronischen Werkzeugs zur Entwurfsautomatisierung entworfen und programmiert, das die Form eines Softwarepakets hat.
  • Im Zuge des Erzeugens eines PLD-Entwurfs, des Programmierens des PLD und des Prüfens seiner Funktionalität auf der Platine oder in dem System, für das es gedacht ist, ist es wichtig, dass man die Fehler im PLD finden kann, da ein Entwurf im ersten Anlauf selten perfekt ist. Bevor ein PLD tatsächlich mit einem elektronischen Entwurf programmiert wird, kann man eine Simulation und/oder eine Timing-Untersuchung dazu verwenden, Fehler im elektronischen Entwurf zu finden. Ist das PLD einmal programmiert und arbeitet es in einem laufenden System, so ist es ebenfalls wichtig, dass man Fehler im PLD in dieser realen Umgebung aufspüren kann.
  • Obgleich man eine Simulation dafür einsetzen kann, zahlreiche Aspekte eines PLD zu überprüfen, ist es nahezu unmöglich, eine Simulation zu erzeugen, die präzise alle Eigenschaften des PLD auf einer tatsächlichen Platine durchspielt, die in einem komplizierten System arbeitet. Beispielsweise kann eine Simulation nicht in der Lage sein, die Timing-Merkmale zu liefern, die denen gleichen, die in einem laufenden System tatsächlich auf das PLD einwirken, d.h. die Simulations-Timingsignale können mehr oder weniger von den Signalen abweichen, die in einem realen System tatsächlich auf das PLD einwirken.
  • Zusätzlich zu den Schwierigkeiten beim Erzeugen einer umfassenden Simulation verursachen weitere Platinenvariablen wie Temperaturänderungen, Kapazitäten, Rauschen und weitere Faktoren aussetzende Fehler in einem PLD, die nur dann in Erscheinung treten, wenn das PLD in einem laufenden System arbeitet. Zudem kann es schwierig sein, ausreichend unterschiedliche Testvektoren zu erzeugen, die den PLD-Entwurf bis an den Punkt belasten, an dem man vermutlich die meisten Fehler beobachtet. Beispielsweise kann eine Fehlfunktion eines PLD auftreten, wenn an das PLD Eingangssignale angelegt werden, die der Entwickler nicht erwartet hat und daher während des Entwurfs und der Simulation des PLD nicht in Betracht gezogen hat. Derartige Fehlfunktionen sind schwer vorherzusehen und müssen im Zusammenhang mit dem vollständigen System beseitigt werden. Daher ist die Simulation eines elektronischen Entwurfs nützlich, kann jedoch in der Regel nicht alle Fehler in einem PLD finden.
  • Ein Ansatz zum Aufspüren von Fehlern in einer Hardwarevorrichtung innerhalb eines laufenden Systems besteht darin, ein eigenes Hardwaregerät zu verwenden, das Logikanalysator heißt und der Analyse von Signalen dient, die an den Anschlussstiften einer Hardwarevorrichtung auftreten. (Ein Beispiel hierfür ist der HP1670A Series Logic Analyzer der Firma Hewlett-Packard.) In der Regel verbindet man von Hand eine Anzahl Fühlerdrähte des Logikanalysators mit interessierenden Anschlussstiften der Hardwarevorrichtung, damit man die Signale an diesen Anschlussstiften überwachen kann. Der Logikanalysator erfasst und speichert diese Signale. Der Gebrauch eines externen Logikanalysators zum Überwachen der Anschlussstifte einer Hardwarevorrichtung unterliegt jedoch gewissen Einschränkungen, wenn es um die Fehlersuche in einer derartigen Vorrichtung geht. Beispielsweise kann ein solcher externer Logikanalysator nur an die externen Anschlussstifte der Hardwarevorrichtung angeschlossen werden und diese überwachen. Auf interne Signale der Hardwarevorrichtung kann man nicht zugreifen, und man kann sie nicht überwachen. Unglücklicherweise wäre es beim Programmieren einer Hardwarevorrichtung in Form eines PLD jedoch sehr nützlich, wenn man einige dieser internen Signale überwachen könnte, um Fehler im PLD zu finden.
  • Gewisse kundenspezifische Hardwarevorrichtungen können einer gewissen internen Fehlersuche-Hardware ausgeliefert werden. Diese Fehlersuche-Hardware ist jedoch in aller Regel fest verdrahtet und führt bestimmte interne Signale, die sich nicht leicht durch einen Ingenieur verändern lassen, der andere Signale sehen will. Mit einer derartigen eingebauten Fehlersuche ist es zudem nicht möglich, ein beliebiges vom Ingenieur gewünschtes Signal zu wählen, und der Ingenieur kann auch die Triggersignale und die Triggerbedingungen nicht verändern. Da ein PLD seiner ureigensten Natur nach eine programmierbare Vorrichtung ist, die ein Ingenieur zu programmieren versucht, damit sie eine bestimmte Funktion ausführt, ist es für den Ingenieur wichtig, dass er überwachte Signale, Triggersignale und Triggerbedingungen individuell zuschneiden kann, so dass er in jeder beliebigen Vorrichtung wirksam Fehler suchen kann. Weiterhin ist das Erzeugen eines elektronischen Entwurfs für ein PLD ein iterativer Vorgang, der eine kreative Fehlersuche von einem Ingenieur fordert, der vielleicht nahezu jedes interne Signal sehen will, und der im Verlauf des Fehlersuchvorgangs bei einem PLD innerhalb eines Systems seine Absichten recht häufig ändert. Bekannte externe und interne Logikanalysatoren bieten diese Flexibilität nicht.
  • Ein weiterer Nachteil beim Gebrauch eines externen Logikanalysators oder einer fest verdrahteten vorbestimmten Fehlersuch-Hardware innerhalb eines individuellen Chips besteht darin, dass die Anzahl interner Signale, die ein Ingenieur zu überwachen wünscht, häufig größer ist als die Anzahl der verfügbaren Anschlussstifte an der Vorrichtung. Wünscht der Ingenieur beispielsweise sechzehn interne Signale an einer Vorrichtung zu überwachen, so kann er dies mit Hilfe eines externen Logikanalysators nicht tun, falls die Vorrichtung nur vier Anschlussstifte für die Fehlersuche zur Verfügung hat.
  • In manchen Fällen ist es einem Ingenieur möglich, einen herkömmlichen Logikanalysator zum Untersuchen eines internen Signals eines PLD zu verwenden. Dies kann zum Beispiel dadurch erreicht werden, dass ein Ingenieur seinen Entwurf so abwandelt, dass ein normalerweise internes Signal zeitweilig mit einem Ausgabestift des PLD verbunden wird. Der Entwurf wird daraufhin neu übersetzt. Der Ingenieur befestigt dann einen Fühler an diesem Ausgabestift, damit er das "interne" Signal überwachen kann. Dabei ist es unangenehm, dass der Ingenieur seinen Entwurf neu übersetzen muss und das PLD neu programmieren muss, damit er dieses interne Signal sehen kann. Nach dem Abschluss der Fehlersuche muss der Ingenieur seinen Entwurf erneut überarbeiten, um das interne Signal von dem Ausgabestift zu entfernen, den Entwurf neu übersetzen und schließlich das PLD nochmals neu programmieren. Dies kann ein ermüdender Vorgang sein.
  • Selbst wenn es einem Ingenieur gelingt, ein internes Signal an einen Ausgabestift eines PLD zu leiten, kann es bei einigen Gehäusen für integrierte Schaltungen äußerst schwierig sein, einen externen Logikanalysator anzubringen. Bei einer integrierten Schaltung mit Dual-Inline-Gehäuse kann es ein relativ einfacher Vorgang sein, die Sonden des Logikanalysators oben auf dem Gehäuse zu befestigen, solange sich das Gehäuse an einer einfach zugänglichen Stelle auf der Platine befindet. Befindet sich das Gehäuse jedoch wegen einer überfrachteten Platine an einer schwer zugänglichen Stelle, kann es schwierig werden, die Sonden des Logikanalysators mechanisch an bestimmten interessierenden Ausgabestiften zu befestigen. Noch mehr Schwierigkeiten bereiten integrierte Schaltungen mit Reihen von Miniaturkontakten, die sich auf der Gehäuseoberseite befinden (z.B. "Flip-Chips"). Bei diesem Gehäusetyp ist es schwierig, die Fühler eines Logikanalysators an bestimmten interessierenden Ausgängen zu befestigen. Manche integrierte Schaltungen sind in ein Perlenrastergehäuse eingeschlossen, wobei sich die Kontakte an der Gehäuseunterseite gegenüber der Platine befinden. Bei diesen Gehäusen kann es nahezu unmöglich sein, die Fühler eines Logikanalysators an diesen kleinen Kontakten zu befestigen, die sich an der Unterseite des Gehäuses befinden. Damit weist der Gebrauch eines externen Logikanalysators auch dann Unzulänglichkeiten auf, wenn man ein internes Signal mit einem Anschlussstift einer Vorrichtung verbinden kann.
  • Gewisse Logikanalysatoren erlauben es einem Benutzer beispielsweise, eine Triggerbedingung und einen Satz Triggersignale festzulegen, die die Triggerbedingung erfüllen müssen, bevor der Logikanalysator für die Datenerfassung eingeschaltet wird. Derartige Logikanalysatoren sind nützlich, wenn man wünscht, Signaldaten zu erfassen und zu analysieren, die unmittelbar nach einer bestimmten Triggerbedingung auftreten (beispielsweise nach dem Versagen der Vorrichtung). Oft wünscht man jedoch, Signale für die spätere Untersuchung zu erfassen, die vor der Triggerbedingung auftreten. In den meisten Fällen sind diejenigen Logikanalysatoren, die mit der Datenerfassung nach dem Erfüllen einer Triggerbedingung beginnen, nicht in der Lage, erfasste Signale vor der Triggerbedingung zu liefern, da der Logikanalysator lediglich dafür entworfen ist, mit der Erfassung bei einem Fehler oder Versagen oder einer anderen Triggerbedingung zu beginnen. Da diese Fehler und/oder Versagensfälle unvorhersehbar erfolgen, können diese Logikanalysatortypen die Triggerbedingung nicht vorhersehen und sie können damit nicht mit der Datenerfassung beginnen, bevor die Triggerbedingung auftritt.
  • In gewissen Fehlersuchsituationen kann es äußerst vorteilhaft sein, Signale zu erfassen, die auftreten, bevor die Triggerbedingung eintritt. Werden beispielsweise Fehler in einer PCI-Bus-Schnittstelle gesucht, so kann ein Zustand auftreten, in dem die Schnittstelle in einen unerlaubten Status geht. Herkömmliche Logikanalysatoren sind in der Lage, diesen unerlaubten Status zu erkennen und sofort mit der Datenerfassung für die spätere Analyse zu beginnen. Es ist jedoch äußerst erwünscht, mit dem Erfassen der Signaldaten zu beginnen, bevor die Busschnittstelle in den unerlaubten Status eintritt, damit man feststellen kann, warum der Bus in diesen unerlaubten Status gelangt. In einem anderen Beispiel kann es beim Auftreten eines Interrupts äußerst erwünscht sein, die Vorgeschichte gewisser Register zu kennen, bevor der Interrupt erfolgt. Anders ausgedrückt kann nach dem Empfang des Interrupts die Datenerfassung beginnen, die Register können sich jedoch bereits in einem inkorrekten Zustand befinden. Es ist äußerst erwünscht, dass man die Signaldaten erfassen und analysieren kann, bevor der Interrupt erfolgt, damit man feststellen kann, warum gewisse Register in einem inkorrekten Zustand sind, wenn der Interrupt auftritt. Weitere Situationen, in denen es erwünscht ist, Signaldaten vor einer bestimmten Triggerbedingung zu erfassen, sind auch möglich.
  • Diverse bisher unternommene Versuche liefern Teillösungen, haben jedoch jeweils ihre Nachteile. Beispielsweise erlauben es die externen Logikanalysatoren, die bei der Firma Hewlett-Packard erhältlich sind, Signaldaten zu erfassen, bevor eine Triggerbedingung (oder ein Haltepunkt) auftritt. Unangenehmerweise leiden diese externen Logikanalysatoren unter zahlreichen Nachteilen, die wie beschrieben den externen Logikanalysatoren anhaften. Die Actel Corporation in Sunnyvale, Kalifornien, bietet zwei Fühler innerhalb einer programmierbaren Logikvorrichtung an, die zwei unterschiedliche Signale überwachen können. Diese Signale muss der Benutzer jedoch vorab festlegen, und sie können nicht flexibel anderen Signalen zugewiesen werden. Zudem erlauben die Fühler von Actel eine konstante Überwachung bestimmter Signale; sie erlauben jedoch nicht das Erfassen von einschlägigen Signaldaten bezüglich eines festgelegten Haltepunkts.
  • Man wünscht sich daher, eine Einrichtung und eine Vorgehensweise zu besitzen, die es einem in eine programmierbare Logikvorrichtung eingebetteten Logikanalysator erlauben, flexibel interne Signale zu erfassen, und zwar vor und nach einem festgelegten Haltepunkt.
  • Zudem wünscht man sich, eine Einrichtung und eine Vorgehensweise zu besitzen, die wirksam und flexibel einen Logikanalysator kontrolliert, der in eine programmierbare Logikvorrichtung eingebettet ist. Im weiteren wird erklärt, dass zwar verschiedene Optionen zum Kontrollieren eines solchen eingebetteten Logikanalysators verfügbar sind, jedoch keine der herkömmlichen Vorgehensweisen optimal ist. Um etwas Hintergrundinformation zu liefern werden zunächst der Entwurf und die Herstellungsphasen eines PLD und einer Platine kurz erklärt.
  • Wie in diesem Abschnitt bereits beschrieben entwirft und programmiert ein Entwicklungsingenieur ein PLD mit Hilfe automatischer Werkzeuge für den elektronischen Entwurf. Im Zug dieser Entwurfsphase kann der Entwicklungsingenieur zahlreiche Fehlersuchiterationen im Entwurfsprogramm vornehmen, bevor der Entwurf abgeschlossen ist und das PLD für die Massenfertigung bereit ist. Der Entwicklungsingenieur verwendet häufig eine Simulation und/oder Timing-Untersuchung zur Unterstützung bei der Fehlersuche im elektronischen Entwurf des PLD. Es ist auch denkbar, dass der Entwicklungsingenieur einen eingebetteten Logikanalysator verwendet (siehe die Offenbarung in dem US-Patent Nr. 08/958,435), um die Fehler im Entwurf zu beseitigen. Ist der Entwurf des PLD beendet und stellt er den Entwicklungsingenieur zufrieden, so wird der Entwurf für die Herstellungsphase an einen Fertigungsingenieur übergeben.
  • In der Herstellungsphase entwirft ein Fertigungsingenieur einen Herstellungsablauf für die Massenproduktion einer elektronischen Platine oder einer elektronischen Vorrichtung, die ein oder mehrere PLDs enthält. Während der Herstellungsphase ist es erforderlich, die Platine selbst zu prüfen, und es kann auch erforderlich sein, das PLD erneut zu testen. Zu Beginn der Herstellungsphase werden eine beliebige Anzahl und beliebige Typen von Hardwarekomponenten und eine beliebige Anzahl von PLDs auf eine Platine gelötet. Befindet sich das PLD auf der Platine, so wird es in den meisten Fällen mit Hilfe eines JTAG-Ports, der sich auf dem PLD befindet, programmiert (oder konfiguriert). Es ist auch möglich, dass ein bestimmtes PLD für sich programmiert wird, bevor es auf der Platine angeordnet wird, und zwar über einen besonderen Sockel und eine Programmiereinheit.
  • Nun kann eine Prüfung der bestückten Platine vorgenommen werden, um die Leiterbahnen, Lötverbindungen und weitere mechanische Verbindungen zwischen den Komponenten auf der Platine zu untersuchen. Es sei darauf hingewiesen, dass eine Platinenprüfung auch erfolgen kann, bevor irgendwelche Bauteile auf der Platine programmiert oder konfiguriert werden. Es ist üblich, einen JTAG-Port eines PLD oder eine andere Vorrichtung zu verwenden, um die Leiterbahnen und Lötverbindungen einer Platine während der Platinenprüfung zu testen. Nach dem Prüfen der mechanischen Verbindungen wird eine vollständige Funktionsprüfung der Platine vorgenommen, damit die gesamte Funktionalität der Platine getestet wird (d.h., um sicherzustellen, dass bestimmte Eingaben die erwarteten Ausgangssignale erzeugen). Wird an dieser Stelle ein Versagen festgestellt, so kann es nötig sein, ein bestimmtes PLD im eingebauten Zustand auf der Platine nach Fehlern zu untersuchen. Für schwieriger zurückzuverfolgende Fehler kann es auch erforderlich sein, ein PLD, in dem Fehler gesucht werden, von der Platine abzunehmen. Unter diesen Umständen wünscht man, wie bereits erklärt, über einen eingebetteten Logikanalysator in dem PLD zu verfügen, damit man die Fehler leichter suchen kann. Während eines jeglichen Fehlersuchvorgangs im PLD ist es in irgendeiner Weise erforderlich, den eingebetteten Logikanalysator zu steuern, d.h. ihn mit Befehlen und Daten zu versorgen und die erfassten Daten und den Status vom Logikanalysator zu empfangen. Obwohl verschiedene Optionen verfügbar sind, ist derzeit keine völlig zufriedenstellend.
  • Man kann beispielsweise vorhandene Ein/Ausgabe-Anschlussstifte einer Vorrichtung dazu verwenden, eine Steuerungsschnittstelle bereitzustellen. Dummerweise kann es sein, dass bei einem bestimmten Entwurf nicht genügend zusätzliche Ein/Ausgabe-Anschlussstifte verfügbar sind, mit denen man eine Schnittstelle herstellen kann, die dem Steuern eines eingebetteten Logikanalysators dient. Es kann erwünscht sein, dass man von einem Kunden, der ein PLD kauft, fordert, dass er eine bestimmte Anzahl von Ein/Ausgabe-Anschlussstiften nicht verwendet, und zwar aus dem einfachen Grund, dass das PLD vielleicht nicht korrekt entworfen ist und an einer gewissen Stelle auf Fehler geprüft werden muss.
  • Die Firma Intel in Santa Clara, Kalifornien, verwendet einen JTAG-Port zum Steuern des Zugriffs auf bestimmte Fehlersuchregister, die den Fehlersuchvorgang in einer Zentraleinheit (CPU) unterstützen. Da eine CPU einen bekannten Entwurf hat, weiß man vorher genau, wie viele Fehlersuchregister man benötigt, und die Steuerung wird einfacher. Bei einem PLD ist jeder vom Benutzer implementierte Entwurf ein Individuum. Man weiß im voraus nicht, wie der Entwurf aussieht und wieviele Fehlersuchregister man wohl benötigen wird. Unterschiedliche Entwürfe erfordern unterschiedliche Feh lersuchregister. Damit ist die einfache von Intel verwendete Vorgehensweise mit dem bekannten Entwurf einer CPU nicht auf ein PLD übertragbar.
  • DE 4042262 offenbart ein Verfahren zum Analysieren der Funktion digitaler Schaltkreise mit Hilfe abgetasteter Werte, bei dem die Funktionen der digitalen Schaltungen dadurch untersucht werden, dass man Werte von einigen Datenautobahnen zu definierten Zeitpunkten in einen Speicher schreibt und sie auf einem Bildschirm darstellt. Man kann gesteuert durch eine Triggereinheit so viele Ergebnisse wie nötig in den Speicher schreiben, und zwar mit Vorlaufaufzeichnung oder Vorlaufaufzeichnung und Aufzeichnung ab dem Triggerpunkt. Man kann jede beliebige Länge der Vorlaufaufzeichnung und/oder Aufzeichnung ab dem Triggerpunkt verwenden. Die Ergebnisse können über eine digitale Verzögerungsschaltung an den Speicher übertragen werden.
  • US-4,873,459 offenbart eine vom Benutzer programmierbare Verbindungsarchitektur, die für Logikanordnungen beim digitalen und analogen Systementwurf eingesetzt werden kann. Zahlreiche Logikzellen oder Module in einer Matrix werden über vertikale und horizontale Verdrahtungskanäle angeschlossen. Die Verdrahtungskanäle kann der Benutzer so programmieren, dass sie die verschiedenen Logikzellen verbinden und dadurch die geforderte logische Funktion implementieren. Erfassungsschaltungen und Verdrahtungen können enthalten sein, damit eine hundertprozentige Beobachtbarkeit der inneren Schaltungsknoten, beispielsweise Modulausgaben, von einer externen Anschlussfleck-Schnittstelle gegeben ist.
  • US-5,425,036 offenbart ein Automatisierungssystem für den elektronischen Entwurf (EDA), in dem feldprogrammierbare Gatearrays (FPGA) zum Emulieren von Prototyp-Schaltungsentwürfen verwendet werden. Eine Schaltungs-Netzlistendatei wird in die FPGAs geladen, damit die FPGAs so konfiguriert werden, dass sie die Funktionsdarstellung der Prototypschaltung emulieren. Um zu prüfen, ob die Schaltungs-Netzliste korrekt implementiert ist, wird die Funktion der FPGAs dadurch geprüft, dass man Eingabevektoren daran anlegt und die entstehenden Ausgangssignale der FPGAs mit Ausgabevektoren vergleicht, die aus früheren Simulationen stammen. Fallen die FPGAs bei einem derartigen Vektorvergleich durch, so werden Fehler in den FPGAs dadurch gesucht, dass "Read-Back-Triggerbefehle" in die Eingabevektoren eingefügt werden, die bevorzugt den Fehlerpunkten im verwendeten Vektorstrom entsprechen. Das Modifizieren der Eingabevektoren mit solchen Read-Back-Signalen bewirkt, dass die internen Zustände der Latches und Flipflops in jedem FPGA erfasst werden, wenn die Funktionsprüfung wiederholt wird. Diese interne Statusinformation ist für die Fehlersuche in den FPGAs nützlich und besonders bequem, da man die Schaltungs-Netzliste nicht neu zu übersetzen braucht. Ein ähnlicher Ansatz, bei dem ebenfalls die Read-Back-Merkmale der FPGAs verwendet werden, dient dazu, Fehler in FPGAs zu suchen, die mit einem Zielsystem verbunden sind, das während der Emulationsläufe zu versagen scheint. Dieses Dokument offenbart auch eine Fehlersuchlogik, die einen Logikanalysator und einen JTAG-Port enthält, der zum Herunterladen von Daten auf den Logikanalysator dient.
  • Daher wünscht man weiterhin eine Einrichtung und eine Vorgehensweise, die eine einfache, wirksame und flexible Steuerung eines eingebetteten Logikanalysators liefert. Man wünscht zudem, dass eine derartige Steuereinrichtung und Vorgehensweise das Prüfen eines PLD auf einer Platine in einer realen Umgebung zulässt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Um die genannten Ziele zu erreichen und gemäß dem Zweck der Erfindung wird eine Vorgehensweise zum Einbetten eines Logikanalysators in eine programmierbare Logikvorrichtung offenbart, die das Steuern des eingebetteten Logikanalysators über einen JTAG-Port erlaubt. Diese Aufgaben werden im Grunde durch das Verwenden der Merkmale erzielt, die in den unabhängigen Ansprüchen 1 und 9 dargelegt sind. Weitere Verbesserungen sind in den abhängigen Ansprüchen angegeben.
  • Häufig wird ein JTAG-Port sowohl zum Programmieren eines PLD als auch zum Unterstützen des Prüfvorgangs einer Platine benutzt, auf der sich PLDs befinden. Vorteilhafterweise hat man erkannt, dass JTAG-Ports bisher während des Entwurfs eines bestimmten PLD und bei der Fehlersuche nicht verwendet wurde. Dadurch hat man ferner erkannt, dass JTAG-Ports auf einem PLD nicht vollständig ausgelastet sind und dass man sie während der Fehlersuche in einem PLD als Mittel zur Kommunikation mit einem eingebetteten Logikanalysator der Erfindung und zum Steuern des Analysators einsetzen kann. Der Standard-JTAG-Port wird vorteilhaft dazu verwendet, die Fehlersuche in einer programmierbaren Logikvorrichtung zu vereinfachen, die einen eingebetteten Logikanalysator enthält. Durch den Einsatz eines JTAG-Ports ist es nicht mehr erforderlich, besondere Steueranschlussstifte für die Fehlersuche zuzufügen. In einer Ausführungsform zum Steuern des eingebetteten Logikanalysators über einen JTAG-Port werden Eingänge und Ausgänge des Logikanalysators mit nicht verbundenen und JTAG-freigegebenen Ein/Ausgabe-Zellen verbunden. Zellen, die Steuersignale liefern, wird vorgespiegelt, dass sie im INTEST-Modus arbeiten, so dass man Signale eingeben kann. Der restliche Teil der Vorrichtung arbeitet aber unter realen Bedingungen. In einer anderen Ausführungsform liefert ein vom Benutzer implementiertes Testdatenregister eine JTAG-artige Kette logischer Elemente, über die Steuer- und Ausgangsinformation geschoben wird. Anregungszellen liefern Steuerinformation an den Logikanalysator, und Erfassungszellen holen Daten vom Logikanalysator.
  • Die Erfindung bietet gegenüber dem Stand der Technik zahlreiche Vorteile. Der Gebrauch eines eingebetteten Logikanalysators in einem PLD erlaubt die Fehlersuche in der Vorrichtung in dem System, in dem sie arbeitet, und unter den tatsächlichen Bedingungen, die zu einer Fehlfunktion des PLD führen können. Die Vorgehensweise der Erfindung bettet einen Logikanalysator automatisch in ein PLD ein. Dadurch kann ein Ingenieur jede Logikfunktion in der Vorrichtung überprüfen. Der eingebettete Logikanalysator kann jedes beliebige interne Signal erfassen, das der Ingenieur festlegt. Ein Haltepunkt kann also beliebig festgelegte interne Signale enthalten. Durch den Gebrauch von Speicher innerhalb des eingebetteten Logikanalysators und einer Schnittstelle zum Computer kann man jede beliebige Anzahl und Tiefe von Signalen innerhalb der Vorrichtung überwachen und für eine spätere Analyse an den Computer übertragen. In einer Ausführungsform der Erfindung wird ein JTAG-Port dazu verwendet, den eingebetteten Logikanalysator zu programmieren und die erfasste Signalinformation an den Computer zu übertragen.
  • Im Verlauf der Fehlersuche in einem PLD-Entwurf in einem System kann der Ingenieur vorteilhaft die EDA-Werkzeuge zum Festlegen neuer zu überwachender Signale und/oder neuer Haltepunkte verwenden. Der Ingenieur kann daraufhin die Vorrichtung mit einer abgewandelten Logikanalysatorschaltung sehr rasch umprogrammieren, während sie sich im dafür vorgesehenen System befindet, um Fehler in einem anderen Abschnitt der Vorrichtung zu suchen oder die Triggerbedingungen zu verändern. Diese Fähigkeit, einen eingebetteten Logikanalysator ad hoc umzuprogrammieren, weist zahlreiche Vorteile gegenüber eingebauter Fehlersuch-Hardware auf kundenspezifischen Chips auf, die man nicht dynamisch umprogrammieren kann. Diese Umprogrammierfähigkeit weist auch Vorteile gegenüber externen Logikanalysatoren auf, die nur die äußeren Anschlussstifte der Hardwarevorrichtung überwachen können. Hat ein Ingenieur die Fehlersuche in der Vorrichtung mit dem eingebetteten Logikanalysator beendet, so kann er die EDA-Werkzeuge dazu verwenden, eine Ausgabedatei mit der endgültigen Anordnung ohne den Logikanalysator zu erzeugen, die den endgültigen Arbeitsentwurf des Ingenieurs darstellt. Damit braucht der Logikanalysator im endgültigen Entwurf nicht enthalten sein, und er verbraucht keinen Platz auf dem PLD.
  • Die Erfindung ist auf einen breiten Bereich von Hardwarevorrichtungen anwendbar, und insbesondere auf PLDs. Ein PLD kann im Einzelnen mit sehr unterschiedlichen Technologien implementiert werden, einschließlich der SRAM-Technologie und der EEPROM-Technologie. Auf der SRAM-Technologie beruhende PLDs sind besonders vorteilhaft, weil sie zusätzlichen eingebetteten Speicher umfassen können, den der eingebettete Logikanalysator dazu verwenden kann, eine große Anzahl von Signalen und eine größere Signaltiefe zu erfassen. Zudem bedeutet ein eingebetteter Logikanalysator, der mit einem EDA-Werkzeug automatisch entworfen und eingefügt wird, dass der Ingenieur keinen externen Logikanalysator als eigenes Ausrüstungsteil benötigt. Ferner kann der Ingenieur den Computer, auf dem er einen Entwurf für das PLD anfertigt, auch dazu verwenden, den eingebetteten Logikanalysator zu steuern und zu konfigurieren und dessen Ergebnisse zu sichten.
  • In einer Ausführungsform der Erfindung sind eine Anzahl Anschlussstifte auf dem PLD als Schnittstellenstifte für die Kommunikation mit dem Benutzercomputer zugewiesen. Da die Anschlussstifte der Schnittstelle zugewiesen und vorab bekannt sind, kann man sie zu einer leicht zugänglichen Stelle oder einem Port auf einer Platine führen, und dadurch sehr einfach Fehlersuch-Schnittstellenkabel vom Benutzercomputer mit diesen Anschlussstiften verbinden. Diese Vorgehensweise ist dann besonders vorteilhaft, wenn Anschlussstifte oder Kontakte einer bestimmten integrierten Schaltung in einem Gehäuse nur schwierig oder nahezu nicht erreichbar sind. Da der eingebettete Logikanalysator der Erfindung so konfiguriert werden kann, dass er jedes beliebige interne oder externe Signal des PLD überwacht, sind alle diese überwachten Signale für die Analyse über diese Schnittstellenstifte verfügbar. Anders formuliert ist es nicht nötig, einen Fühler mechanisch mit einem bestimmten externen Anschlussstift von Interesse zu verbinden, da man jedes Signal innerhalb des PLD über diese zugewiesenen Schnittstellenstifte überwachen kann, es im Speicher des eingebetteten Logikanalysators ablegen kann und es danach zur Untersuchung auf den Benutzercomputer hochladen kann.
  • Zusätzlich kann man einen eingebetteten Logikanalysator mit PLDs verwenden, die bis nahe an die Kapazitätsgrenze ausgelastet sind. Ein Ingenieur kann vorübergehend einen Teil des Entwurfs entfernen, der mit dem untersuchten Problem nichts zu tun hat, eine Logikanalysatorschaltung einbetten und daraufhin die Fehler im PLD suchen. Nach der Fehlersuche im PLD kann der Ingenieur den eingebetteten Logikanalysator entfernen und den Abschnitt des Entwurfs wieder einsetzen, den er vorübergehend entfernt hat.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Man versteht die Erfindung und ihre weiteren Vorteile anhand der folgenden Beschreibung in Verbindung mit den beiliegenden Zeichnungen am besten.
  • Es zeigt:
  • 1 ein Blockdiagramm eines programmierbaren Logikentwicklungssystems gemäß einer Ausführungsform der Erfindung;
  • 2 ein Flussdiagramm eines Entwurfsverfahrens, das zum Entwerten einer programmierbaren Logikvorrichtung gemäß einer Ausführungsform der Erfindung verwendet wird;
  • 3A und 3B ein Flussdiagramm, das eine Vorgehensweise beschreibt, mit der ein Logikanalysator programmiert und in eine Vorrichtung eingebettet wird, und das beschreibt, wie der Logikanalysator Daten erfasst und sie für die Sichtung durch einen Benutzer ausgibt;
  • 4 ein Flussdiagramm, das eine Vorgehensweise beschreibt, mit der man einen Logikanalysator zusammen mit einem Benutzerentwurf übersetzt, um den Logikanalysator in eine Hardwarevorrichtung einzubetten;
  • 5 eine andere Darstellung des Blockdiagramms in 1, die eine programmierbare Logikvorrichtung zeigt, die einen eingebetteten Logikanalysator innerhalb eines elektronischen Systems aufweist;
  • 6 ein ausführlicheres Blockdiagramm einer programmierbaren Logikvorrichtung, die einen eingebetteten Logikanalysator aufweist;
  • 7 einen eingebetteten Logikanalysator, wobei seine Eingänge und Ausgänge gemäß einer Ausführungsform der Erfindung dargestellt sind;
  • 8 ein Blockdiagramm einer eingebetteten Logikanalysatorschaltung gemäß einer Ausführungsform der Erfindung;
  • 9 eine symbolische Darstellung der Arbeitsweise der Zustandssteuer-Maschine des eingebetteten Logikanalysators;
  • 10 eine Tabelle, die die Zustände und entsprechenden Zustandsausgaben der Zustandssteuer-Maschine gemäß einer Ausführungsform angibt;
  • 11 eine erste Ausführungsform, über die ein JTAG-Port einen eingebetteten Logikanalysator mit Hilfe unverbundener Ein/Ausgabe-Zellen steuert;
  • 12 eine herkömmliche für JTAG freigegebene Ein/Ausgabe-Zelle;
  • 13 eine für JTAG freigegebene Ein/Ausgabe-Zelle gemäß der ersten Ausführungsform in 11;
  • 14 eine zweite Ausführungsform, über die ein JTAG-Port einen eingebetteten Logikanalysator mit Hilfe eines Testdatenregisters steuert;
  • 15 eine Anregungszelle, die ein Element des Testdatenregisters in 14 darstellt;
  • 16 eine Erfassungszelle, die ein Element des Testdatenregisters in 14 darstellt;
  • 17A und 17B eine andere Ausführungsform, in der eine beliebige Anzahl von Logikanalysatoren, die in eine Vorrichtung eingebettet sind, mit Hilfe eines JTAG-Ports gesteuert werden; und
  • 18 ein Blockdiagramm eines üblichen Computersystems, das sich zum Implementieren einer Ausführungsform der Erfindung eignet.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Zum Entwickeln eines Entwurfs für die Programmierung eines elektronischen Entwurfs, beispielsweise einer programmierbaren Logikvorrichtung (PLD), wird ein programmierbares Logikentwicklungssystem verwendet. So wie er hier verwendet wird, bezieht sich der Begriff "elektronischer Entwurf" auf Platinen und Systeme, die zahlreiche elektronische Vorrichtungen und Multi-Chip-Module sowie integrierte Schaltungen enthalten. Zum Vereinfachen der Darstellung ist in der folgenden Besprechung allgemein von "integrierten Schaltungen" oder "PLDs" die Rede, obwohl die Erfindung nicht hierauf eingeschränkt ist.
  • PROGRAMMIERBARES LOGIKENTWICKLUNGSSYSTEM
  • 1 zeigt ein Blockdiagramm einer Ausführungsform eines programmierbaren Logikentwicklungssystems 10, das ein Computernetz 12, eine Programmiereinheit 14 und eine programmierbare Logikvorrichtung 16 enthält, die programmiert werden soll. Das Computernetz 12 enthält eine beliebige Anzahl von Computern, die in einem Netz verbunden sind, beispielsweise ein Computersystem A 18, ein Computersystem B 20, ein Computersystem C 22 und einen Computersystem-Dateiserver 23, die alle über eine Netzverbindung 24 miteinander gekoppelt sind. Das Computernetz 12 ist über ein Kabel 26 mit der Programmiereinheit 14 verbunden. Diese ist ihrerseits über ein Programmierkabel 28 mit dem PLD 16 verbunden. Wahlweise kann nur ein Computersystem direkt mit der Programmiereinheit 14 verbunden sein. Zudem muss das Computernetz 12 nicht ständig mit der Programmiereinheit 14 verbunden sein, beispielsweise dann, wenn ein Entwurf entwickelt wird, sondern es braucht nur dann angeschlossen werden, wenn das PLD 16 zu programmieren ist.
  • Die Programmiereinheit 14 kann jede beliebige geeignete Hardware-Programmiereinheit sein, die zum Programmieren des PLD 16 Programmbefehle vom Computernetz 12 aufnimmt. Beispielsweise kann die Programmiereinheit 14 eine Zusatz-Logikprogrammierkarte für einen Computer enthalten sowie eine Masterprogrammiereinheit, die beispielsweise von der Altera Corporation in San Jose, Kalifornien, erhältlich ist. Das PLD 16 kann in einem System oder in einer Programmierstation vorhanden sein. Bei Betrieb nutzt eine beliebige Anzahl von Ingenieuren das Computernetz 12 für die Entwicklung von Programmierbefehlen, wobei sie ein elektronisches Softwarewerkzeug für die Entwurfsautomatisierung nutzen. Haben die Ingenieure einen Entwurf entwickelt und eingegeben, so wird der Entwurf übersetzt und verifiziert, bevor er in die Programmiereinheit heruntergeladen wird. Die Programmiereinheit 14 kann nun den heruntergeladenen Entwurf dazu verwenden, das PLD 16 zu programmieren.
  • Zum Zweck der Fehlersuche in einem PLD gemäß einer Ausführungsform der Erfindung kann irgendeiner der dargestellten Computer oder ein anderer Computer dazu genutzt werden, eine Logikanalysatorschaltung zu spezifizieren und diese Schaltung zusammen mit dem Entwurf eines Benutzers zu übersetzen. Zudem kann man ein Programmierkabel 28 dazu verwenden, den Logikanalysator zu steuern und Daten von ihm zu empfangen, oder man kann ein eigenes Fehlersuchkabel dazu verwenden, einen Computer direkt mit der Vorrichtung 16 zu verbinden.
  • Ein derartiges Logikentwicklungssystem dient zum Erzeugen eines elektronischen Entwurfs. Die Entwurfseingabe und Verarbeitung erfolgt im Rahmen eines "Projekts". Ein Projekt umfasst eine Projektdatei, Entwurfsdateien, Zuordnungsdateien und Simulationsdateien zusammen mit Hierarchieinformation, Systemeinstellungen und Ausgabedateien, zu denen Programmierdateien und Berichtsdateien gehören. Es kann auch eine Projektdatenbank vorhanden sein, die zwischenzeitlich anfallende Datenstrukturen und Versionsinformationen enthält.
  • Ein Projekt umfasst eine oder mehrere Hierarchien von Entwurfsentitäten. Jede Entwurfshierarchie besitzt eine Ausgangsentität, die die alleroberste Entwurfsentität in diesem Hierarchiebaum darstellt (den allerobersten Funktionsblock). Die anderen Entwurfsentitäten in dem Entwurfshierarchiebaum werden Kinderentitäten genannt. Eine Entwurfshierarchie kann Entitäten enthalten, für die keine entsprechende Entwurfsdatei vorhanden ist, beispielsweise bei einer Top-Down-Verfahrensweise. Der Teil der Hierarchie, der solche noch nicht implementierten Entitäten enthält, wird solange nicht übersetzt oder simuliert, bis eine Entwurfsdatei für jede Entität vorliegt. In diesem Fall werden Quelldatei-Schablonen automatisch erzeugt, die definierte Schnittstellen und leere Körper haben, um das Implementieren dieser Teile eines Projekts zu unterstützen. Ein Benutzer erzeugt einen Entwurf, indem er Funktionsblöcke spezifiziert und implementiert. Dies wird nun im Zusammenhang mit einer beispielhaften Entwurfsverfahrensweise beschrieben.
  • ENTWURFSVERFAHREN
  • 2 zeigt ein Entwurfsverfahren 50, in dem eine Systementwurfsspezifikation dazu verwendet wird, einen Entwurf zu entwickeln, mit dem ein PLD programmiert wird. Man beachte, dass die Erfindung im Zusammenhang mit sehr vielen unterschiedlichen Entwurfsverfahren angewendet werden kann. Als Beispiel sei genannt, dass die Arbeitsgruppen-Computertechniken und Systeme der Erfindung im Rahmen der Verfahrensweise nach 2 gut mit einem elektronischen Software-Werkzeug zur Entwurfsautomatisierung (EDA) zusammenarbeiten.
  • Im Schritt 52 erhält man eine Systemspezifikation für das zu programmierende PLD. Diese Spezifikation ist ein externes Dokument oder eine externe Datei, die beispielsweise die Namen der Anschlussstifte der Vorrichtung beschreibt, die Funktionen eines jeden Anschlussstifts, die gewünschte Systemfunktionalität, die Verfügbarkeit von Timing und Ressourcen usw. Die zahlreichen Ingenieure in einer Arbeitsgruppe verwenden diese Systemspezifikation dazu, mit den EDA-Werkzeugen einen Entwurf zu erzeugen, der danach zum Programmieren eines PLD verwendet wird.
  • Liegt die Systemspezifikation vor, so wird mit dem Erzeugen eines Entwurfs mit Hilfe von Funktionsblockdiagrammen begonnen. Im Schritt 54 wird ein Blockdiagramm auf oberster Ebene erzeugt, in dem die Verbindungen zwischen Entwurfsblöcken auf niedrigeren Ebenen festgelegt werden. In diesem Block können die Zielvorrichtung, die Geschwindigkeitsklasse, und die grundlegenden Timinganforderungen festgelegt werden. Fachleuten ist geläufig, dass dieser Block auf oberster Ebene auch Blöcke enthalten kann, die bereits entwickelt oder implementiert sind oder die man von dritter Seite erhalten hat. Dieser Block auf oberster Ebene kann auch in eine HDL-Datei oder eine ähnliche Datei umgewandelt werden, die in anderen verwandten Entwurfswerkzeugen ver wendet wird, etwa in einem externen Simulator.
  • Der Schritt 56 umfasst das Erzeugen von Entwurfsdatei-Schablonen mit dem EDA-Werkzeug für alle Blöcke, die im Blockdiagramm auf oberster Ebene im Schritt 54 vorhanden sind. Nachdem der Entwickler einen Block erzeugt hat, der noch nicht implementiert ist, kann das System eine Entwurfsdatei-Schablone erzeugen. Solche Schablonen können einen Block in einem Fensterformat darstellen, der beispielsweise einen Titel, ein Datum usw. entlang der Grenzen enthält. Er kann auch gewisse Einzelheiten des Funktionsinhalts enthalten, der im Fenster dargestellt ist. Der Entwurf der Entwurfsdatei-Schablonen kann in jedem beliebigen spezifizierten Entwurfsformat vorliegen, beispielsweise VHDL, AHDL, Verilog, Blockdiagramm, Skizze oder einem ähnlichen Format. Im Fall eines VHDL-Blocks kann die Schablone einen wesentlichen Teil der Formatierung und erforderlichen Syntax für beliebige VHDL-Blöcke enthalten. Der Benutzer braucht die Schablone nur zu nehmen und die geringe Menge VHDL-Syntax einzutragen, die zum Implementieren seiner Funktion erforderlich ist. Beispielsweise braucht der Benutzer lediglich Syntax zufügen, die eine bestimmte UND-Gatter-Funktion bestimmt. Übliche Entwürfe wie VHDL oder andere IEEE-Standards erfordern große Textmengen um den Entwurfsblock adäquat aufzubauen.
  • Fachleute sind damit vertraut, dass derartige Entwurfsdatei-Schablonen als Ausgangspunkte für den Entwurf der strukturellen oder funktionalen Einheiten dienen können, die für den Entwurf erforderlich sind. Somit kann eine Entwurfsdatei-Schablone als mehrfach verwendbares Objekt für unterschiedliche Fälle eines Blocks in einem oder mehreren Entwürfen dienen. Wichtiger ist, dass man Entwurfsdatei-Schablonen dafür einsetzt, den Arbeitsaufwand zu reduzieren, den der Entwickler zum Erzeugen der Logik in den Blöcken aufbringen muss. In einer Ausführungsform wird das Erzeugen der Entwurfsdatei-Schablonen so vorgenommen, dass man die Schablonen später aktualisieren kann, falls sich das Blockdiagramm auf oberster Ebene ändert.
  • Nun wird im Schritt 58 jeder Block des Blocks auf oberster Ebene mit dem EDA-Werkzeug implementiert. Man beachte, dass bei komplizierteren Entwürfen zusätzliche Blockdiagrammebenen vorhanden sein können (d.h. Blöcke innerhalb von Blöcken). Sind Veränderungen auf oberster Ebene erforderlich, so wird das Blockdiagramm auf oberster Ebene aktualisiert, und die darunter liegenden Entwürfe werden ebenfalls – bevorzugt automatisch – aktualisiert.
  • Zudem kann ein Block in eine Anpassstufe für eine bestimmte integrierte Schaltungsform übersetzt werden, damit man Information über die Ressourcennutzung, das Zeitverhalten usw. erlangt, die für einen gegebenen Entwurf nötig sind. Damit wird auch in Betracht gezogen, dass während des Schritts 58 eine gewisse Optimierung des Zeitverhaltens erfolgen kann. Diese Abfolge erläutert einen Entwurfsstil, bei dem ein Ingenieur zuerst entwirft, dann übersetzt und simuliert und anschließend zum Entwurf zurückkehrt, falls die Simulationsergebnisse nicht zufriedenstellend sind. Bei einem anderen Entwurfsstil kann ein Ingenieur durch eine Anzahl von Entwürfen iterieren, worauf Simulationsschleifen folgen, bevor schließlich der vollständige Entwurf übersetzt wird.
  • Hinsichtlich der Reihenfolge der Blockimplementierung kann man einen oder mehrere der folgenden Faktoren zum Bestimmen der Implementierungsreihenfolge verwenden: (1) die Komplexität des Blocks; (2) die Ungewissheit bzw. das Risiko, die bzw. das mit dem Block verbunden ist; und/oder (3) wie weit oben oder unten in einem gegebenen Datenpfad der Block angesiedelt ist. Jeder der Schritte 60, 62, 64, 68 und 70 kann auch zu diesem Blockimplementierungsschritt zurückführen, wenn durch spätere Änderungen im Entwurf zusätzliche Implementierungen nötig werden.
  • Im Schritt 60 wird ein Block funktional auf der Quellebene simuliert, wobei ein Verhaltenssimulator verwendet wird sowie Vektoren, die beispielsweise mit Hilfe einer VHDL- oder Verilog-Prüfbank erzeugt werden. Die Simulationsergebnisse können nun angezeigt oder anderweitig dargestellt bzw. aufgezeichnet werden, und zwar als Kurven, als Text oder den Quelldateien als Kommentar beigegeben werden. Der Entwickler kann auch zum Schritt 58 zurückkehren und einen Block neu implementieren. An dieser Stelle kann ein Block auch übersetzt werden oder man kann das Zeitverhalten untersuchen.
  • Ist der Entwickler mit den Simulationsergebnissen zufrieden, so wird der Block im Schritt 62 mit den anderen Blöcken verbunden, und die entstehende Gruppe wird gemeinsam simuliert. In manchen Fällen kann es nützlich sein, eine vollständige Übersetzung abzuschließen, damit man kritische Ressourcen- und Timinginformation erhält. Zudem können die ausgegebenen Simulationsvektoren eines Blocks zu den Eingabe-Simulationsvektoren des folgenden Blocks werden. Der Entwickler kann auch zum Schritt 54 zurückkehren und den Block auf oberster Ebene modifizieren oder zum Schritt 58 und den Block erneut implementieren.
  • Nun wird im Schritt 64 der Gesamtentwurf mit Hilfe eines Verhaltenssimulators auf Quellebene funktional simuliert. Bevorzugt wird das Blockdiagramm auf oberster Ebene vor der Simulation vollständig spezifiziert, und es zeigt die vollständigen Entwurfsverbindungen. Vektoren kann man mit Hilfe einer VHDL- oder Verilog-Prüfbank erzeugen. Wiederum kann man die Simulationsergebnisse entweder als Kurven darstellen oder den Quelldateien als Kommentar anhängen. Der Entwickler kann auch zum Schritt 54 zurückkehren und den Block auf oberster Ebene modifizieren oder zum Schritt 58 und einen Block neu implementieren. Im Schritt 66 wird der gesamte Entwurf in eine Datei übersetzt, die die Information enthält, die zum Programmieren eines PLD nötig ist, das den Entwurf des Benutzers implementiert, beispielsweise in eine "Programmier-Ausgabedatei".
  • Abhängig davon welche Entwurfsart erzeugt wird kann man eine breite Vielfalt von Übersetzungstechniken verwenden. Als Beispiele werden im Weiteren einige Möglichkeiten der Übersetzung angegeben. Für ein PLD umfasst die Übersetzung die Schritte der Synthese, der Platzierung und Verbindung, des Erzeugens von Programmierdateien und der Simulation. Für einen herkömmlichen integrierten Schaltungsentwurf mit einem gebräuchlichen Layout umfasst das Übersetzen einen Layout-Versionsplan, eine Entwurfsregelprüfung und Simulationen. Für den Entwurf integrierter Schaltungen mit einem hochentwickelten Entwurfswerkzeug umfasst das Übersetzen die Synthese aus einer Sprache wie VHDL oder Verilog, das automatische Platzieren und Verbinden und Simulationen. Für gedruckte Platinen umfasst das Übersetzen das automatische Verbinden, die Entwurtsregelprüfung, die Entnahme verteilter Parameter und die Simulation. Natürlich sind andere Übersetzungsarten und Variationen der obigen Vorgehensweisen möglich.
  • Im Zusammenhang der Erfindung kann jede der genannten Übersetzungstechniken abgewandelt werden, um einen eingebetteten Logikanalysator zu erzeugen. Anhand von 4 wird im Weiteren ausführlicher besprochen, wie das Übersetzen eines PLD modifiziert wird, um einen Logikanalysator in einen Benutzerentwurf einzufügen.
  • Nach dem Übersetzen im Schritt 66 wird im Schritt 68 der Timingprüfer innerhalb des Übersetzers dazu verwendet, festzustellen, ob die Verhaltensziele für den Entwurf erreicht werden. Timingsimulationen werden auch dazu verwendet, Einzelheiten des Verhaltens zu prüfen. Zusätzlich können weitere Analysewerkzeuge wie Entwurtsprofiler und/oder Layouteditor dazu verwendet werden, das Verhalten des Entwurfs weiter zu optimieren. Bevorzugt erfolgt die Optimierung nicht vor dem Schritt 68, da man in der Regel eine vollständige Übersetzung benötigt, um den Ort eines oder mehrerer kritischer Pfade im Entwurf festzustellen. Der Entwickler kann auch zum Schritt 54 zurückkehren und den Block auf oberster Ebene verändern oder zum Schritt 58 um einen Block neu zu implementieren.
  • Nun wird im Schritt 70 die Vorrichtung mit Hilfe der Programmiereinheit 14 programmiert bzw. konfiguriert und im System geprüft. Wiederum kann der Entwickler auch zum Schritt 54 zurückkehren und den Block auf oberster Ebene verändern oder zum Schritt 58 um einen Block neu zu implementieren. Die Verfahrensweise 50 stellt einen Top-Down-Entwurfsablauf vor. Man kann sie aber auch dazu verwenden, eine Bottom-Up-Verfahrensweise zu unterstützen. Da nun die allgemeine Entwurfsverfahrensweise beschrieben ist, mit der ein Ingenieur einen Entwurf für ein PLD entwickeln kann, wird nun ein Vorgehen zum Einbetten eines Logikanalysators in ein PLD beschrieben.
  • EINGEBETTETER LOGIKANALYSATOR
  • Das Flussdiagramm in 3A und 3B beschreibt eine mögliche Vorgehensweise, mit der ein Benutzer einen Logikanalysator in ein PLD einbetten kann, um gewünschte Signale zu erfassen und die Ergebnisse auf einem Computer zu sehen. Im Schritt 102 erzeugt ein Benutzer einen Entwurf für eine Vorrichtung und übersetzt den Entwurf in eine Ausgabedatei. Man kann eine breite Vielfalt von EDA-Werkzeugen dazu verwenden, einen Entwurf für ein PLD zu erzeugen und zu übersetzen. Als Beispiel kann die Vorgehensweise verwendet werden, die im US-Patent Nr. 60/029,277 offenbart ist.
  • Im Schritt 104 wird die übersetzte Ausgabedatei zum Programmieren der Vorrichtung verwendet. Die Vorrichtung wird unter Einsatzbedingungen betrieben, beispielsweise auf einer gedruckten Platine oder innerhalb eines geeigneten elektronischen Systems. In diesem Schritt ist es möglich, dass ein Benutzer Fehlfunktionen der Vorrichtung feststellt. Trifft dies zu, so wird im Schritt 106 ein Hardware-Fehlersuchmerkmal des EDA-Werkzeugs aktiviert. Diese Aktivierung erlaubt es dem EDA-Werkzeug, die Netzliste zu ergänzen. D.h., der Benutzerentwurf in den verschiedenen Entwurfsdateien wird um einen Logikanalysator gemäß einer Ausführungsform der Erfindung erweitert; dies wird in 4 ausführlicher beschrieben. Dieses Fehlersuchmerkmal erlaubt es auch, die kombinierte Netzliste zu verarbeiten und in die Vorrichtung zu programmieren.
  • Nun kann der Benutzer den Logikanalysator programmieren, um Fehler in der Vorrichtung in jeder beliebigen Weise zu suchen, die der Benutzer auswählt. Ein Beispiel für eine Logikanalysatorschaltung ist in 8 dargestellt. Der Entwurf des Logikanalysators kann bereits in dem EDA-Werkzeug vorhanden sein oder er kann zu jedem beliebigen Zeitpunkt erzeugt werden. Im Schritt 108 werden die interessierenden Signale der Vorrichtung spezifiziert, die überwacht werden sollen. Es handelt sich dabei um die Signale, die ein Benutzer zu sehen wünscht, um die Ursache der Fehlfunktion aufzuspüren. Bei den Signalen kann es sich um Signale handeln, die an Anschlussstiften der Vorrichtung anliegen oder um beliebige interne Signale oder Punkte der Vorrichtung. Die Art der im Schritt 104 beobachteten Fehlfunktion liefert oft einen Anhaltspunkt bezüglich der Signale, die vermutlich weitere Information über das Problem beibringen. Steht beispielsweise die Fehlfunktion im Zusammenhang mit der Datenausgabe an einem bestimmten Anschlussstift, so können die zu überwachenden Signale von der Logik stammen, die dem Anschlussstift vorgeschaltet ist.
  • Diese zu überwachenden Signale können auf viele verschiedene Arten spezifiziert werden. Beispielsweise kann man einen hierarchischen Pfadnamen für jedes Signal festlegen, oder man kann eine graphische Benutzerschnittstelle dazu verwenden, eine bestimmte Entwurfsdatei einzusehen und ein Signal oder einen Punkt innerhalb dieser Datei zu wählen, das bzw. der überwacht werden soll. In einer anderen Ausführungsform kann der Benutzer auch festlegen, welche Anschlussstifte der Vorrichtung als Schnittstelle zum Benutzercomputer verwendet werden sollen, d.h. diejenigen Anschlussstifte, die zum Senden von Steuerinformation an den eingebetteten Logikanalysator im PLD und zum Hochladen von erfasster Information vom Logikanalysator zum Benutzercomputer verwendet werden sollen. Bevorzugt kennt man jedoch die Anschlussstifte bereits, die als Schnittstelle verwendet werden sollen, beispielsweise einen JTAG-Port der Vorrichtung.
  • Im Schritt 110 wird die Gesamtanzahl der Abtastwerte festgelegt, die erfasst werden sollen. Anders ausgedrückt wird die Tiefe des Abtastspeichers bestimmt. Dies gibt seinerseits die Anzahl der Taktimpulse an, bei denen der Logikanalysator Daten erfasst. Die Gesamtanzahl der zu erfassenden Abtastwerte enthält alle zu erfassenden Abtastwerte, und zwar vor oder nach einem festgelegten Haltepunkt. Anders formuliert bezeichnet die festgelegte Anzahl die Breite eines Datenfensters, das erfasst werden soll. Das Fenster kann den Haltepunkt umschließen, es kann vollständig vor dem Haltepunkt liegen oder es kann vollständig nach dem Haltepunkt liegen.
  • In einer Ausführungsform eignet sich ein PLD, das eingebettete Speicherblöcke enthält (beispielsweise irgendein PLD aus der FLEX 10K-Vorrichtungsfamilie, die von der Altera Corporation erhältlich sind), zum Implementieren der Erfindung. Die eingebetteten Speicherblöcke lassen sich leicht so programmieren, dass sie relativ große Puffer (als Teil der Logikanalysatorschaltung) zum Speichern der erfassten Information bilden. Zum Puffern der erfassten Information sind jedoch keine eingebetteten Speichervorrichtungen erforderlich. Man kann auch Vorrichtungen ohne eingebetteten Speicher verwenden; sie lassen sich jedoch nicht so leicht zum erzeugen relativ großer Puffer verwenden. In Vorrichtungen ohne eingebetteten Speicher kann man Puffer über zahlreiche Zellen implementieren und verfügbaren Speicher aus jeder Zelle verwenden.
  • Im Schritt 112 wird ein Systemtaktsignal für den Gebrauch durch den Logikanalysator festgelegt. Man kann jedes Signal von zahlreichen verschiedenen in der Vorrichtung verfügbaren Signalen als Systemtaktsignal definieren. Normalerweise wählt man ein Vorrichtungstaktsignal, das sich auf die überwachten Signale bezieht, als Systemtaktsignal. Man kann auch ein Vielfaches eines Vorrichtungstaktsignals wählen, damit die Signale häufiger abgetastet werden.
  • Im Schritt 114 wird ein Haltepunkt festgelegt. Ein Haltepunkt kann eine beliebige Anzahl zu überwachender Signale enthalten sowie die Logikpegel, die diese Signale haben müssen, um den Logikanalysator auszulösen. D.h., der Haltepunkt beschreibt einen bestimmten Status der Vorrichtung. Ein Haltepunkt kann ganz einfach die Statusänderung eines Signals sein. Es kann auch ein kompliziertes Muster aus Signalen sein oder eine Folge von Mustern, die auftritt, bevor der Logikanalysator ausgelöst wird. Ein Haltepunkt muss nicht in jedem Fall festgelegt werden. Geschieht dies nicht, so beginnt der Logikanalysator unmittelbar nach dem Anlauf mit der Datenerfassung. Der Benutzer kann den Haltepunkt vorteilhafterweise zu jedem beliebigen Zeitpunkt mit Hilfe des EDA-Werkzeugs ändern. Man kann einen neuen Haltepunkt auf den eingebetteten Logikanalysator in der Vorrichtung herunterladen, ohne dass man alle Entwurfsdateien der Vorrichtung neu übersetzen muss. Da es möglich ist, Haltepunkte für eine Vorrichtung in einem System sehr rasch zu verändern, ist die Fehlersuche sehr viel effizienter. Vorteilhaft ist, dass man die Daten nicht nur nach dem Haltepunkt sondern auch vor dem Auftreten des Haltepunkts erfassen kann.
  • Im Schritt 115 legt der Benutzer die Anzahl der Datenabtastungen fest, die vor dem Haltepunkt zu erfassen sind. Vorteilhaft ist, dass der Benutzer jede beliebige Anzahl an Abtastungen festlegen kann, die vor dem Auftreten des Haltepunkts zu erfassen ist. Damit kann man diese vorhergehenden Signale später untersuchen und damit das Erkennen der Ursache des Versagens, des Fehlers oder einer Bedingung unterstützen. Wie im Folgenden anhand von 8 bis 10 erklärt wird, erlaubt es die Implementierung des eingebetteten Logikanalysators, Abtastwerte fortlaufend zu speichern. Dies liefert einem Benutzer jede beliebige Anzahl von Abtastwerten, die er vor dem Haltepunkt benötigt. Wahlweise kann ein Benutzer die Anzahl der Abtastwerte festlegen, die er nach dem Haltepunkt benötigt. Da die Gesamtanzahl der zu erfassenden Abtastwerte im Schritt 110 spezifiziert wird, ist es sehr einfach, die benötigten vorhergehenden Abtastwerte aus den benötigten nachfolgenden Abtastwerten zu berechnen oder umgekehrt. Der Benutzer kann die vor dem Haltepunkt benötigten Abtastwerte und die nach dem Haltepunkt benötigten Abtastwerte angeben. Die Gesamtanzahl der zu erfassenden Abtastwerte kann dann automatisch berechnet werden.
  • Zusätzlich zur Möglichkeit, die Anzahl der zu erfassenden Abtastwerte im Schritt 110 festzulegen sowie die Anzahl der vor dem Haltepunkt benötigten Abtastwerte im Schritt 115, können diese Werte auch spezifiziert werden, nachdem der Benutzerentwurf und der Logikanalysator übersetzt sind. Anders ausgedrückt können in den Schritten 110 und 115 gewisse Werte vor dem Übersetzen des Entwurfs bestimmt werden. Diese Werte können aber auch in den Logikanalysator eingegeben werden, wenn das PLD bereits programmiert ist oder selbst dann, wenn der Logikanalysator bereits läuft. Beispielsweise kann das Register 310 in 8 jederzeit auf den Wert Delay[6:0] gesetzt werden, um die Anzahl der Abtastwerte anzuzeigen, die nach dem Auftreten des Haltepunkts zu erfassen sind. Die Gesamtanzahl der zu erfassenden Abtastwerte ist gleich der Anzahl der Wörter im Abtastspeicher 324. Weitere vor dem Übersetzen spezifizierte Werte können in ähnlicher Weise nach dem Übersetzen festgelegt werden, beispielsweise das Triggerregister 304.
  • Hat der Benutzer festgelegt, wie der eingebettete Logikanalysator funktionieren soll, so wird der vollständige Entwurf übersetzt. Im Schritt 116 gibt der Benutzer einen Übersetzungsbefehl, damit der Vorrichtungsentwurf des Benutzers zusammen mit dem festgelegten Logikanalysatorentwurf übersetzt wird. In einer bevorzugten Ausführungsform der Erfindung werden die Entwurfsdateien während dieses Vorgangs nicht verändert. Der Logikanalysatorentwurf wird in die erzeugten Ausgabedateien eingebaut. In einer bestimmten Ausführungsform kann der in 4 dargestellte Ablauf zum Implementieren des Schritts 116 verwendet werden. Natürlich lassen sich weitere ähnliche Vorgehensweisen einsetzen.
  • Das Ergebnis dieses Schritts ist eine neue Ausgabedatei, die den Benutzerentwurf mit einem eingebetteten Logikanalysator enthält. Eine Technik, mit der ein EDA-Werkzeug einen maßgeschneiderten Logikanalysator in einen Entwurf einfügt, wird im Weiteren anhand von 4 ausführlicher erklärt. Nach dem Erzeugen der neuen Ausgabedatei wird die Vorrichtung im Schritt 118 innerhalb ihres Systems neu programmiert, wobei die neue Ausgabedatei verwendet wird.
  • Im Schritt 120 verbindet der Benutzer die Vorrichtung und den Benutzercomputer mit einem Fehlersuch-Schnittstellenkabel. Das Schnittstellenkabel kann das gleiche Kabel sein, das zum Programmieren der Vorrichtung verwendet wird, oder es kann ein extra der Fehlersuche zugeordnetes Kabel sein. In einer Ausführungsform der Erfindung ist das Fehlersuchkabel mit Anschlussstiften verbunden, die der Benutzer im Schritt 108 festgelegt hat und die der Logikanalysatorschaltung zugewiesen sind. Hat der Benutzer – anders formuliert – die Anschlussstifte definiert, an die das Fehlersuchkabel anzuschließen ist, so sollte das Kabel auch an diese Anschlussstifte angeschlossen werden. In einer anderen Ausführungsform braucht der Benutzer keine "Fehlersuchstifte" zu spezifizieren, sondern das System legt sie automatisch fest. In einer weiteren Ausführungsform kann ein zugeordneter JTAG-Port der Vorrichtung Verwendung finden.
  • Das Kabel kann direkt an diese Anschlussstifte angeschlossen werden, oder die Signale von diesen Anschlussstiften können an einen leicht zugänglichen Ort oder Port auf der Platine geführt werden, an dem man das Fehlersuchkabel leicht anschließen kann. Man kann das Kabel dazu verwenden, Befehle vom Computer an den eingebetteten Logikanalysator zu übertragen sowie zum Hochladen der erfassten Information vom Logikanalysator zum Computer. Im Weiteren wird erklärt, dass 5 ein PLD zeigt, das sowohl einen Benutzerentwurf als auch einen eingebetteten Logikanalysator innerhalb eines elektronischen Systems enthält. Dargestellt ist ein Kabel 28, das das elektronische System mit einem externen Computer verbindet.
  • Im Schritt 122 fordert der Benutzer über das EDA-Werkzeug den eingebetteten Logikanalysator mit einem geeigneten Befehl auf, mit der Arbeit zu beginnen. Fängt der Logikanalysator an zu laufen, so beginnt er im Schritt 124, kontinuierlich Daten von den Signalen zu erfassen, die für die Überwachung festgelegt sind. Bevorzugt manipuliert der Benutzer nun das System so, dass es die vorhergehenden Fehlfunktionen wiederholt, die der Benutzer untersuchen will. Die erfassten Daten werden im Speicher des PLD abgelegt, und sie werden bevorzugt im zugewiesenen Speicher innerhalb des eingebetteten Logikanalysators selbst abgelegt. Im Schritt 126 wird geprüft, ob ein Haltepunkt aufgetreten ist. Anders beschrieben stellt der Logikanalysator fest, ob der Status der für die Überwachung spezifizierten Signale gleich dem Haltepunkt ist, den der Benutzer angegeben hat. Trifft dies nicht zu, so erfasst der Logikanalysator weiterhin Daten. Trifft dies zu, so wird im Schritt 128 festgestellt, ob nach dem Haltepunkt weitere Abtastwerte erfasst und gespeichert werden sollen. Der Schritt 128 kann implementiert werden, indem man die Gesamtanzahl der gewünschten Abtastwerte mit der Anzahl der Abtastwerte vergleicht, die bereits vor dem Erreichen des Haltepunkts gespeichert wurden. Sind weitere Abtastwerte zu speichern, so fährt der Logikanalysator im Schritt 130 nach dem Haltepunkt mit dem Speichern der gewünschten Anzahl Abtastwerte fort.
  • Wurde die vom Benutzer gewünschte Gesamtanzahl an Abtastwerten erfasst und gespeichert, so werden im Schritt 132 die abgelegten Daten aus dem Abtastspeicher des Logikanalysators auf dem Benutzercomputer übertragen. Der Logikanalysator lädt die gespeicherte Information bevorzugt über das Schnittstellenkabel auf den Benutzercomputer hoch. Im Schritt 134 kann der Benutzer diese vom Logikanalysator empfangenen Signale graphisch ansehen. In einer Ausführungsform werden die Signale in einer Kurvendarstellung angeboten, die mit den Signalnamen bezeichnet ist. Durch das Betrachten dieser interessierenden Signale auf einem Computer kann der Benutzer wirksam Fehler in einer Hardwarevorrichtung nahezu so suchen, als wäre er in der Lage, einen externen Logikanalysator an diese Signale anzuschließen.
  • 4 zeigt ein Flussdiagramm 200, das eine Vorgehensweise beschreibt, mit der man eine Logikanalysatorschaltung automatisch in einen Benutzerentwurf einfügen und automatisch mit diesem Entwurf übersetzen kann. Die Vorgehensweise in 4 ist eine geeignete Technik, mit der man den Schritt 116 in 3B implementieren kann (im Zusammenhang mit dem Übersetzen des PLD). Natürlich kann man mit den verschiedenen EDA-Werkzeugen mehrere Übersetzungstechniken verwenden, und zwar sowohl für den PLD-Entwurf als auch für andere Arten von integrierten Schaltungen. Die Ausführungsform in 4 erläutert, wie man die Erfindung zusammen mit einer solchen Übersetzungstechnik verwenden kann, obwohl in Betracht gezogen wird, dass die Erfindung auf eine breite Vielfalt von Übersetzungstechniken anwendbar ist.
  • Im Schritt 202 nimmt ein EDA-Werkzeug die Benutzerentwurfsdateien an, die zum Beschreiben eines elektronischen Entwurfs für eine Vorrichtung, beispielsweise ein PLD, erforderlich sind. Diese Entwurfsdateien können häufig die Entwurfselemente für den Entwurf festlegen. In manchen Entwurfsumgebungen sind die Entwurfselemente hierarchisch angeordnet, d.h. von der Einheit auf oberster Ebene bis zu den Einheiten auf unterster Ebene. Wird in derartigen Fällen im Entwurf ein bestimmtes Register an zahlreichen Stellen innerhalb des Entwurfs verwendet, so kann es sein, dass nur eine Datei vorhanden ist, die die Implementierung dieses Entwurfs enthält, und der komplette Entwurf kann sich an zahlreichen Stellen auf diese eine Datei beziehen. Beispiele für derartige elektronische Entwurfsdateien sind weiter vorne anhand von 1 und 2 erklärt.
  • Im Schritt 204 werden diese Benutzerentwurfsdateien genommen, und es wird eine eingeebnete Netzlistendarstellung des Benutzerentwurfs erzeugt. Sollten die Entwurfsdateien – anders ausgedrückt – eine Hierarchie enthalten, so wird diese Hierarchie "eingeebnet", d.h. jede im Entwurf angesprochene Einheit wird so oft dupliziert wie sie benötigt wird. Wird im obigen Beispiel ein bestimmtes Register in der Entwurfshierarchie zwei Mal verwendet, so existiert jedoch nur eine Datei, die dieses Register beschreibt. In diesem Schritt wird der Entwurf eingeebnet, indem zwei derartige Dateien für das Register erzeugt werden. Die Darstellung des Benutzerentwurfs ist in diesem Schritt, wie Fachleuten bekannt ist, bevorzugt eine synthetisierte technologiegestützte Datenbank. An dieser Stelle des Übersetzungsablaufs wird eine synthetisierte Netzliste des Benutzerentwurfs in einem eingeebneten Zustand erzeugt. In der Regel bezeichnet man das Erstellen einer derartigen Netzliste als "Syntheseschritt" im Übersetzungsablauf, und zwar nachdem die Bearbeitung erfolgt ist.
  • Im Schritt 206 wird eine Darstellung der Logikanalysatorschaltung auf Gatterebene erstellt. Die Logikanalysatorschaltung kann sehr unterschiedliche Formen annehmen. Als Beispiel kann die Logikanalysatorschaltung 260 in 8 verwendet werden. Man darf jedoch nicht übersehen, dass man eine Logikanalysatorschaltung auf zahlreiche unterschiedliche Weisen implementieren kann, die nach wie vor die Funktionalität der in 8 dargestellten Schaltung besitzen. In einer bevorzugten Ausführungsform der Erfindung ist eine Logikanalysatorschaltung in dem EDA-Werkzeug enthalten, so dass eine Darstellung auf Gatterebene automatisch erzeugt werden kann. Wahlweise kann man es dem Benutzer gestatten, eine eigenständige Schaltung festzulegen. Diese Darstellung auf Gatterebene bezieht jedes Logikelement der Schaltung ein und zwar zusammen mit der Anzahl und den Namen der zu überwachenden Signale, die der Benutzer im Schritt 108 festgelegt hat, der Anzahl der zu erfassenden Abtastwerte, die im Schritt 110 festgelegt werden, der Anzahl der vor dem Haltepunkt benötigten Abtastwerte, die im Schritt 115 festgelegt wird, und dem Haltepunkt, der im Schritt 114 festgelegt wird. Fachleuten ist der Ablauf bekannt, mit dem eine Darstellung auf Gatterebene für eine bestimmte Schaltung erzeugt wird.
  • Die tatsächliche Darstellung auf Gatterebene für eine bestimmte Logikanalysatorschaltung hängt von der besonderen Vorrichtung ab, in die der Logikanalysator eingebettet wird. Beispielsweise kann die Hardwarevorrichtung, in die der Logikanalysator einzubetten ist, irgendeine der PLD-Vorrichtungen enthalten, die von der Altera Corporation erhältlich sind. Besonders gut geeignet sind sämtliche Typen FLEX 10K, FLEX 8000, MAX 9000 oder MAX 7000. Jede dieser besonderen Vorrichtungen kann unterschiedliche Merkmale aufweisen, die darauf Einfluss nehmen, wie eine Darstellung auf Gatterebene für einen Logikanalysator erstellt wird. Beispielsweise ist für eine Vorrichtung FLEX 10K mit relativ großen eingebetteten Speicherabschnitten dieser eingebettete Speicher besonders gut zum Implementieren eines großen FIFO-Speichers (First-In, First-Out) für den Logikanalysator geeignet. Bei einer Vorrichtung ohne eingebetteten Speicher, beispielsweise der FLEX 8000, können die Speicherelemente (etwa SRAM-Flipflops) der Logikzellen als Speicher des Logikanalysators verwendet werden. Es kann jedoch sein, dass man den FIFO-Puffer über zahlreiche Zellen verteilen muss, falls der Speicher in einer einzigen Zelle zum Aufnehmen des Puffers nicht groß genug ist. In ähnlicher Weise kann man bei einer auf der EEPROM-Technologie beruhenden Vorrichtung ebenfalls eine oder mehrere Logikzellen für den Puffer des Logikanalysators verwenden. Eine Vorrichtung mit einem großen eingebetteten Speicher eignet sich besonders gut, da die Kapazität für die Signalspeicherung größer ist. Damit entsteht im Schritt 206 eine Darstellung für eine Logikanalysatorschaltung, die mit dem Benutzerentwurf zu verbinden ist.
  • Im Schritt 208 wird die Darstellung der Logikanalysatorschaltung auf Gatterebene aus dem Schritt 206 mit der eingeebneten Darstellung des Benutzerentwurfs im Schritt 204 verbunden. Dieser Schritt stellt die logischen Verbindungen von den Eingängen des Logikanalysators (Haltepunktsignale, Systemtakt, zu überwachende Signale) zu den Leitungen her, die die tatsächlichen Signale führen, die im Benutzerentwurf festgelegt sind. Da diese Signale bereits vorher in den Schritten 108 bis 115 festgelegt worden sind, kann das EDA-Werkzeug die jeweiligen Signalleitungen in seiner Datenbankdarstellung des elektronischen Entwurfs finden und die passende Verbindung zu einem Eingang des Logikanalysators herstellen.
  • Zudem werden in diesem Schritt geeignete Verbindungen vom Logikanalysator zu einer Schnittstelle zum Computer des Benutzers hergestellt. In der Ausführungsform in 6, die im Weiteren beschrieben wird, enthält diese Schnittstelle Testdatenregister 274, die mit dem JTAG-Port 272 verbunden sind. Damit werden Eingabe- und Ausgabeverbindungen zum und vom Logikanalysator, die eine Schnittstelle zum Benutzercomputer liefern, mit dem passenden Testdatenregister verbunden. Beispielsweise werden, siehe 7 und 8, die Eingangssignale (vom Benutzercomputer zum Logikanalysator) Trigger Signals, Trigger Register, Set Delay, Delay[6:0], NextReq, StopReq, RunReq und Clear mit geeigneten Testregistern verbunden. Ausgangssignale (vom Logikanalysator zum Benutzercomputer) DataOut[15:0], NumSamples[7:0], Triggered und Run werden ebenfalls mit dem geeigneten Testregister verbunden. Testregister werden bevorzugt aus programmierbarer Logik aufgebaut und sind Fachleuten geläufig.
  • Natürlich kann man in einer anderen Ausführungsform einer Logikanalysatorschaltung andere Signale und/oder eine größere oder geringere Anzahl von Schnittstellensignalen verwenden. In einer bevorzugten Ausführungsform der Erfindung werden diese Schnittstellensignale zum und vom Logikanalysator mit zugewiesenen Anschlussstiften auf dem PLD verbunden, die für diesen Zweck reserviert sind. Damit weiß ein Benutzer, an welchen Anschlussstiften das Fehlersuchkabel befestigt werden muss. Wie erwähnt steuern diese Anschlussstifte nicht nur den eingebetteten Logikanalysator, sondern sie empfangen auch Daten vom Logikanalysator. In anderen Ausführungsformen kann man diese zugewiesenen Anschlussstifte auch mit einem anderen Teil der Platine verbinden, damit man ein Kabel leicht anbringen kann. Auf diese Weise wird die Logik für die Logikanalysatorschaltung, die im Schritt 206 erzeugt wurde, für die Kommunikation mit dem Benutzercomputer sowohl mit dem Benutzerentwurf als auch den Schnittstellenstiften des PLD verbunden.
  • Im Schritt 210 wird der vollständige im Schritt 208 erzeugte Entwurf in einer Weise platziert und verbunden, mit der Fachleute vertraut sind. Die Ausgabe des Platzierungs- und Verbindungsschritts wird daraufhin in den Schritt 212 eingegeben, in dem die Ausgabedatei zusammengestellt wird. Diese Ausgabedatei kann nun in ein PLD heruntergeladen werden, um es zu programmieren. Nach dem Programmieren eines PLD mit dieser Datei kann der Benutzer mit dem Gebrauch des eingebetteten Logikanalysators beginnen, um in der Vorrichtung Fehler zu suchen.
  • 5 zeigt eine weitere Ansicht des programmierbaren Logikentwicklungssystems 10 in 1. Dargestellt ist eine programmierbare Logikvorrichtung, die einen eingebetteten Logikanalysator innerhalb eines elektronischen Systems aufweist. Das System 10 zeigt ein elektronisches System 252, das mit einem Computersystem A 18 über ein Kabel 28 oder eine andere Verbindungsvorrichtung verbunden ist. Das elektronische System 252 enthält ein PLD 16, das eine Komponente des elektronischen Systems darstellt. Das PLD 16 teilt sich möglicherweise eine oder mehrere elektronische Verbindungen 254 mit den anderen Komponenten und Elementen, die das elektronische System bilden. Das PLD 16 ist mit einem Benutzerlogikentwurf 256 und einem eingebetteten Logikanalysator 260 konfiguriert. Die Benutzerlogik 256 ist mit einem Entwurf gemäß der in 2 beschriebenen Verfahrensweise konfiguriert oder mit irgendeiner anderen geeigneten Entwurfsverfahrensweise. Der eingebettete Logikanalysator 260 ist in das PLD 16 gemäß einer Ausführungsform der Erfindung integriert, die in 3A und 3B beschrieben ist.
  • Die Logikverbindungen 262 erlauben es, Signale von der Benutzerlogik 256 an den Logikanalysator 260 zu übertragen. Diese Signale können einen Systemtakt, Triggersignale, zu überwachende Signale usw. enthalten. Die Anschlussstifte des PLD 16 dienen zum Verbinden der Schnittstellensignale 264 vom Logikanalysator mit zugehörigen Anschlüssen 266 im elektronischen System 252. Das Kabel 28 dient dazu, diese Schnittstellensignale mit dem Computer 18 zu verbinden. Wahlweise kann der Computer 18 direkt mit dem PLD 16 verbunden werden und Schnittstellensignale 264 an das PLD übertragen. Auf diese Weise überträgt der Computer 18 Befehle und andere Informationen an den eingebetteten Logikanalysator 260, und er empfängt Information vom Logikanalysator, ohne den funktionalen Betrieb des elektronischen Systems 252 direkt zu unterbrechen oder zu beeinträchtigen. Das PLD 16 ist somit dafür konfiguriert, sowohl die Funktion der Benutzerlogik 256 als auch des eingebetteten Logikanalysators 260 auszuführen.
  • Fachleuten ist bekannt, dass die tatsächlich verwendete Schnittstelle zwischen dem Logikanalysator 260 und einem externen Computersystem mehrere unterschiedliche Formen annehmen kann. Der hier beschriebene eingebettete Logikanalysator kann von einem außen angeordneten Computer über jede beliebige geeignete Schnittstelle auf dem PLD gesteuert werden. Zudem kann sich die exakte Anzahl der Anschlussstifte auf dem PLD 16, die zum Steuern des Logikanalysators 260 und zum Empfangen von Daten vom Logikanalysator verwendet werden, abhängig von der programmierten Vorrichtung, dem Gesamtplatinenentwurf usw. unterscheiden. Natürlich kann man die verwendeten Anschlussstifte flexibel zuweisen oder man kann die zugeordneten Schnittstellenstifte verwenden.
  • Man kann auch andere Techniken zum Steuern eines eingebetteten Logikanalysators und zum Empfangen von Ausgabedaten verwenden.
  • 6 zeigt eine weitere Ansicht des PLD 16 und stellt eine bevorzugte Ausführungsform zum Steuern eines Logikanalysators über den JTAG-Port der Vorrichtung dar, in die der Logikanalysator eingebettet ist. Zur Vereinfachung ist die Benutzerlogik 256 innerhalb des PLD 16 nicht dargestellt. In dieser bevorzugten Ausführungsform werden die Schnittstellensignale 264 mit Hilfe eines JTAG-Ports 272 zusammen mit der Steuerlogik 274 und Signalen 275 implementiert. Ein JTAG-Port 272 (JTAG = Joint Test Action Group) wird gemäß dem IEEE-Standard 1149.1 implementiert und ist Fachleuten bekannt. Die Steuerlogik 274 liefert die Pufferung zwischen dem Logikanalysator 260 und dem JTAG-Port 272 für bestimmte Signale, die im Folgenden in 7 beschrieben werden. Im Einzelnen liefert die Steuerlogik 274 Steuersignale an den Logikanalysator 260 und unterstützt das Holen von Daten und Statusangaben vom Logikanalysator.
  • In dieser Ausführungsform enthält der JTAG-Port 272 die Signale TCLK, TMS, TDI und TDO. Das Signal TCLK ist ein Taktsignal, das die serielle Eingangs- und Ausgangsdatenrate des JTAG-Ports 272 steuert. Das Signal TMS ist ein Modusauswahlsignal, das irgendeinen der sechzehn Zustände des JTAG-Ports auswählt. Die Signale TDI und TDO bedeuten serielle Eingabedaten bzw. serielle Ausgabedaten.
  • Normalerweise dient ein JTAG-Port entweder dazu, ein PLD zu programmieren oder das Prüfen einer Platine zu unterstützen, auf der sich PLDs befinden. Vorteilhafterweise hat man erkannt, dass der JTAG-Port bisher während des Entwurfs eines bestimmten PLD und bei der Fehlersuche darin nicht verwendet worden ist. Somit hat man ferner erkannt, dass der JTAG-Port auf einem PLD nicht vollständig ausgelastet ist und man ihn während der Fehlersuche in einem PLD als Kommunikationsmittel mit dem eingebetteten Logikanalysator der Erfindung und zum Steuern des Logikanalysators verwenden kann. In vorteilhafter Weise wird ein Standard-JTAG-Port dazu verwendet, die Fehlersuche in einer programmierbaren Logikvorrichtung zu vereinfachen, die einen eingebetteten Logikanalysator enthält. Zwei besondere Ausführungsformen zum Implementieren der Steuerlogik 274, die das Steuern eines eingebetteten Logikanalysators über einen JTAG-Port vereinfacht, werden im Weiteren anhand von 1113 und 1417 beschrieben.
  • 7 erläutert die Eingabe- und Ausgabesignale für den eingebetteten Logikanalysator 260 gemäß einer Ausführungsform der Erfindung. Die Signale DataIn 280 sind die Signale, die der Benutzer im Schritt 108 festgelegt hat und die zum Zweck der Fehlersuche im PLD zu überwachen sind. Das Signal SetDelay 281 ist eine Steuerleitung, die bewirkt, dass das Register 310 mit dem Wert des Signals Delay 282 geladen wird, das die Anzahl der Abtastwerte angibt, die nach einem Haltepunkt zu erfassen sind. Das Signal Delay 282 bezeichnet die Anzahl der Abtastwerte, die nach einem Haltepunkt zu erfassen sind, und es wird vom Computersystem 18 empfangen, nachdem es der Benutzer spezifiziert hat. Das Signal Breakpoint 283 zeigt dem Logikanalysator an, dass ein Haltepunkt aufgetreten ist. Dieses Signal erzeugt der Triggerkomparator 306 innerhalb des Logikanalysators, oder es kann in der vom Benutzer entworfenen Logik erzeugt werden.
  • Das Signal NextReq 284 wird vom Computersystem 18 empfangen und erlaubt das Holen von gespeicherten Abtastdaten, und zwar einen Abtastwert je Zeiteinheit, und es gibt an, dass der folgende Abtastwert auf das Computersystem 18 hochgeladen werden sollte. Das Signal StopReq 285 wird vom Computersystem 18 empfangen und weist den Logikanalysator an, in seinen Haltstatus zu gehen und das Erfassen von Signalabtastwerten zu beenden. Das Signal RunReq 286 wird vom Computersystem 18 empfangen und weist den Logikanalysator an, mit der Arbeit zu beginnen und Abtastdaten zu empfangen. Das Signal DoneDump 287 weist den Logikanalysator an, die Ausgabe der Daten aus seinem Speicher auf das Computersystem zu unterbrechen und in einen Haltstatus zu gehen. Dieses Signal kann aus dem Logikanalysator stammen oder vom Benutzer. Das Signal Clock 288 ist das im Schritt 112 spezifizierte Systemtaktsignal. Das Signal Clear 289 ist ein Rücksetzsignal, das die Zustandssteuer-Maschine 302, den Abtastspeicher 324 und den Zähler 314 zurücksetzt.
  • Die Signale DataOut 290 sind die Ausgangssignale des Abtastspeichers 324, die die erfassten Signale über die Schnittstelle 264 vom Logikanalysator 260 zum Computersystem 18 übertragen, und zwar ein Wort je Zeiteinheit. Das Signal NumSamples 291 bezeichnet die Anzahl der gültigen Abtastwerte, die der Logikanalysator 260 erfasst hat. Da die tatsächliche Anzahl gültiger Abtastwerte, die der Logikanalysator erfasst hat, geringer sein kann als die Gesamtanzahl an Abtastwerten, die der Benutzer gefordert hat, unterstützt dieses Signal den Benutzer beim Feststellen, welche der im Speicher abgelegten Signale die gültigen sind. Ein Benutzer mag beispielsweise wünschen, insgesamt 128 Abtastwerte zu erfassen; er wünscht jedoch, nach dem Auftreten eines Haltepunkts keinerlei Abtastwerte zu speichern. Tritt ein Haltepunkt auf, nachdem erst vierundsechzig Abtastwerte erfasst sind, so hat das Signal NumSamples 291 einen Wert von vierundsechzig. Dies zeigt an, dass nur vierundsechzig im Logikanalysator gespeicherte Abtastwerte gültige Werte sind. Jegliche hinter den vierundsechzig Werten gespeicherte Abtastwerte sind keine gültigen Abtastwerte. Es ist möglich, dass sie von früheren Datenerfassungen stammen. Das Signal Triggered 292 ist ein Ausgangssignal für den Benutzer, das anzeigt, dass ein Haltepunkt aufgetreten ist. Das Signal Run 293 zeigt dem Benutzer an, dass das Signal RunReq 286 empfangen worden ist und dass der Logikanalysator läuft und Daten erfasst.
  • 8 zeigt den eingebetteten Logikanalysator 260 gemäß einer Ausführungsform der Erfindung. Der Logikanalysator, der in ein PLD eingebettet werden soll, kann abhängig von der Art des PLD, der Art und Anzahl der zu überwachenden Signale, der gewünschten Datentiefe, dem verfügbaren Speicher, den Steuersignalen vom Benutzercomputer, den Vorlieben des Entwicklungsingenieurs usw. auf viele verschiedene Weisen implementiert werden. Um ein Beispiel anzugeben stellt der Logikanalysator 260 ein besonders Beispiel dafür vor, wie man einen derartigen Logikanalysator implementieren kann. Der Benutzer steuert den eingebetteten Logikanalysator vom einem Computer außerhalb des PLD. Der Logikanalysator arbeitet so, dass er beliebige Signale einer Reihe interner Signale erfasst, die der Benutzer wünscht. In dieser Ausführungsform der Erfindung enthält der Logikanalysator 260 eine Zustandssteuer-Maschine 302, ein Triggerregister 304, einen Triggerkomparator 306, Register 308 und 310, Zähler 312316, Komparatoren 320, 322 und Abtastspeicher 324.
  • Nach dem Programmieren des Logikanalysators 260 in ein PLD empfängt er verschiedene Eingangssignale aus dem Inneren des PLD. Die Triggersignale 305 sind diejenigen im Schritt 114 festgelegten Signale, die der Benutzer mit einer Triggerbedingung zu vergleichen wünscht, die im Triggerregister 304 abgelegt ist und ebenfalls im Schritt 114 bestimmt wird. Gemeinsam wirken die Triggersignale 305, die die Triggerbedingung erfüllen, als Haltepunkt. Der Triggerkomparator 306 vergleicht die Signale 305 mit der Triggerbedingung und erzeugt ein Haltepunktsignal, wenn die Bedingung erfüllt ist.
  • Die Zustandssteuer-Maschine 302 kann irgendeine geeignete Kontrollstruktur zum Steuern des eingebetteten Logikanalysators sein; sie wird in 9 ausführlicher beschrieben. Bevorzugt wird die Zustandsmaschine 302 in programmierbarer Logik entworfen, wobei nach Belieben Tabellen, eingebettete Speicherblöcke, ROM-Register usw. verwendet werden können. Das Eingangssignal DelayDone wird vom Komparator 320 empfangen und gibt an, dass die Gesamtanzahl der vom Benutzer geforderten Abtastwerte erfasst ist. Die Signale NextReq, StopReq, RunReq, DoneDump, Clock und Clear sind bereits beschrieben worden. Das Eingangssignal Breakpoint für die Zustandsmaschine 302 wird vom Triggerkomparator 306 über das Register 308 empfangen.
  • Das Register 308 ist ein Synchronisierregister, das dazu dient, die Zustandsmaschine 302 von einem asynchronen Haltepunktsignal abzuschirmen. Das Register 308 erlaubt es, das Eingangssignal Haltepunkt in einem Taktzyklus einzugeben.
  • Das Ausgangssignal Stopped ist aktiv, wenn sich die Zustandsmaschine 302 im angehaltenen Zustand befindet. Dieses Signal setzt die Zähler 312 und 316 zurück und bereitet den Logikanalysator darauf vor, einen neuen Lauf zu beginnen. Es erlaubt es auch, Daten aus dem Register 310 in den Zähler 314 zu laden. Das Ausgangssignal Next gibt im aktiven Zustand den Zähler 312 frei, damit eine Adresse im Abtastspeicher 324 erhöht wird. Die Adressen werden erhöht, während der Logikanalysator läuft und Daten erfasst und während der Abtastspeicher 324 seine Adressen durchläuft und Abtastdaten an das Computersystem 18 ausgibt. Das Ausgangssignal Triggered dient zum Freigeben des Zählers 314. Das Signal Run wird im Gatter 340 mit dem Signal PrevDataFull verknüpft, um den Zähler 316 freizugeben.
  • Das Register 310 empfängt das Signal Delay zum Speichern der Anzahl der Abtastwerte nach einem Haltepunkt, die ein Benutzer erfassen will. Sein Takt ist das Eingangssignal SetDelay.
  • Der Zähler 312 erhöht während des Abtastens und Datenerfassens die Adressen für den Abtastspeicher 324, und er inkrementiert Adressen während des Auslesens von Daten zu einem Computersystem 18. Der Zähler 314 ist ein Abwärtszähler, der eine Verzögerung ab einem erkannten Haltepunkt erzeugt, damit der Logikanalysator mit dem Datenerfassen fortfahren kann, bis der letzte vom Benutzer gewünschte Abtastwert ge speichert ist. Der Zähler 314 wird aus dem Register 310 mit dem Signal Delay geladen, das die Anzahl der Abtastwerte nach dem Haltepunkt angibt, die gespeichert werden sollen. Zählt der Zähler 314 herunter und erreicht er einen Wert von Null, so führt der Komparator 320 einen erfolgreichen Vergleich mit einem festverdrahteten Wert Null aus und setzt das Signal DelayDone. Das gesetzte Signal DelayDone weist die Zustandssteuer-Maschine 302 an, vom Run-Status in den Datenausgabestatus überzugehen.
  • Der Zähler 316 zählt die Anzahl der gültigen Abtastwerte, die im Abtastspeicher 324 abgelegt sind. Wie bereits besprochen kann eine Situation auftreten, in der die Anzahl der erfassten gültigen Abtastwerte kleiner ist als die ursprünglich spezifizierte Anzahl der Abtastwerte, die der Benutzer wünscht. In diesem erläuternden Beispiel hat der Abtastspeicher 324 eine Kapazität von 128 Wörtern. Erreicht der Zähler 316 den Wert 128, so nimmt der Komparator 322 einen erfolgreichen Vergleich mit einem festverdrahteten Wert 128 vor. Dadurch wird das Ausgangssignal PrevDataFull gesetzt, und sein invertiertes Signal wird in das Gatter 340 eingegeben. Die Inverse eines gesetzten Signals PrevDataFull sperrt den Zähler 316 und zeigt dadurch an, dass die Gesamtanzahl von gültigen Abtastwerten im Abtastspeicher 324 abgelegt ist. Der Zähler 316 gibt kontinuierlich das Signal NumSamples aus, das die Gesamtanzahl von gültigen Abtastwerten angibt, die zu diesem Zeitpunkt bereits erfasst sind.
  • Der Abtastspeicher 324 ist ein Speicher innerhalb des PLD 16, der auf jede beliebige geeignete Weise implementiert werden kann. Der Speicher 324 kann beispielsweise mit Hilfe von Registersätzen oder mit eingebetteten Speicherblöcken innerhalb des PLD implementiert werden. In einer besonderen Ausführungsform wird eingebetteter SRAM-Speicher zum Implementieren des Speichers 324 verwendet. Natürlich lässt sich der Speicher 324 in zahlreichen PLD-Typen implementieren, die keinen zusätzlichen eingebetteten Speicher enthalten. Der Abtastspeicher 324 wird bevorzugt als Ringpuffer implementiert, so dass eingehende Abtastdaten kontinuierlich im Speicher 324 abgelegt werden, solange der Logikanalysator läuft. Ist der Speicher 324 voll, so kehrt er an seinen Anfang zurück, und die ältesten gespeicherten Daten werden von neu ankommenden Daten überschrieben. Zu Erläuterungszwecken ist der Abtastspeicher 324 als RAM-Speicher von 128 Wörtern mit je 16 Bit implementiert dargestellt. Natürlich kann man jede beliebige Speichergröße verwenden. Man kann die Breite des Speichers erhöhen, um mehr Datensignale zu erfassen, und seine Tiefe erhöhen, um länger zurückliegende Signalwerte zu speichern.
  • 9 zeigt ein Zustandsdiagramm der Zustandssteuer-Maschine 302. 10 zeigt eine Tabelle, die den Wert von Ausgangssignalen erläutert, die jedem der fünf Zustände der Zustandsmaschine 302 zugeordnet sind. Fachleuten ist geläufig, dass man die Zustandssteuer-Maschine 302 mit jeder beliebigen Logik implementieren kann, und dass sie nicht notwendig als Zustandsmaschine implementiert werden muss. Wird sie als Zustandsmaschine implementiert, so kann man verschiedene Zustandsmaschinen verwenden, beispielsweise eine Moore- oder eine Mealy-Zustandsmaschine. In einer bevorzugten Ausführungsform der Erfindung wird die Zustandsmaschine 302 als Moore-Zustandsmaschine implementiert. Dies wird nun anhand von 9 und 10 beschrieben.
  • Die Zustandsmaschine 302 umfasst die Zustände Run 402, Delay 404, Stop 406, DataDump 408 und Next 410. Im Stop-Zustand wird das Ausgangssignal Stopped gesetzt, und die anderen Ausgangssignale Run, Triggered und Next befinden sich im Zustand "bedeutungslos". Der Zustand Stop wird beibehalten, bis ein Eingangssignal RunReq gesetzt wird, das einen Übergang in den Run-Zustand bewirkt.
  • Im Run-Zustand sind die Ausgangssignale Run und Next gesetzt, und das Ausgangssignal Triggered hat den Wert Null, weil noch kein Haltepunkt aufgetreten ist. Solange die beiden Eingangssignale Breakpoint und StopReq nicht gesetzt werden, wird der Run-Zustand beibehalten. Wird ein StopReq-Signal empfangen, so geht die Zustandsmaschine in den Stop-Zustand. Wird ein Breakpoint-Signal empfangen und bleibt das Signal DelayDone ungesetzt (dies zeigt an, dass noch weitere Abtastwerte zu erfassen sind), so geht das System in den Delay-Zustand. Wird dagegen ein Breakpoint-Signal bei gesetztem DelayDone-Signal empfangen, so zeigt dies nicht nur an, dass ein Haltepunkt aufgetreten ist, sondern dass keine Signale nach dem Haltepunkt erfasst werden müssen. In dieser Situation geht die Zustandsmaschine in den DataDump-Zustand.
  • Im Delay-Zustand sind die Signale Run, Triggered und Next gesetzt, und das Ausgangssignal Stopped ist nicht gesetzt. Der Delay-Zustand zeigt an, dass der Logikanalysator noch läuft und Daten erfasst, nachdem eine Triggerbedingung den Haltepunkt gesetzt hat. Die Zustandsmaschine bleibt in diesem Zustand, bis alle erforderlichen Abtastwerte nach dem Haltepunkt erfasst sind. Somit wird der Delay-Zustand beibehalten, solange das DelayDone-Signal nicht gesetzt ist. Sobald der Zähler 314 heruntergezählt hat und anzeigt, dass alle geforderten Abtastwerte nach dem Haltepunkt erfasst sind, wird das DelayDone-Signal gesetzt, und die Zustandsmaschine geht in den DataDump- Zustand.
  • Im DataDump-Zustand sind alle Ausgangssignale ungesetzt. In diesem Zustand werden Daten aus dem Abtastspeicher 324 an das Computersystem 18 übertragen. Wird das Signal DoneDump gesetzt, so hat der Logikanalysator das Hochladen von Daten auf das Computersystem 18 beendet. Die Zustandsmaschine geht aus dem DataDump-Zustand in den Stop-Zustand über. Die Zustandsmaschine bleibt im DataDump-Zustand, solange die Signale NextReq und DoneDump beide nicht gesetzt sind. Wie bereits früher beschrieben kann das Computersystem 18 ein Hochladen eines Worts in einer Zeiteinheit aus dem Abtastspeicher 324 anfordern. In dieser Situation setzt das Computersystem 18 das Eingangssignal NextReq und veranlasst dadurch die Zustandsmaschine, in den Next-Zustand überzugehen.
  • Im Next-Zustand sind alle Ausgangssignale mit Ausnahme des Ausgangssignals Next nicht gesetzt. Solange der Logikanalysator weiterhin ein gesetztes Signal NextReq empfängt, lädt er ein Wort je Zeiteinheit auf das Computersystem 18 hoch. Sobald das Signal NextReq zurückgesetzt wird, kehrt die Zustandsmaschine in den DataDump-Zustand zurück.
  • ÜBERBLICK ÜBER DIE STEUERUNG DES JTAG-PORTS
  • Wie bereits anhand von 6 beschrieben wird in einer bevorzugten Ausführungsform der Erfindung der JTAG-Port 272 zusammen mit der Steuerlogik 274 und den Signalen 275 zum Steuern des Logikanalysators 260 verwendet. Es wurde erkannt, dass es vorteilhaft ist, einen JTAG-Port zum Steuern eines Logikanalysators zu verwenden, weil ein JTAG-Port häufig bereits auf einem PLD vorhanden ist. Verwendet man einen JTAG-Port, so sind zudem zusätzliche zugeordnete Fehlersuch-Steuerstifte überflüssig. Zudem besitzen zahlreiche PLD-Hersteller bereits Einrichtungen für den Anschluss an einen JTAG-Port eines PLD und die Kommunikation darüber. Die Altera Corporation in San Jose, Kalifornien, verwendet beispielsweise ein internes Produkt mit dem Namen "Byte Blaster" zum Programmieren eines PLD über einen JTAG-Port. Aus diesen und anderen Gründen wurde festgestellt, dass der Gebrauch eines JTAG-Ports zum Steuern eines eingebetteten Logikanalysators vorteilhaft ist. Trotzdem ist aus unterschiedlichen Gründen nicht unmittelbar zu sehen, wie man eine solche Steuerung mit einem JTAG-Port implementieren kann.
  • Um Hintergrundwissen bereitzustellen werden nun weitere Einzelheiten über den Gebrauch eines JTAG-Ports beschrieben. Eine JTAG-Prüfvorrichtung prüft eine Hardwarevorrichtung, die einen JTAG-Port aufweist, indem sie im Grunde die Kontrolle des Anschlussfleck-Rings der Vorrichtung übernimmt. Anders ausgedrückt übernimmt die JTAG-Prüfvorrichtung die Kontrolle über die Treiber für jeden Anschlussstift und isoliert damit effektiv den Kern der Vorrichtung gegen die Außenwelt. Mit Hilfe des JTAG-Ports der Vorrichtung kann die JTAG-Prüfvorrichtung nun jeden Anschlussstift in einen von drei Zuständen versetzen, nämlich Ansteuern, Erfassen oder Tri-State. Die JTAG-Prüfvorrichtung wird hauptsächlich in einem EXTEST-Modus verwendet, um einen vollständigen Platinentest der mechanischen Verbindungen zwischen den Vorrichtungen auf der Platine vorzunehmen. In diesem Modus kann die JTAG-Prüfvorrichtung, indem sie einen Anschlussstift an einer Vorrichtung so ansteuert, dass er ein Signal ausgibt, und eine Eingabe an einer anderen Vorrichtung auf der Platine erfasst, die mechanische Verbindung zwischen den Vorrichtungen im eingebauten Zustand auf der Platine prüfen. Als solcher ist der EXTEST-Modus zum Steuern eines eingebetteten Logikanalysators nicht geeignet. Der INTEST-Modus wird seltener verwendet; er dient zur internen Prüfung einer Vorrichtung. Wie oben übernimmt die JTAG-Prüfvorrichtung die Kontrolle über die Treiber für jeden Anschlussstift-Treiber und isoliert den Kern. Nun kann man Prüfsignale in den Kern einspeisen und Ausgangssignale abtasten und ihre Genauigkeit ermitteln.
  • Da der INTEST-Modus den Kern der Vorrichtung von der Außenwelt abtrennt, wird das PLD ungünstigerweise nicht in einer realen Umgebung auf der Platine geprüft. Wie bereits erklärt ist es häufig erforderlich, ein PLD in einer realen Umgebung auf der arbeitenden Platine zu prüfen, um versteckte Fehlfunktionen aufzuspüren. Zudem ist ein JTAG-Port nur ein serieller Port mit 10 MHz und kann damit nicht die großen Datenmengen liefern, die in einer realen Umgebung mit hoher Geschwindigkeit anfallen können. Somit sind tatsächliche Betriebsbedingungen bei hoher Geschwindigkeit erwünscht. Zudem liefert der Ingenieur während einer JTAG-Prüfung erfundene Prüfvektoren, die möglicherweise nicht repräsentativ für reale Signale sind, die das PLD in einer echten Arbeitsumgebung empfängt. Aus diesen und anderen Gründen ist es nicht besonders wünschenswert, zu versuchen, den eingebetteten Logikanalysator eines PLD mit Hilfe des INTEST-Modus des JTAG-Ports zu steuern. Trotzdem stellt man fest, dass der Gebrauch eines JTAG-Ports in einer bestimmten Weise zum Steuern einer eingebetteten Logikvorrichtung erwünscht ist. Die Erfindung zieht in vorteilhafter Weise zwei Ausführungsformen in Betracht, durch die der JTAG-Port 272 den eingebetteten Logikanalysator 260 eines PLD 16 steuert. Der JTAG-Port wird vorteilhaft dazu verwendet, den ein gebetteten Logikanalysator zu steuern, wogegen das PLD, in dem der Logikanalysator eingebettet ist, auf der Platine unter realen Bedingungen arbeiten kann. Diese beiden Ausführungsformen werden im Weiteren anhand von 1113 bzw. 1417 dargestellt.
  • ERSTE AUSFÜHRUNGSFORM DER JTAG-STEUERUNG
  • 11 zeigt eine erste Ausführungsform, über die ein JTAG-Port 272 einen eingebetteten Logikanalysator 260 eines PLD 16 über Gruppen von unverbundenen Ein/Ausgabe-Zellen 504 und 506 steuert. Der Logikanalysator 260 ist in den Kern 502 des PLD 16 eingebettet und besitzt einen Systemtakt 288. Die Zellen 504 liefern Signale 514 an den Logikanalysator, und die Zellen 506 empfangen Signale 516 vom Logikanalysator. Die Signale 275 stellen Signale vom JTAG-Port 272 zu den Ein/Ausgabe-Zellen 504 und Signale von den Ein/Ausgabe-Zellen 506 dar. Hierzu gehören: das Signal TDI, das den Anschluss an eine serielle Dateneingabe (SDI) der ersten Eingabezelle 504 herstellt; das Signal TDO, das den Anschluss an eine serielle Datenausgabe (SDO) der letzten Ausgabezelle 506 herstellt; und Steuersignale wie Shift 680, Clock 682, Update 684 und Mode 686, die jeder Zelle nach Bedarf geliefert werden. In dieser Ausführungsform dienen die für JTAG freigegebenen Ein/Ausgabe-Zellen 504 zum Steuern des Logikanalysators 260 über Eingangssignale 514. Die Ausgabedaten und Statusinformationssignale 516 vom Logikanalysator 260 werden an die für JTAG freigegebenen Ein/Ausgabe-Zellen 506 angelegt.
  • Zum Implementieren dieser Ausführungsform wird die Netzliste des PLD erweitert, so dass jede Eingabe und jede Ausgabe des Logikanalysators 260 an eine unverbundene oder anderweitig unbenutzte Ein/Ausgabe-Zelle 504 bzw. 506 gelegt wird. Für jede Ein/Ausgabe-Zelle wird ein besonderes "debug RAM bit" gesetzt, das dazu dient, ein Steuersignal in den Logikanalysator einzugeben. Dieses Bit erlaubt es, ein Steuersignal mit Hilfe des JTAG-Ports zu treiben, obwohl sich die Vorrichtung nicht im INTEST-Modus befindet. Zum Erzeugen eines Steuersignals für die Eingabe in den Logikanalysator 260 wird der bekannte JTAG-Sample/Preload-Befehl eingescannt, die Steuerinformation wird eingescannt, und anschließend wird in den Update/Data-Recovery-Status des JTAG-Ports 272 gegangen. Weitere Einzelheiten werden im Folgenden angegeben. Um die Vorteile dieser Ausführungsform besser zu erläutern wird der bekannte JTAG-INTEST-Modus kurz beschrieben.
  • 12 zeigt eine herkömmliche für JTAG freigegebene Ein/Ausgabe-Zelle 600, die eine geeignete Grundlage für die Beschreibung dieser Ausführungsform bietet. Die Zelle 600 ist mit einem externen PLD-Anschlussstift 602 verbunden. Über den Anschlussstift 602 wird das Eingangssignal 604 an den Kern 502 des PLD 16 geliefert. In ähnlicher Weise entstehen die Signale Output 606 und Output Enable 608 im Kern 502 und dienen dazu, ein Ausgangssignal am Anschlussstift 602 zu erzeugen. Die Multiplexer 610, 612 und 614 wählen Daten, die in die Erfassungsregister 620 bzw. 622 bzw. 624 geladen werden müssen. Die Erfassungsregister werden dazu verwendet, Daten zunächst vom JTAG-Port 272 durch die Ein/Ausgabe-Zellen der Vorrichtung einzulesen. Die Aktualisierungsregister 630, 632 und 634 empfangen Daten von den Erfassungsregistern und dienen zum Ausführen eines parallelen Ladevorgangs in den Kern der Vorrichtung. Die Multiplexer 640, 642 und 644 wählen Daten entweder vom Anschlussstift Input 602 oder Output Enable 608 oder Output 606 oder von einem der Aktualisierungsregister, um ein passendes Signal zu erzeugen. Der Multiplexer 640 erzeugt ein Eingangssignal 604. Der Multiplexer 642 erzeugt ein Tri-State-Signal für den Treiber 650, und der Multiplexer 644 erzeugt ein Datensignal für den Treiber 650, der ein Ausgangssignal am Anschlussstift 602 erzeugt, wenn er freigegeben ist.
  • Die Arbeitsweise der JTAG-freigegebenen Zelle 600 ist Fachleuten bekannt. Serial-Data-In 672 ist ein Signal, das von der vorhergehenden Ein/Ausgabe-Zelle (oder vom TDI-Signal am JTAG-Port 272, falls es sich um die erste Zelle handelt) empfangen wird. Serial-Data-Out 674 ist mit dem Serial-Data-In-Signal der folgenden Ein/Ausgabe-Zelle verbunden (oder mit dem TDO-Signal des JTAG-Ports 272, falls es sich um die letzte Zelle handelt). Die Steuersignale Shift 680, Clock 682, Update 684 und Mode 686 werden von jeder Zelle über Steuerleitungen 275 vom JTAG-Port 272 empfangen. Shift 680 wirkt so, dass es das Serial-Data-In-Signal 672 durch die Zelle 600 schiebt. Clock 682 taktet die Erfassungsregister, damit sie die seriellen Daten erfassen, und Update 684 taktet die Aktualisierungsregister, damit ein paralleler Ladevorgang möglich wird. Mode 686 erlaubt es der Zelle 600, dass sie sich entweder in einem Normalmodus (Mode = 0) befindet oder im INTEST- oder EXTEST-Modus (Mode = 1). Versetzt Mode 686 im normalen JTAG-Betrieb die Vorrichtung in den INTEST- oder EXTEST-Modus, so werden die Signale Output 606, Output Enable 608 und Input 604 effektiv vom Anschlussstift 602 getrennt, und der Kern 502 ist damit von der Umgebung abgetrennt. Wie bereits beschrieben ist es unerwünscht, die Vorrichtung vollständig in den INTEST-Modus zu versetzen, wenn man die Vorrichtung unter realistischen Umgebungsbedingungen prüfen will. Versetzt beispielsweise Mode 686 die Vorrichtung in den INTEST-Modus, so sind alle Anschlussstifte der Vorrichtung vom Kern der Vorrichtung abgetrennt und ein normaler Betrieb der Vorrichtung ist nicht möglich.
  • Im Standard-JTAG-INTEST-Modus geht der JTAG-Port 272 zuerst in einen seriellen Schiebemodus, in dem über die Leitung TDI empfangene serielle Daten durch alle Ein/Ausgabe-Zellen der Vorrichtung geschoben werden, bis die passenden Daten in der passenden Eingabezelle angekommen sind. Daraufhin tritt der JTAG-Port 272 in einen parallelen Lademodus ein, in dem alle gerade in die Ein/Ausgabe-Zellen geschobenen Daten nun parallel in den Kern 502 geladen werden, damit die Eingangssignale zugeführt werden, die für einen bestimmten Prüfvorgang nötig sind. Gleichzeitig oder nachfolgend kann der JTAG-Port 272 in einem parallelen Erfassungsmodus für diverse Ein/Ausgabe-Zellen sein, die die Ausgangssignale des Prüfvorgangs empfangen. Nachdem diese Prüfdaten empfangen sind, geht der JTAG-Port 272 erneut in den seriellen Schiebemodus, und die Daten werden seriell aus den Ein/Ausgabe-Zellen geschoben, damit sie der JTAG-Port 272 über die Leitung TDO ausgeben kann. Auf diese Weise werden im INTEST-Modus des JTAG-Ports 272 die JTAG-freigegebenen Ein/Ausgabe-Zellen dazu verwendet, dem Kern 502 erfundene Prüfdaten zu liefern und Ausgangssignale aus dieser Prüfung zu erhalten.
  • Wie bereits beschrieben kann es jedoch nachteilig sein, den INTEST-Modus zu verwenden, da der INTEST-Modus alle Anschlussstifte des PLD 16 vom Kern 502 abtrennt. Damit arbeitet das PLD 16 nicht unter realistischen Bedingungen, und es kann sein, dass der Einsatz des Logikanalysators 260 in diesem Modus nicht die richtigen Testergebnisse liefert. Die Erfindung macht vorteilhafterweise von unverbundenen Ein/Ausgabe-Zellen 504 Gebrauch und spiegelt einigen dieser Zellen vor, dass sie sich im INTEST-Modus befinden, damit der Logikanalysator 260 über den JTAG-Port 272 gesteuert werden kann.
  • Man hat erkannt, dass zahlreiche PLDs zusätzliche Ein/Ausgabe-Zellen 504 und 506 aufweisen, die nicht mit einem Anschlussstift des PLD verbunden sind, jedoch elektrisch an den Kern 502 angeschlossen sind. Vorteilhafterweise hat man in der Erfindung erkannt, dass man diese unverbundenen Ein/Ausgabe-Zellen 504 und 506 nicht nur zum Zuführen von Steuer- und Dateninformation zum Logikanalysator 260 verwenden kann, sondern dass man sie auch dazu verwenden kann, Status- und Ausgabeinformation vom Logikanalysator aufzunehmen. Zudem wird in dieser Ausführungsform nicht der tatsächliche INTEST-Modus verwendet. Damit kann das PLD 16 unter realistischen Umge bungsbedingungen betrieben werden, und der Logikanalysator 260 kann echte Testdaten erfassen. Um nach wie vor Steuer- und Eingabeinformation über unverbundene Ein/Ausgabe-Zellen 504 und die Leitungen 514 zu liefern, spiegelt man diesen Zellen vor, dass sie sich tatsächlich im INTEST-Modus befinden, so dass sie die Steuersignale des Logikanalysators von der Zelle zum Kern 502 weiterleiten. Diese nach innen weitergeleiteten Signale kann man dann dazu verwenden, Steuer- und Eingabedaten für den Logikanalysator 260 zu liefern. Es ist vorteilhaft, dass man zum Implementieren dieses Steuerverfahrens keine zusätzlich Logik benötigt.
  • Verwendet man diese Technik, so leiten nur diejenigen Ein/Ausgabe-Zellen 504 nach innen weiter, denen vorgespiegelt wird, dass sie sich im INTEST-Modus befinden. Auf diese Weise werden dem Logikanalysator 260 Steuer- und Datensignale geliefert, wobei man unverbundene Ein/Ausgabe-Zellen 504 verwendet, die mit keinem Anschlussstift des PLD 16 verbunden sind. Da Zellen, die zu nicht benutzten Anschlussstiften des PLD 16 gehören, für die Ein/Ausgabe von Daten und die Steuerung des Logikanalysators 260 verwendet werden, kommunizieren die verbleibenden Anschlussstifte des PLD 16 mit dem Kern 502 und der Außenwelt in einer realistischen Betriebsumgebung und werden durch dieses Steuerverfahren nicht beeinträchtigt.
  • 13 erläutert eine unverbundene Ein/Ausgabe-Zelle 504 gemäß der ersten Ausführungsform der JTAG-Steuerung. In der Zelle 504 ist zusätzlich das Gatter 702 und das Debug-RAM-Bit 704 enthalten. In dieser Ausführungsform versetzt Mode 686 das PLD 16 in seinen normalen Betriebsmodus, so dass der Logikanalysator 260 realistische Daten erfassen kann. In diesem Modus sind die Anschlussstifte des PLD nicht vom Kern 502 abgetrennt. Für unverbundene Ein/Ausgabe-Zellen 504 ist es jedoch nach wie vor erwünscht, dass man den JTAG-Port 272 zum Liefern von Steuersignalen an den eingebetteten Logikanalysator 260 verwenden kann. Hierzu sind das Gatter 702 und das Debug-RAM-Bit 704 bereitgestellt. Das Bit 704 ist stets gesetzt. Daher gibt das Gatter 702 eine logische "1" aus, die den Multiplexer 640 anweist, seine Ausgabedaten immer aus dem Aktualisierungsregister 630 zu holen. Die Daten aus dem Register 630 sind vorher aus dem Erfassungsregister 620 geladen worden, das seine Daten ursprünglich über Seriell-Data-In 672 empfangen hat (nachdem der JTAG-Port 272 veranlasst hat, dass Daten durch die Zellen geschoben werden). Auf diese Weise werden serielle Daten, die der JTAG-Port 272 liefert, schließlich vom Multiplexer 640 ausgegeben und dienen als Eingangssignal 604 für den Kern 502. Das Eingangssignal 604 kann man dazu verwenden, entweder ein Steuersignal oder ein Dateneingabesignal für den Logikanalysator 260 bereitzustellen. Vorteilhafterweise kann die Vorrichtung im normalen Modus betrieben werden, und alle Anschlussstifte, die mit Ein/Ausgabe-Zellen verbunden sind, bleiben an den Kern 502 angeschlossen. Zudem kann man den Logikanalysator 260 über den JTAG-Port 272 steuern, wobei die JTAG-Sample/Preload-Befehle verwendet werden, die Steuerinformation in den Erfassungsregistern 620624 ablegen.
  • ZWEITE AUSFÜHRUNGSFORM DER JTAG-STEUERUNG
  • 14 erläutert eine zweite Ausführungsform, über die der JTAG-Port 272 den eingebetteten Logikanalysator 260 mit Hilfe eines Testdatenregisters 802 steuert. In dieser Ausführungsform wird ein vom Benutzer implementiertes Testdatenregister 802 dazu verwendet, dem Logikanalysator 260 Steuersignale zu liefern und Daten und Statusinformation von ihm zu erhalten. Diese Ausführungsform ist insbesondere dann nützlich, wenn keine unverbundenen Ein/Ausgabe-Zellen verfügbar sind. Sie beruht auf zusätzlicher vom Benutzer gelieferter Logik im Testdatenregister 802 und verwendet keine unverbundenen Ein/Ausgabe-Zellen. Zudem stellt diese Ausführungsform ein zusätzliches Signal Runtest(Benutzer) bereit, durch das der Logikanalysator 260 weiß, dass die JTAG-Zustandsmaschine in den Runtest-Status gegangen ist. Das Register 802 enthält jede beliebige Anzahl Anregungszellen 804, die zum Steuern des Logikanalysators 260 verwendet werden, und jede beliebige Anzahl von Erfassungszellen 805, die zum Empfangen von Daten- und Statussignalen vom Logikanalysator verwendet werden. Die Steuersignale 806 umfassen das Signal TDI(Benutzer), das an die erste Anregungszelle angelegt und dann durch alle Zellen geschoben wird. Enthalten sind auch die Steuersignale Shift(Benutzer), Clock(Benutzer), Update(Benutzer) und Runtest(Benutzer). Diese Signale werden global an alle Zellen 804 oder 805 angelegt. Das Signal TDO(Benutzer) 807 wird von der letzten Erfassungszelle 805 empfangen und an den JTAG-Port 272 angelegt, damit es zum Signal TDO wird.
  • In dieser Ausführungsform gleichen die Steuersignale TDI(Benutzer), Shift(Benutzer), Clock(Benutzer) und Update(Benutzer) den Signalen 672, 680, 682 und 684 der in 13 dargestellten Ausführungsform; diese Steuersignale werden jedoch in der zweiten Ausführungsform in den Kern 502 geleitet und nicht an Ein/Ausgabe-Zellen angelegt. Mit Hilfe dieses ungewöhnlichen Ansatzes, mit dem JTAG-Signale direkt in den Kern geleitet werden, erreicht man in vorteilhafter Weise die Steuerung eines eingebetteten Logikanalysators, ohne dass zusätzliche Anschlussstifte oder Ein/Ausgabe-Zellen des PLD (neben den Anschlussstiften des JTAG-Ports) verwendet werden. Das Signal TDO(Benutzer) entspricht dem Signal 674 der Ausführungsform in 13; das Signal TDO(Benutzer) stammt jedoch aus dem Kern 502 und nicht aus einer Ein/Ausgabe-Zelle 504.
  • Zum Implementieren dieser Ausführungsform wird die Netzliste des PLD erweitert, um das vom Benutzer implementierte Testdatenregister 802 zuzufügen. Zusätzlich wird jede Eingabe in den und jede Ausgabe aus dem Logikanalysator 260 zu einem Element 804 bzw. 805 geführt. Zum Erzeugen eines Steuersignals, das an den Logikanalysator 260 geliefert wird, wird ein privater "Usertest-Befehl" eingelesen. Anschließend wird die Steuerinformation eingelesen und geladen. Zuletzt werden die Ausgabedaten aus dem Logikanalysator ausgelesen. Weitere Einzelheiten werden im Folgenden angegeben.
  • 15 zeigt eine Anregungszelle 804, die ein Element des Testdatenregisters 802 ist. Die Zelle 804 enthält das Erfassungsregister 820 und das Aktualisierungsregister 822. Das Scan-In-Signal 824 wird von einer vorhergehenden vergleichbaren Zelle oder vom JTAG-Port 272 empfangen, falls es sich um die erste Anregungszelle handelt. Das Scan-Out-Signal 826 wird an die folgende Anregungszelle übertragen oder an die erste Erfassungszelle 805, falls es sich um die letzte Anregungszelle handelt. Während eine serielle Verschiebung von Information durch Elemente des Datenregisters 802 erfolgt, kommt die Information über Scan-In 824 an der Zelle 804 an, wird im Register 820 erfasst und über Scan-Out 826 hinausgeschoben. Erfolgt gesteuert durch den JTAG-Port 272 ein paralleler Ladevorgang, so überträgt das Aktualisierungsregister 822 das im Register 820 gespeicherte Bit an den Logikanalysator 260. Dieses übertragene Bit kann nun als Steuersignal für den Logikanalysator eingesetzt werden.
  • 16 zeigt eine Erfassungszelle 805, die ein Element des Testdatenregisters 802 ist. Die Zelle 805 enthält einen Multiplexer 830 und ein Erfassungsregister 832. Das Scan-In-Signal 834 wird von einer vorhergehenden Erfassungszelle oder von der letzten Anregungszelle 804 empfangen, falls es sich um die erste Erfassungszelle handelt. Das Scan-Out-Signal 836 wird an die folgende Erfassungszelle 805 übertragen oder an den JTAG-Port 272, falls es sich um die letzte Erfassungszelle handelt. Während des seriellen Einlesens von Information über das Testdatenregister 802 hat das Signal Load(Benutzer) den Wert Null. Eingelesene Bits kommen über Scan-In 834 an, werden mit Hilfe des Registers 832 zwischengespeichert und über Scan-Out 836 hinausgeschoben. Während eines parallelen Ladevorgangs (oder eines Erfassungsvorgangs) hat das Signal Load(Benutzer) den Wert Eins. Die Daten und/oder der Status kommen über den Multiplexer 830 an und werden im Register 832 erfasst. Ist nach einem parallelen Ladevorgang eine beliebige Anzahl Bits von den Zellen 805 erfasst, so werden die erfassten Bits mit Hilfe des seriellen Schiebemodus durch den JTAG-Port 272 an das Computersystem 18 hinausgeschoben, damit sie dort untersucht werden. Auf diese Weise setzt man die Erfassungszellen 805 dafür ein, Daten und/oder Statussignale vom Logikanalysator 260 zu holen und dem Benutzer die Information zur Untersuchung darzubieten.
  • WEITERE AUSFÜHRUNGSFORMEN
  • 17A und 17B zeigen eine andere Ausführungsform, in der eine beliebige Anzahl von Logikanalysatoren, die in eine Vorrichtung eingebettet sind, mit Hilfe eines JTAG-Ports gesteuert werden. Da PLDs immer umfangreicher werden, kann es sein, dass jede Großfunktion innerhalb der Vorrichtung ihren eigenen eingebetteten Logikanalysator enthalten kann. Es ist erwünscht, dass man jede beliebige Anzahl von eingebetteten Logikanalysatoren über einen JTAG-Port steuern kann, wobei irgendeine der besprochenen Ausführungsformen eingesetzt wird. In einer bestimmten Implementierung arbeitet die in 14 bis 16 beschriebene zweite Ausführungsform sehr gut.
  • Schweifen wir kurz ab und rufen uns in Erinnerung, dass man die Steuerung eines von zwei eingebetteten Logikanalysatoren erreichen kann, indem man ein Select-Signal verwendet, das der JTAG-Port 272 erzeugt. Bekanntlich kann man private Benutzerbefehle in den JTAG-Port laden. In dieser Ausführungsform kann man einen Benutzer-A-Befehl und einen Benutzer-B-Befehl bereitstellen. Steuerinformation, die für einen ersten Logikanalysator bestimmt ist, wird in den Benutzer-A-Befehl geladen. Steuerinformation, die für einen zweiten Logikanalysator bestimmt ist, wird in den Benutzer-B-Befehl geladen. Wird Benutzer-A geladen, so geht das Signal Select auf high, und wird Benutzer-B geladen, so geht das Signal Select auf low. Das Signal Select wird nun mit den Steuersignalen vom JTAG-Port kombiniert und bewertet diese, so dass sie entweder an ein erstes oder an ein zweites Testdatenregister geleitet werden, das jeweils den ersten bzw. den zweiten eingebetteten Logikanalysator steuert. Bekanntlich kann ein einziges Signal (beispielsweise Select) ein Steuersignal für einen Logikanalysator sperren oder freigeben, und zwar mit einer einfachen Kombination aus UND-Gattern, Invertern usw. Hat beispielsweise Select den Wert logisch "1", so werden die Steuersignale zum ersten Logikanalysator geleitet, und Ausgangssignale werden von ihm empfangen. Der zweite Logikanalysator wird gewählt, wenn Select den Wert logisch "0" hat. Sollen mehr als zwei Logikanalysatoren gesteuert werden, so verwendet man zweckmäßigerweise eine Ausführungsform, die nun beschrieben wird.
  • 17A zeigt eine Ausführungsform, in der die in einem einzigen PLD vorhandenen Logikanalysatoren 260a, 260b, 260c und 260d über einen JTAG-Port des PLD gesteuert werden. Obwohl 17A ein vereinfachtes Beispiel darstellt, in dem lediglich vier Logikanalysatoren gesteuert werden, die äußerst einfache Eingänge und Ausgänge haben, sehen Fachleute bei der Lektüre dieser Offenlegung sofort, wie man die Steuerung einer beliebigen Anzahl von Logikanalysatoren implementiert und auch die Steuerung von Logikanalysatoren, die kompliziertere Eingänge und Ausgänge aufweisen.
  • Jeder Logikanalysator 260a260d wird von einem entsprechenden Testdatenregister 860866 gesteuert. Der Logikanalysator 260a wird beispielsweise vom Testdatenregister 860 gesteuert. Elemente 860a und 860b des Registers 860 liefern Steuereingangssignale an den Logikanalysator 260a, und Elemente 860c und 860d des Registers 860 empfangen Ausgabedaten vom Logikanalysator 260a. Die anderen Logikanalysatoren werden in vergleichbarer Weise gesteuert.
  • In dieser Ausführungsform werden zwei private Benutzerbefehle innerhalb des JTAG-Ports dazu verwendet, eine beliebige Anzahl Logikanalysatoren zu steuern. Der Benutzer-A-Befehl enthält eine Adresse, die sich dafür eignet, auszuwählen, welcher Logikanalysator gesteuert wird und vom welchem Logikanalysator zu einem bestimmten Zeitpunkt Daten empfangen werden. Der zweite private Befehl mit dem Namen Benutzer-B liefert die tatsächliche Steuerinformation und empfängt Daten von dem Logikanalysator, der mit Hilfe des Benutzer-A-Befehls gewählt wird. Das Select-Signal wird auch in dieser Ausführungsform verwendet, und es ist abhängig davon aktiv, ob auf Information im Benutzer-A-Befehl oder im Benutzer-B-Befehl zugegriffen wird.
  • Das Testdatenregister 870 enthält zwei Elemente A1 und A0, über die ein Benutzer-A-Befehl hineingeschoben bzw. hinausgeschoben wird. Nicht dargestellt ist ein Signal Clock(Benutzer-A), das an jedes Element angelegt wird. Das Signal TDO(Benutzer-A) 892 führt zum JTAG-Port 272 zurück. Auf diese Weise liefert ein Benutzer-A-Befehl durch das Register 870 Eingaben an einen Decoder 872 und einen Multiplexer 874. Der Decoder 872 decodiert die beiden Bits des Registers 870 und liefert vier Ausgangssignale D3–D0, die zum Steuern der UND-Gatter 882888 dienen. Die beiden Bits des Registers 870 werden auch in den Multiplexer 874 eingegeben und wählen einen der vier Logikanalysatoren für die Ausgabe. In diesem vereinfachten Beispiel besitzt jeder Logikanalysator nur zwei Eingänge und zwei Ausgänge, und das Register 870 ist nur zwei Byte breit. Natürlich kann jedes dieser Register jede beliebige Größe aufweisen, und es können auch mehr Logikanalysatoren vorhanden sein.
  • Wie bereits erwähnt dient ein zweiter privater Benutzer-B-Befehl dazu, den mit dem Benutzer-A-Befehl gewählten Logikanalysator die tatsächliche Steuerinformation zu liefern. Ähnlich wie in der zweiten bereits beschriebenen Ausführungsform wird das Signal TDI(Benutzer-B) 876 seriell jedem der Testregister 860866 zugeführt, die jeweils die Logikanalysatoren 260a260d steuern. Die mit dem Signal 876 empfangene serielle Information wird durch das passende Testdatenregister geschoben und schließlich durch den Multiplexer 874 hinausgeschoben, damit sie zum Signal TDO(Benutzer-B) 890 wird, das zum JTAG-Port zurückgeführt wird. Soll beispielsweise der Logikanalysator 260d gewählt werden, so wird Steuerinformation über das Signal 876 zum Element 866a geschoben. Anschließend wird sie zum Element 866b geschoben und dann zum Element 866c geschoben. Zuletzt wird sie zum Element 866d geschoben. In ähnlicher Weise werden die vom Logikanalysator 260d empfangenen Ausgabedaten geholt, indem man einen parallelen Ladevorgang in die Elemente 866c und 866d verwendet und anschließend zum Multiplexer 874 hinausschiebt.
  • Wie bereits beschrieben empfangen die Elemente in einem bestimmten Testdatenregister zahlreiche Steuersignale, etwa Shift(Benutzer), Clock(Benutzer), Update(Benutzer) und Runtest(Benutzer). Diese Steuersignale werden mit Hilfe des Decoders 872 und der UND-Gatter 882888 zum gewählten Logikanalysator geleitet. Wie erwähnt kann man die Signale Clock(Benutzer-B) 880 und Clock(Benutzer-A) (nicht dargestellt) aus dem Signal Clock(Benutzer) mit Hilfe von UND-Gattern und dem Signal Select erzeugen. Ist Select aktiv, so taktet Clock(Benutzer-A), und Clock(Benutzer-B) tut dies nicht. Ein inaktives Select erzeugt die umgekehrte Wirkung. Wird auf diese Weise Information vom privaten Benutzer-A-Befehl zugeführt, so ist Select aktiv und gibt die zugehörigen Steuersignale frei.
  • In diesem vereinfachten Beispiel ist nur das Signal Clock(Benutzer-B) 880 mit dem gewählten Logikanalysator verbunden dargestellt. Fachleuten ist jedoch geläufig, wie man die anderen Steuersignale in ähnlicher Weise ebenfalls an den gewählten Logikanalysator führen kann. Das Ausgangssignal des Decoders 872 gibt zu einem Zeitpunkt nur einen von vier Ausgängen D3–D0 frei, damit eines der UND-Gatter 882888 gewählt wird. Damit wird das Signal 880 zu einem gegebenen Zeitpunkt nur an das Testdatenregister für den gewählten Logikanalysator geleitet. Enthält das Register 870 beispielsweise den Wert "11", so ist der Ausgang D3 des Decoders 872 aktiv, und die anderen Ausgangssignale haben den Wert low. Damit lässt nur das Gatter 888 das Signal 880 zum Testdatenregister 860 durch, damit der Logikanalysator 260a gesteuert wird. Die anderen Gatter 882886 lassen das Signal 880 nicht durch. Man kann ähnliche Formen der Auswahl und Steuerung dazu verwenden, die Steuersignale zum gewählten Logikanalysator zu leiten.
  • 17B erläutert eine Vorgehensweise, mit der Signale TDO(Benutzer-A) 892 und TDO(Benutzer-B) 890 aus dem Register 870 und dem Multiplexer 874 zum JTAG-Port 272 zurückgeführt werden. Die Signale 890 und 892 werden in den Multiplexer 894 eingegeben; eines der Signale wird mit Hilfe des Signals Select 896 gewählt. Wie bereits erwähnt kann man Select dazu verwenden, Steuersignale für einen Logikanalysator oder Signale von einem Logikanalysator zu bewerten und/oder auszuwählen. Wird in diesem Beispiel Information durch das Register 870 geschoben, so ist Select aktiv (dadurch wird auch Clock(Benutzer-A) freigegeben). Das Signal 892 läuft durch den Multiplexer 894 zum Port 272. Das Signal 890 wird gewählt, falls Select den Wert low hat. In dieser Weise wird das passende Ausgangssignal der Ausführungsform 850 an den JTAG-Port 272 geliefert, und es wird schließlich zum einzigen Signal TDO des JTAG-Ports.
  • Man kann auch vergleichbare Ausführungsformen zum Steuern zahlreicher Logikanalysatoren verwenden. Anstatt unterschiedliche Testregister (beispielsweise die Register 860866) für jeden Logikanalysator zu verwenden kann nur ein Testdatenregister vorhanden sein, das alle Logikanalysatoren bedient. Die verwendet Auswahllogik (beispielsweise die UND-Gatter und die Multiplexer in 17A) wird dann zwischen den Logikanalysatoren und dem einzigen Testdatenregister angeordnet und nicht außerhalb der Logikanalysatoren, wie dies in der Ausführungsform in 17A dargestellt ist.
  • Beispielsweise werden Eingabesteuersignale (wie Clock(Benutzer), Shift(Benutzer) usw.) vom JTAG-Port direkt mit den Elementen des einzigen Testdatenregisters verbunden. Die Daten des Benutzer-B-Befehls werden in dieses Testdatenregister geschoben, damit sie einen der Logikanalysatoren steuern. Jedes Eingabeelement des Testdatenregisters wird zu jedem Logikanalysator weitergeleitet und dort mit einem UND-Gatter oder einer ähnlichen Auswahlschaltung bewertet. Sind beispielsweise drei Bit Steuerinformation von dem einzigen Testdatenregister an vier verschiedene Logikanalysatoren zu liefern, so sind vier UND-Gatter für jedes Bit Steuerinformation vorhanden (die jeweils zu einem Logikanalysator gehören), so dass man insgesamt zwölf UND-Gatter (oder eine ähnliche Auswahllogik) benötigt. Um ein Bit Steuerinformation an einen gewählten Logikanalysator zu liefern kann man eine Auswahllogik verwenden, die dem Register 870 und dem Decoder 872 gleicht. Anders ausgedrückt kann man den privaten Benutzer-A-Befehl dann dazu verwenden, auszuwählen, welcher Logikanalysator gesteuert wird. Die decodierte Information aus diesem Benutzer-A-Befehl kann man dann dazu verwenden, die UND-Gatter für jedes Bit Steuerinformation auszuwählen und/oder zu sperren. Auf diese Weise wird es einem einzigen Bit an Steuerinformation ermöglicht, einen ausgewählten Logikanalysator zu erreichen, die anderen Logikanalysatoren jedoch nicht.
  • In ähnlicher Weise kann man Multiplexer dazu verwenden, zu wählen, von welchen Logikanalysatoren ein Ausgangssignal für die Eingabe in das einzige Testdatenregister akzeptiert wird. Beispielsweise kann man einen einzigen Multiplexer (oder eine ähnliche Auswahllogik) für jedes Element des Testdatenregisters verwenden, das Ausgabedaten vom Logikanalysator empfängt. An diesen Multiplexer werden die entsprechenden Datensignale eines jeden Logikanalysators geführt. Beispielsweise wird das geringstwertige Datenbit von jedem Logikanalysator an einen einzigen Multiplexer geführt, der das Ausgangssignal für ein einziges Element des Testdatenregisters liefert. Der Multiplexer wird über Bits aus dem Benutzer-A-Testdatenregister in ähnlicher Weise wie in 17A dargestellt gesteuert. Ein Multiplexer wird für jedes Ausgabeelement des Testdatenregisters vorgesehen und jeweils mit der gleichen Auswahllogik gesteuert.
  • Weitere Ausführungsformen sind möglich. Man kann die oben in 1113 vorgestellte erste Ausführungsform oder die in 1416 vorgestellte zweite Ausführungsform ausschließlich allein zum Steuern eines Logikanalysators verwenden, oder man kann sie für die Steuerung kombinieren. Ist eine ausreichende Anzahl zusätzlicher unverbundener Ein/Ausgabe-Zellen verfügbar, so kann es erwünscht sein, ausschließlich die erste Ausführungsform einzusetzen. Dies trifft insbesondere dann zu, wenn es schwierig wäre, zusätzliche Logik in die Vorrichtung einzufügen. Sind zu wenig Ein/Ausgabe-Zellen verfügbar, so kann es erwünscht sein, die zweite Ausführungsform einzusetzen, solange das Zufügen der zusätzlichen Logik, die für das Testdatenregister 802 erforderlich ist, keine Schwierigkeit bereitet. Verwendet man ausschließlich die erste Ausführungsform, so kann man dem eingebetteten Logikanalysator ein Clock-Signal liefern, indem man das Eingangssignal 604 nutzt. Zum Bereitstellen dieses Clock-Signals werden abwechselnde Einsen und Nullen in eine bestimmte Ein/Ausgabe-Zelle geschoben. Anschließend wird ein Wert je Zeiteinheit geladen, um einen abwechselnden Impuls be reitzustellen. Jedes neue Bit muss somit durch einen gesamten Registersatz eingelesen werden, bevor es als Clock-Signal dienen kann. Aus diesem Grund ist die Vorgehensweise des Bereitstellens eines Clock-Signals für den eingebetteten Logikanalysator mit Hilfe der ersten Ausführungsform nicht besonders effizient.
  • Für eine bessere Lösung verwendet man eine Kombination der ersten und der zweiten Ausführungsform. In dieser Lösung wird ein in der zweiten Ausführungsform verfügbares zusätzliches Signal Runtest(Benutzer) dazu verwendet, ein Clock-Signal für den eingebetteten Logikanalysator bereitzustellen. Beim Übergang dieses Clock-Signals wird der Logikanalysator angewiesen, die Steuersignale zu beachten, die von den Eingangssignalen 604 der verschiedenen Ein/Ausgabe-Zellen 504 ankommen, die mit Hilfe der ersten Ausführungsform implementiert werden. Dass das Signal Runtest(Benutzer) Taktimpulse liefert, kann man einfach dadurch erreichen, dass man den JTAG-Port 272 abwechselnd in diesen Status versetzt und ihn anschließend verlässt. Mit Hilfe dieser Vorgehensweise stellt man eine wirksamere Steuerung bereit; zusätzliche unverbundene Ein/Ausgabe-Zellen können trotzdem dazu verwendet werden, dem Logikanalysator die tatsächliche Steuerinformation zu liefern.
  • AUSFÜHRUNGSFORM DES COMPUTERSYSTEMS
  • 18 zeigt ein Computersystem 900.
  • Das Computersystem 900 enthält eine beliebige Anzahl Prozessoren 902 (die auch als Zentraleinheiten oder CPUs bezeichnet werden), die mit Speichervorrichtungen verbunden sind. Hierzu gehört der Hauptspeicher 906 (beispielsweise ein Speicher mit wahlfreiem Zugriff, RAM) und der Hauptspeicher 904 (beispielsweise ein Festwertspeicher, ROM). Bekanntlich dient der Hauptspeicher 904 dazu, Daten und Befehle in einer Richtung an die CPU zu übertragen. Der Hauptspeicher 906 dient in der Regel dazu, Daten und Befehle in zwei Richtungen zu übertragen. Jede dieser Hauptspeichervorrichtungen kann irgendein beliebiges computerlesbares Medium enthalten, das unten beschrieben wird. Eine Massenspeichervorrichtung 908 ist ebenfalls bidirektional mit der CPU 902 verbunden und liefert eine zusätzliche Datenspeicherkapazität. Sie kann ebenfalls irgendeines der unten beschriebenen computerlesbaren Medien enthalten. Man kann die Massenspeichervorrichtung 908 zum Speichern von Programmen, Daten usw. verwenden. Sie ist in der Regel ein Hilfsspeichermedium (beispielsweise eine Festplatte), das langsamer ist als der Hauptspeicher. Natürlich kann die in der Massenspeichervorrichtung 908 gehaltene Information in geeigneten Fällen in üblicher Weise als virtueller Speicher in den Hauptspeicher 906 aufgenommen werden. Eine besondere Massen speichervorrichtung, beispielsweise die CD-ROM 914, leitet Daten unidirektional zur CPU.
  • Die CPU 902 ist auch mit einer Schnittstelle 910 verbunden, die eine oder mehrere Ein/Ausgabe-Vorrichtungen enthält, beispielsweise Videomonitore, Rollkugeln, Mäuse, Tastaturen, Mikrophone, Berührbildschirme, Aufnehmer-Kartenleser, Magnetband- oder Lochstreifenleser, Tablets, Stifte, Sprach- oder Handschrifterkenner, Biometrie-Leser oder weitere Computer. Die CPU 902 kann wahlweise mit einem weiteren Computer oder einem Telekommunikationsnetz verbunden sein, und zwar über einen Netzanschluss, der allgemein bei 912 dargestellt ist. Mit Hilfe eines solchen Netzanschlusses wird in Betracht gezogen, dass die CPU im Verlauf des Ausführens der oben beschriebenen Verfahrensschritte Information aus dem Netz empfangen kann oder dass sie Information in das Netz ausgeben kann.
  • Zudem beziehen sich Ausführungsformen ferner auf Computerspeicherprodukte mit einem computerlesbaren Medium, auf dem sich Programmcode befindet, der verschiedene computerimplementierte Operationen ausführen kann. Das Medium und der Programmcode können speziell für die Zwecke der Erfindung entworfen und konstruiert sein. Es kann sich auch um Medien und Programmcodes handeln, die Computersoftware-Fachleuten bekannt und greifbar sind. Beispiele für computerlesbare Medien sind (ohne Einschränkung hierauf): magnetische Medien, etwa Festplatten, Floppy-Disks und Magnetband; optische Medien, etwa CD-ROM-Disks; magneto-optische Medien, etwa Floptical-Disks; und Hardwarevorrichtungen, die besonders für das Speichern und Ausführen von Programmcode konfiguriert sind, beispielsweise ROM- und RAM-Vorrichtungen. Beispiele für Programmcode umschließen sowohl Maschinencode, den beispielsweise ein Übersetzer erzeugt, als auch Dateien mit Code auf höheren Sprachebenen, die der Computer mit Hilfe eines Interpreters ausführen kann.
  • Die obige Erfindung wurde zur Förderung des Verständnisses einigermaßen detailliert beschrieben. Selbstverständlich kann man innerhalb des Bereichs der beigefügten Ansprüche gewisse Änderungen und Abwandlungen vornehmen. Man kann beispielsweise einen Logikanalysator in irgendeine geeignete Vorrichtung oder Schaltungsplatine einbetten, die sich programmieren lässt. Zudem ist die Erfindung auf jede Art von EDA-Werkzeugen anwendbar, die einen Benutzerentwurf übersetzen kann. Obwohl nur ein Beispiel für die Übersetzung eines Logikanalysators vorgestellt wird, kann man abhängig von der Vorrichtung, für die der Entwurf übersetzt wird, Änderungen an der Über setzungstechnik vornehmen und nach wie vor Vorteile aus der Erfindung ziehen. Zudem dient der dargestellte besondere Logikanalysator nur als Beispiel; man kann auch andere Schaltungen zum Implementieren eines Logikanalysators verwenden. Eine Schnittstelle von einem Computer zu dem Logikanalysator kann jede beliebige Anzahl Anschlussstifte und jede beliebige Protokollart verwenden, beispielsweise seriell, parallel usw. Ein JTAG-Port kann einen oder mehrere eingebettete Logikanalysatoren steuern und dabei entweder die beschriebene erste oder die zweite Ausführungsform oder eine Kombination der Ausführungsformen verwenden. Daher sollten die beschriebenen Ausführungsformen als erläuternd und nicht als einschränkend angesehen werden. Die Erfindung sollte nicht auf die hier angegebenen Einzelheiten eingeschränkt werden, sondern sie wird durch die folgenden Ansprüche und deren vollständigen Gleichwertigkeitsbereich bestimmt.

Claims (11)

  1. Programmierbare Logikvorrichtung PLD (16), umfassend: einen PLD-Schaltkreis, der eine Iteration eines elektronischen Aufbaus in einem Entwurfsprozess zur Schaffung einer endgültigen PLD darstellt; einen Logikanalysator-Schaltkreis (260), der so in den PLD-Schaltkreis integriert ist, dass ein Teil des PLD-Schaltkreises mit der Logikanalysatorschaltung (260) verbunden ist, gekennzeichnet durch einen JTAG-Port (272), der so eingerichtet ist, dass er Logikanalysatorbefehle von außerhalb der PLD empfängt; und eine Kontrollvorrichtung (274) für die Logikanalysatorschaltung (260), die den JTAG-Port (272) der PLD (16) verwendet, wobei die Logikanalysatorschaltung (260) die Befehle von der PLD (16) empfängt und demgemäß arbeitet.
  2. PLD (16) nach Anspruch 1, wobei die Vorrichtung (274) enthält: nicht gebondete Ein/Ausgabe-Zellen (504, 506), über die Signale zwischen dem JTAG-Port (272) und der Logikanalysatorschaltung (260) laufen.
  3. PLD (16) nach Anspruch 1, wobei die Vorrichtung (274) enthält: ein Testdatenregister (802), das im Kern der PLD (16) implementiert ist, und über das Signale zwischen dem JTAG-Port (272) und der Logikanalysatorschaltung (260) laufen.
  4. PLD (16) nach Anspruch 1, zudem umfassend: zahlreiche Logikanalysatoren (260); und ein Mittel zum Auswählen eines der Logikanalysatoren (260), wobei die Kontrollvorrichtung (274) den gewählten Logikanalysator (260) steuert und der gewählte Logikanalysator (260) die Befehle von außerhalb der PLD (16) empfängt und demgemäß arbeitet.
  5. PLD (16) nach Anspruch 1, wobei die Kontrollvorrichtung (274) umfasst: zahlreiche erste Ein/Ausgabe-Zellen (504), die so angeordnet sind, dass sie serielle Daten von dem JTAG-Port (272) empfangen und diese seriellen Daten an die Logikanalysatorschaltung (260) liefern; und zahlreiche zweite Ein/Ausgabe-Zellen (506), die so angeordnet sind, dass sie erfasste Daten von der Logikanalysatorschaltung (260) empfangen und diese erfassten Daten seriell an den JTAG-Port (272) liefern, wobei die Logikanalysatorschaltung (260) die Befehle von außerhalb der PLD (16) empfängt und die erfassten Daten an den JTAG-Port liefert.
  6. PLD (16) nach Anspruch 5, wobei die ersten Ein/Ausgabe-Zellen (504) so angeordnet sind, dass sie die seriellen Daten in den Kern der PLD (16) treiben, wenn sich die PLD in einer normalen Arbeitsumgebung befindet.
  7. PLD (16) nach Anspruch 1, wobei die Kontrollvorrichtung (274) umfasst: ein Testdatenregister (802), das im Kern der PLD (16) so implementiert ist, dass es serielle Daten vom JTAG-Port (272) an die Logikanalysatorschaltung (260) liefert, und dass es von der Logikanalysatorschaltung (260) erfasste Daten seriell an den JTAG-Port (272) liefert, wobei die Logikanalysatorschaltung (260) die Befehle von außerhalb der PLD (16) empfängt und die erfassten Daten an den JTAG-Port (272) liefert.
  8. PLD (16) nach Anspruch 7, wobei das Testdatenregister (802) enthält: zahlreiche Anregungszellen (804), die die seriellen Daten an die Logikanalysatorschaltung (260) liefern; und zahlreiche Erfassungszellen (805), die die erfassten Daten von der Logikanalysatorschaltung (260) empfangen.
  9. Verfahren zur Fehlersuche in einer programmierbaren Logikvorrichtung (PLD), umfassend: das Zusammenstellen eines elektronischen Aufbaus und das Einsetzen eines Logikanalysators, damit eine vollständige Entwurfsdatei erzeugt wird; das Programmieren der PLD mit der vollständigen Entwurfsdatei, wobei der Logikanalysator in die PLD eingebettet ist, gekennzeichnet durch das Verbinden eines JTAG-Ports der PLD mit dem Logikanalysator; und das Steuern des eingebetteten Logikanalysators mit Hilfe des JTAG-Ports, wobei Fehler in der PLD gesucht werden können.
  10. Verfahren nach Anspruch 9, ferner umfassend: das Liefern serieller Daten vom JTAG-Port zu ersten Ein/Ausgabe-Zellen der PLD, wobei die ersten Ein/Ausgabe-Zellen so angeordnet sind, dass sie die seriellen Daten in den Logikanalysator laden; und das Empfangen erfasster Daten von dem Logikanalysator in zweite Ein/Ausgabe-Zellen, wobei die zweiten Ein/Ausgabe-Zellen so angeordnet sind, dass sie die erfassten Daten an den JTAG-Port liefern.
  11. Verfahren nach Anspruch 9, weiterhin umfassend: das Ausbilden eines Testdatenregisters im Kern der PLD, über das Signale zwischen dem JTAG-Port und dem Logikanalysator seriell laufen können.
DE69835106T 1997-11-18 1998-11-18 Eingebetteter logischer Analysator Expired - Lifetime DE69835106T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US6560297P 1997-11-18 1997-11-18
US65602P 1997-11-18
US09/186,607 US6286114B1 (en) 1997-10-27 1998-11-06 Enhanced embedded logic analyzer
US186607 1998-11-06

Publications (2)

Publication Number Publication Date
DE69835106D1 DE69835106D1 (de) 2006-08-10
DE69835106T2 true DE69835106T2 (de) 2006-12-07

Family

ID=26745776

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69834892T Expired - Lifetime DE69834892T2 (de) 1997-11-18 1998-11-18 Eingebetteter Logikanalysator
DE69835106T Expired - Lifetime DE69835106T2 (de) 1997-11-18 1998-11-18 Eingebetteter logischer Analysator

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69834892T Expired - Lifetime DE69834892T2 (de) 1997-11-18 1998-11-18 Eingebetteter Logikanalysator

Country Status (4)

Country Link
US (3) US6286114B1 (de)
EP (4) EP2264600A3 (de)
JP (1) JPH11296403A (de)
DE (2) DE69834892T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013203905B4 (de) * 2013-03-07 2016-12-29 Telemotive AG Prozessorgesteuertes Speichergerät und Verfahren

Families Citing this family (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10222374A (ja) * 1996-10-28 1998-08-21 Altera Corp 遠隔ソフトウェア技術支援を提供するための方法
US6618775B1 (en) * 1997-08-15 2003-09-09 Micron Technology, Inc. DSP bus monitoring apparatus and method
US6286114B1 (en) * 1997-10-27 2001-09-04 Altera Corporation Enhanced embedded logic analyzer
US6687865B1 (en) * 1998-03-25 2004-02-03 On-Chip Technologies, Inc. On-chip service processor for test and debug of integrated circuits
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US20060117274A1 (en) * 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6107821A (en) * 1999-02-08 2000-08-22 Xilinx, Inc. On-chip logic analysis and method for using the same
DE60023882T2 (de) * 1999-05-07 2006-07-20 Infineon Technologies Ag System auf einem Chip mit reprogrammierbarem Testgerät, Fehlerbeseitiger und Busüberwachung
US6564347B1 (en) * 1999-07-29 2003-05-13 Intel Corporation Method and apparatus for testing an integrated circuit using an on-chip logic analyzer unit
US6633838B1 (en) * 1999-11-04 2003-10-14 International Business Machines Corporation Multi-state logic analyzer integral to a microprocessor
US7072818B1 (en) 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US6823497B2 (en) 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
US7240303B1 (en) 1999-11-30 2007-07-03 Synplicity, Inc. Hardware/software co-debugging in a hardware description language
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US6618839B1 (en) * 1999-11-30 2003-09-09 Synplicity, Inc. Method and system for providing an electronic system design with enhanced debugging capabilities
US7065481B2 (en) 1999-11-30 2006-06-20 Synplicity, Inc. Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer
US6931572B1 (en) 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry
KR100606750B1 (ko) * 1999-12-31 2006-07-31 엘지전자 주식회사 휴대 전화기용 프로그램 다운로딩 장치
US6615368B1 (en) * 2000-01-04 2003-09-02 National Semiconductor Corporation System and method for debugging highly integrated data processors
US6754862B1 (en) * 2000-03-09 2004-06-22 Altera Corporation Gaining access to internal nodes in a PLD
US6587995B1 (en) * 2000-04-19 2003-07-01 Koninklijke Philips Electronics N.V. Enhanced programmable core model with integrated graphical debugging functionality
WO2001086513A2 (en) 2000-05-11 2001-11-15 Quickturn Design Systems, Inc. Emulation circuit with a hold time algorithm, logic analyzer and shadow memory
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
US6542844B1 (en) * 2000-08-02 2003-04-01 International Business Machines Corporation Method and apparatus for tracing hardware states using dynamically reconfigurable test circuits
US7188063B1 (en) * 2000-10-26 2007-03-06 Cypress Semiconductor Corporation Capturing test/emulation and enabling real-time debugging using an FPGA for in-circuit emulation
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
NZ508052A (en) 2000-11-09 2003-06-30 Derek Ward Programmable controller
US7222315B2 (en) 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
US6857083B2 (en) * 2000-12-18 2005-02-15 International Business Machines Corporation Method and system for triggering a debugging unit
US6681354B2 (en) * 2001-01-31 2004-01-20 Stmicroelectronics, Inc. Embedded field programmable gate array for performing built-in self test functions in a system on a chip and method of operation
US6760864B2 (en) * 2001-02-21 2004-07-06 Freescale Semiconductor, Inc. Data processing system with on-chip FIFO for storing debug information and method therefor
US6757855B1 (en) * 2001-04-09 2004-06-29 Advanced Micro Devices, Inc. Integrated test apparatus and method therefor
US6605962B2 (en) 2001-05-06 2003-08-12 Altera Corporation PLD architecture for flexible placement of IP function blocks
US6802026B1 (en) * 2001-05-15 2004-10-05 Xilinx, Inc. Parameterizable and reconfigurable debugger core generators
US7428661B2 (en) * 2001-09-21 2008-09-23 Sam Michael Test and debug processor and method
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
FR2831969B1 (fr) * 2001-11-08 2004-01-16 Schneider Automation Systeme de telechargement et de telemaintenance d'une carte electronique
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6834360B2 (en) * 2001-11-16 2004-12-21 International Business Machines Corporation On-chip logic analyzer
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US6775798B2 (en) * 2001-11-28 2004-08-10 Lsi Logic Corporation Fast sampling test bench
US6543034B1 (en) 2001-11-30 2003-04-01 Koninklijke Philips Electronics N.V. Multi-environment testing with a responder
US6691207B2 (en) * 2001-12-28 2004-02-10 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing loop compression in a program counter trace
US6760898B1 (en) * 2002-02-22 2004-07-06 Xilinx, Inc. Method and system for inserting probe points in FPGA-based system-on-chip (SoC)
KR100451162B1 (ko) * 2002-03-13 2004-10-02 엘지전자 주식회사 피씨를 이용한 임베디드 시스템의 원격 메모리 제어 방법
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7089473B2 (en) * 2002-03-29 2006-08-08 Intel Corporation Method and apparatus for testing a circuit using a die frame logic analyzer
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20030212932A1 (en) * 2002-05-09 2003-11-13 Sauber William F. Remote diagnostic packets
US6779169B1 (en) * 2002-05-31 2004-08-17 Altera Corporation Method and apparatus for placement of components onto programmable logic devices
US7318014B1 (en) 2002-05-31 2008-01-08 Altera Corporation Bit accurate hardware simulation in system level simulators
US7363545B1 (en) * 2002-06-03 2008-04-22 Xilinx, Inc. System and method for overcoming download cable bottlenecks during programming of integrated circuit devices
US7827510B1 (en) 2002-06-07 2010-11-02 Synopsys, Inc. Enhanced hardware debugging with embedded FPGAS in a hardware description language
US7398445B2 (en) * 2002-08-09 2008-07-08 Synplicity, Inc. Method and system for debug and test using replicated logic
US7254115B1 (en) * 2002-08-28 2007-08-07 Advanced Micro Devices, Inc. Split-transaction bus intelligent logic analysis tool
US7359994B1 (en) 2002-08-28 2008-04-15 Advanced Micro Devices, Inc. Split-transaction bus decoder
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US7036046B2 (en) * 2002-11-14 2006-04-25 Altera Corporation PLD debugging hub
US20040128446A1 (en) * 2002-12-27 2004-07-01 Carole Dulong Value profiling with low overhead
US7076751B1 (en) 2003-01-24 2006-07-11 Altera Corporation Chip debugging using incremental recompilation
US7991606B1 (en) 2003-04-01 2011-08-02 Altera Corporation Embedded logic analyzer functionality for system level environments
WO2004099987A1 (en) * 2003-04-08 2004-11-18 Zeroplus Technology Co., Ltd Logic analyzer data retrieving circuit and its retrieving method
US7275191B2 (en) * 2003-05-09 2007-09-25 Hewlett-Packard Development Company, L.P. Coverage decoder circuit for performance counter
US7509246B1 (en) 2003-06-09 2009-03-24 Altera Corporation System level simulation models for hardware modules
US7506210B1 (en) * 2003-06-26 2009-03-17 Xilinx, Inc. Method of debugging PLD configuration using boundary scan
US7539900B1 (en) 2003-07-29 2009-05-26 Altera Corporation Embedded microprocessor for integrated circuit testing and debugging
US6912164B1 (en) * 2003-08-22 2005-06-28 Altera Corporation Techniques for preloading data into memory on programmable circuits
US7281167B2 (en) * 2003-08-26 2007-10-09 Finisar Corporation Multi-purpose network diagnostic modules
US7444565B1 (en) * 2003-11-24 2008-10-28 Itt Manufacturing Enterprises, Inc. Re-programmable COMSEC module
US7418678B1 (en) * 2003-12-01 2008-08-26 Jasper Design Automation, Inc. Managing formal verification complexity of designs with counters
US20050138302A1 (en) * 2003-12-23 2005-06-23 Intel Corporation (A Delaware Corporation) Method and apparatus for logic analyzer observability of buffered memory module links
US7206967B1 (en) 2004-02-09 2007-04-17 Altera Corporation Chip debugging using incremental recompilation and register insertion
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
FR2870955B1 (fr) * 2004-05-26 2006-08-11 Temento Systems Debogueur d'un circuit electronique fabrique a partir d'un programme en langage de description de materiel
US7225416B1 (en) * 2004-06-15 2007-05-29 Altera Corporation Methods and apparatus for automatic test component generation and inclusion into simulation testbench
US20060015775A1 (en) * 2004-07-14 2006-01-19 John Benavides System and method for observing the behavior of an integrated circuit (IC)
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US7350121B2 (en) * 2004-08-13 2008-03-25 Broadcom Corporation Programmable embedded logic analyzer in an integrated circuit
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US7089140B1 (en) * 2004-08-20 2006-08-08 Altera Corporation Programmable logic device and method of testing a programmable logic device
ATE412932T1 (de) * 2004-09-03 2008-11-15 Derek Ward Verbesserungen an numerischen steuerungen und verwandten elektronischen geräten
US7543186B2 (en) * 2004-09-13 2009-06-02 Sigmatel, Inc. System and method for implementing software breakpoints
US7480843B1 (en) 2004-09-29 2009-01-20 Xilinx, Inc. Configuration access from a boundary-scannable device
US7412635B1 (en) * 2004-10-01 2008-08-12 Xilinx, Inc. Utilizing multiple bitstreams to avoid localized defects in partially defective programmable integrated circuits
US7284229B1 (en) 2004-10-01 2007-10-16 Xilinx, Inc. Multiple bitstreams enabling the use of partially defective programmable integrated circuits while avoiding localized defects therein
US7424655B1 (en) 2004-10-01 2008-09-09 Xilinx, Inc. Utilizing multiple test bitstreams to avoid localized defects in partially defective programmable integrated circuits
US20060080075A1 (en) * 2004-10-08 2006-04-13 Young Timothy H Programmable logic controller simulator interface card
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7248070B1 (en) 2005-02-16 2007-07-24 Altera Corporation Method and system for using boundary scan in a programmable logic device
JP4620771B2 (ja) 2005-03-16 2011-01-26 ゲートロケット・インコーポレーテッド Fpgaエミュレーションシステム
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
US8205186B1 (en) * 2005-04-11 2012-06-19 Synopsys, Inc. Incremental modification of instrumentation logic
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US7274442B2 (en) * 2005-05-16 2007-09-25 The Boeing Company Closed-loop wavefront sensor using field programmable gate array
US8156452B1 (en) 2005-06-02 2012-04-10 Altera Corporation Method and apparatus for importing hardware description language into a system level design environment
US20070006166A1 (en) * 2005-06-20 2007-01-04 Seagate Technology Llc Code coverage for an embedded processor system
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US7577876B2 (en) * 2005-06-28 2009-08-18 Intel Corporation Debug system for data tracking
US9104650B2 (en) 2005-07-11 2015-08-11 Brooks Automation, Inc. Intelligent condition monitoring and fault diagnostic system for preventative maintenance
KR101322434B1 (ko) * 2005-07-11 2013-10-28 브룩스 오토메이션 인코퍼레이티드 지능형 상태 감시 및 결함 진단 시스템
US8327202B2 (en) * 2005-07-13 2012-12-04 Hewlett-Packard Development Company, L.P. System and method for scan testing
US7548085B2 (en) * 2005-07-15 2009-06-16 Tabula, Inc. Random access of user design states in a configurable IC
US7375550B1 (en) * 2005-07-15 2008-05-20 Tabula, Inc. Configurable IC with packet switch configuration network
US20090150136A1 (en) * 2005-10-10 2009-06-11 Sei Yang Yang Dynamic-based verification apparatus for verification from electronic system level to gate level, and verification method using the same
US8781808B2 (en) * 2005-10-10 2014-07-15 Sei Yang Yang Prediction-based distributed parallel simulation method
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
WO2007077220A2 (en) * 2006-01-06 2007-07-12 Sandbyte Technologies Limited A debug tool for programmable logic devices
EP1854035A1 (de) * 2006-02-28 2007-11-14 Mentor Graphics Corporation Auf speicher basierendes trigger-erzeugungsschema in einer emulationsumgebung
US7332929B1 (en) 2006-03-03 2008-02-19 Azul Systems, Inc. Wide-scan on-chip logic analyzer with global trigger and interleaved SRAM capture buffers
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
JP4890086B2 (ja) * 2006-04-21 2012-03-07 アオイ電子株式会社 回路検証装置及び回路検証方法
US7573282B2 (en) * 2006-04-26 2009-08-11 Hewlett-Packard Development Company, L.P. Ball grid array connection monitoring system and method
US7669157B1 (en) * 2006-09-05 2010-02-23 Altera Corporation Method and apparatus for performing incremental compilation using top-down and bottom-up design approaches
US7774652B2 (en) * 2006-09-19 2010-08-10 Hewlett-Packard Development Company, L.P. Circuitry and method to detect conditions of data
US7630942B2 (en) * 2007-02-28 2009-12-08 Intel Corporation Multi-core stochastic discrimination
US7743296B1 (en) * 2007-03-26 2010-06-22 Lattice Semiconductor Corporation Logic analyzer systems and methods for programmable logic devices
US7536615B1 (en) * 2007-03-26 2009-05-19 Lattice Semiconductor Corporation Logic analyzer systems and methods for programmable logic devices
EP1976120A1 (de) * 2007-03-31 2008-10-01 Sony Deutschland Gmbh Digitaler Filter und Filterverfahren
US7757198B1 (en) 2007-04-10 2010-07-13 Lattice Semiconductor Corporation Scan chain systems and methods for programmable logic devices
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US7984400B2 (en) * 2007-05-09 2011-07-19 Synopsys, Inc. Techniques for use with automated circuit design and simulations
US8412990B2 (en) 2007-06-27 2013-04-02 Tabula, Inc. Dynamically tracking data values in a configurable IC
US7501855B2 (en) * 2007-06-27 2009-03-10 Tabula, Inc Transport network for a configurable IC
US7579867B2 (en) * 2007-06-27 2009-08-25 Tabula Inc. Restructuring data from a trace buffer of a configurable IC
US7595655B2 (en) * 2007-06-27 2009-09-29 Tabula, Inc. Retrieving data from a configurable IC
US7839162B2 (en) * 2007-06-27 2010-11-23 Tabula, Inc. Configurable IC with deskewing circuits
US7652498B2 (en) * 2007-06-27 2010-01-26 Tabula, Inc. Integrated circuit with delay selecting input selection circuitry
US8069425B2 (en) 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8271911B1 (en) 2007-09-13 2012-09-18 Xilinx, Inc. Programmable hardware event reporting
US8990651B2 (en) * 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
US7870524B1 (en) * 2007-09-24 2011-01-11 Nvidia Corporation Method and system for automating unit performance testing in integrated circuit design
US7619438B1 (en) 2007-10-11 2009-11-17 Xilinx, Inc. Methods of enabling the use of a defective programmable device
US7853916B1 (en) 2007-10-11 2010-12-14 Xilinx, Inc. Methods of using one of a plurality of configuration bitstreams for an integrated circuit
US7810059B1 (en) 2007-10-11 2010-10-05 Xilinx, Inc. Methods of enabling the validation of an integrated circuit adapted to receive one of a plurality of configuration bitstreams
JP2009110284A (ja) 2007-10-30 2009-05-21 Fujitsu Ltd 信号処理装置、カード型デバイス及び障害再現方法
CN101539767A (zh) * 2008-03-21 2009-09-23 鸿富锦精密工业(深圳)有限公司 可编程控制器的快速侦错方法
US7890916B1 (en) * 2008-03-25 2011-02-15 Xilinx, Inc. Debugging using a virtual file system interface
US7576558B1 (en) * 2008-03-27 2009-08-18 Xilinx, Inc. Apparatus and method for enhanced readback of programmable logic device state information
TW200945034A (en) * 2008-04-25 2009-11-01 Acute Technology Inc Method and structure of memory usage for logic analyzer
JP5151685B2 (ja) * 2008-05-23 2013-02-27 富士通株式会社 半導体回路設計支援プログラム
US8064280B1 (en) * 2008-06-10 2011-11-22 Altera Corporation Scaleable look-up table based memory
WO2010016857A1 (en) 2008-08-04 2010-02-11 Tabula, Inc. Trigger circuits and event counters for an ic
US8683404B2 (en) * 2008-08-05 2014-03-25 Nec Corporation Semiconductor verification apparatus, method, and program
US8510691B2 (en) * 2008-10-08 2013-08-13 Nec Corporation Semiconductor verification apparatus, method and program
US8214694B1 (en) * 2009-03-12 2012-07-03 Xilinx, Inc. Lightweight probe and data collection within an integrated circuit
US8327200B1 (en) * 2009-04-02 2012-12-04 Xilinx, Inc. Integrated circuit providing improved feed back of a signal
US8271557B1 (en) 2009-04-20 2012-09-18 Xilinx, Inc. Configuration of a large-scale reconfigurable computing arrangement using a virtual file system interface
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8831925B1 (en) 2009-06-09 2014-09-09 Jasper Design Automation, Inc. Indexing behaviors and recipes of a circuit design
DE102009033221A1 (de) 2009-07-14 2011-01-27 Human Bios Gmbh Sicherheitselement zur Kennzeichnung oder Identifikation von Gegenständen und Lebewesen
US8914681B2 (en) 2009-08-18 2014-12-16 Lexmark International, Inc. Integrated circuit including a programmable logic analyzer with enhanced analyzing and debugging capabilities and a method therefor
US8516304B2 (en) * 2009-08-18 2013-08-20 Lexmark International, Inc. Integrated circuit including a programmable logic analyzer with enhanced analyzing and debugging capabilities and a method therefor
US20110047424A1 (en) * 2009-08-18 2011-02-24 James Ray Bailey Integrated circuit including a programmable logic analyzer with enhanced analyzing and debugging capabilites and a method therefor
US9170901B2 (en) 2009-08-18 2015-10-27 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8745447B2 (en) * 2009-08-18 2014-06-03 Lexmark International, Inc. System and method for analyzing an electronics device including a logic analyzer
US8072234B2 (en) 2009-09-21 2011-12-06 Tabula, Inc. Micro-granular delay testing of configurable ICs
US8881301B2 (en) * 2009-10-05 2014-11-04 Asset Intertech, Inc. Protection of proprietary embedded instruments
US8166437B2 (en) * 2009-12-15 2012-04-24 Apple Inc. Automated pad ring generation for programmable logic device implementation of integrated circuit design
US8479135B2 (en) * 2009-12-15 2013-07-02 Apple Inc. Automated framework for programmable logic device implementation of integrated circuit design
US8302038B2 (en) * 2009-12-15 2012-10-30 Apple Inc. Engineering change order language for modifying integrated circuit design files for programmable logic device implementation
US8332795B2 (en) * 2009-12-15 2012-12-11 Apple Inc. Automated pin multiplexing for programmable logic device implementation of integrated circuit design
TW201221981A (en) * 2010-11-24 2012-06-01 Inventec Corp Multi-chip testing system and testing method thereof
US9037911B2 (en) * 2010-12-09 2015-05-19 Advanced Micro Devices, Inc. Debug state machines and methods of their operation
US8686753B1 (en) * 2011-04-08 2014-04-01 Altera Corporation Partial reconfiguration and in-system debugging
US8581626B2 (en) * 2011-08-25 2013-11-12 Kabushiki Kaisha Toshiba Control system, logic module substrate, and logic FPGA
CN102510227B (zh) * 2011-10-24 2015-05-20 中国核工业二三建设有限公司 核电站安装过程中调试电气设备、阀门及仪表设备的方法
TWI427306B (zh) * 2011-12-27 2014-02-21 Zeroplus Technology Co Ltd Data transmission method
US20150095866A1 (en) * 2012-03-11 2015-04-02 Cigol Digital Systems Ltd. Vlsi circuit signal compression
US8739092B1 (en) 2012-04-25 2014-05-27 Jasper Design Automation, Inc. Functional property ranking
US8893065B2 (en) * 2012-07-11 2014-11-18 Mentor Graphics Corporation Biometric markers in a debugging environment
TW201416686A (zh) * 2012-10-26 2014-05-01 Hon Hai Prec Ind Co Ltd 待測訊號搜尋系統及方法
US9154137B2 (en) 2013-07-04 2015-10-06 Altera Corporation Non-intrusive monitoring and control of integrated circuits
DE102013219591A1 (de) 2013-09-27 2015-04-16 Albert-Ludwigs-Universität Freiburg Verfahren zum authentifizieren mikroelektronischer bauelemente
JP6337548B2 (ja) * 2014-03-20 2018-06-06 富士ゼロックス株式会社 論理集積回路
US9348961B2 (en) * 2014-03-27 2016-05-24 Wipro Limited Logic analyzer circuit for programmable logic device
US9316689B2 (en) 2014-04-18 2016-04-19 Breker Verification Systems Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models
US9342641B1 (en) 2014-04-30 2016-05-17 Keysight Technologies, Inc. Configuration of logic analyzer using graphical user interface
US9575123B2 (en) * 2015-01-23 2017-02-21 Lattice Semiconductor Corporation Registers for post configuration testing of programmable logic devices
KR102391385B1 (ko) * 2015-08-13 2022-04-27 삼성전자주식회사 내장형 로직 분석기 및 이를 포함하는 집적 회로
US10482205B2 (en) * 2017-07-24 2019-11-19 Xilinx, Inc. Logic analyzer for integrated circuits
WO2020030590A1 (en) 2018-08-08 2020-02-13 Numascale As A digital circuit testing and analysis module, system and method thereof
US11442104B1 (en) * 2019-02-25 2022-09-13 Marvell Asia Pte, Ltd. Configurable integrated logic analyzer
US10949586B1 (en) * 2020-07-01 2021-03-16 Xilinx, Inc. Post-synthesis insertion of debug cores
US11188697B1 (en) 2021-01-05 2021-11-30 Xilinx, Inc. On-chip memory access pattern detection for power and resource reduction
CN112634801B (zh) * 2021-01-08 2022-06-10 北京集睿致远科技有限公司 一种片内逻辑分析仪及芯片调试方法
US11327721B1 (en) * 2021-02-08 2022-05-10 Marco Renedo System for extending functionality of a computer programming language, and related method and software

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2927796A (en) 1955-02-21 1960-03-08 Abraham W Silverstein Record display and advertising device
US4696004A (en) 1984-05-28 1987-09-22 Takeda Riken Kogyo Kabushikikaisha Logic analyzer
DE3611872C1 (de) 1986-04-09 1987-04-30 Rohle & Schwarz Gmbh & Co Kg Logikanalysator
US4835736A (en) 1986-08-25 1989-05-30 Tektronix, Inc. Data acquisition system for capturing and storing clustered test data occurring before and after an event of interest
US5365165A (en) 1986-09-19 1994-11-15 Actel Corporation Testability architecture and techniques for programmable interconnect architecture
US4758745B1 (en) 1986-09-19 1994-11-15 Actel Corp User programmable integrated circuit interconnect architecture and test method
US4847612A (en) 1988-01-13 1989-07-11 Plug Logic, Inc. Programmable logic device
JP2678283B2 (ja) * 1988-03-15 1997-11-17 株式会社日立製作所 データ通信制御装置
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5452231A (en) 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
WO1990004233A1 (en) 1988-10-05 1990-04-19 Mentor Graphics Corporation Method of using electronically reconfigurable gate array logic and apparatus formed thereby
US5329470A (en) 1988-12-02 1994-07-12 Quickturn Systems, Inc. Reconfigurable hardware emulation system
DE69030792T2 (de) * 1989-07-27 1997-09-11 Lsi Logic Corp Methode und Gerät zur Wechselwirkung-Emulation zwischen einer anwendungsspezifischen integrierten Schaltung (ASIC) während der Entwicklung und ein Zielsystem
DE4042262A1 (de) 1990-12-31 1992-07-02 Richt Stefan Verfahren zur analyse der funktionsweise von digitalen schaltungen
US5124588A (en) 1991-05-01 1992-06-23 North American Philips Corporation Programmable combinational logic circuit
US5425036A (en) 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
DE69415600T2 (de) * 1993-07-28 1999-07-15 Koninkl Philips Electronics Nv Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren
US5640542A (en) * 1993-10-29 1997-06-17 Intel Corporation On-chip in-circuit-emulator memory mapping and breakpoint register modules
US5488688A (en) * 1994-03-30 1996-01-30 Motorola, Inc. Data processor with real-time diagnostic capability
US5572712A (en) 1994-09-30 1996-11-05 Vlsi Technology, Inc. Method and apparatus for making integrated circuits with built-in self-test
US5629617A (en) 1995-01-06 1997-05-13 Hewlett-Packard Company Multiplexing electronic test probe
US5568437A (en) 1995-06-20 1996-10-22 Vlsi Technology, Inc. Built-in self test for integrated circuits having read/write memory
US5717695A (en) 1995-12-04 1998-02-10 Silicon Graphics, Inc. Output pin for selectively outputting one of a plurality of signals internal to a semiconductor chip according to a programmable register for diagnostics
US5802348A (en) * 1995-12-18 1998-09-01 Virtual Machine Works, Inc. Logic analysis system for logic emulation systems
US6020758A (en) 1996-03-11 2000-02-01 Altera Corporation Partially reconfigurable programmable logic device
US5764079A (en) 1996-03-11 1998-06-09 Altera Corporation Sample and load scheme for observability of internal nodes in a PLD
US5870410A (en) 1996-04-29 1999-02-09 Altera Corporation Diagnostic interface system for programmable logic system development
US5724505A (en) * 1996-05-15 1998-03-03 Lucent Technologies Inc. Apparatus and method for real-time program monitoring via a serial interface
US5821771A (en) 1996-05-21 1998-10-13 Altera Corporation Method and apparatus for monitoring or forcing an internal node in a programmable device
US6097211A (en) * 1996-07-18 2000-08-01 Altera Corporation Configuration memory integrated circuit
US5717699A (en) * 1996-07-18 1998-02-10 Hewlett-Packard Company Method and apparatus for accessing internal integrated circuit signals
JPH10222374A (ja) 1996-10-28 1998-08-21 Altera Corp 遠隔ソフトウェア技術支援を提供するための方法
US6167536A (en) * 1997-04-08 2000-12-26 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US5960191A (en) * 1997-05-30 1999-09-28 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect
US6157210A (en) * 1997-10-16 2000-12-05 Altera Corporation Programmable logic device with circuitry for observing programmable logic circuit signals and for preloading programmable logic circuits
US6247147B1 (en) * 1997-10-27 2001-06-12 Altera Corporation Enhanced embedded logic analyzer
US6286114B1 (en) * 1997-10-27 2001-09-04 Altera Corporation Enhanced embedded logic analyzer
US6212650B1 (en) 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6016563A (en) * 1997-12-30 2000-01-18 Fleisher; Evgeny G. Method and apparatus for testing a logic design of a programmable logic device
US6104211A (en) 1998-09-11 2000-08-15 Xilinx, Inc. System for preventing radiation failures in programmable logic devices
US6107821A (en) * 1999-02-08 2000-08-22 Xilinx, Inc. On-chip logic analysis and method for using the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013203905B4 (de) * 2013-03-07 2016-12-29 Telemotive AG Prozessorgesteuertes Speichergerät und Verfahren

Also Published As

Publication number Publication date
EP2264598A3 (de) 2011-06-22
EP2264600A2 (de) 2010-12-22
EP2264598A2 (de) 2010-12-22
DE69834892D1 (de) 2006-07-27
EP2264600A3 (de) 2011-06-22
US6460148B2 (en) 2002-10-01
EP2264599A2 (de) 2010-12-22
US6704889B2 (en) 2004-03-09
US20020194543A1 (en) 2002-12-19
EP0919916A2 (de) 1999-06-02
DE69834892T2 (de) 2007-05-24
EP2264599A3 (de) 2011-06-22
JPH11296403A (ja) 1999-10-29
DE69835106D1 (de) 2006-08-10
EP0919916A3 (de) 2000-01-12
US6286114B1 (en) 2001-09-04
US20010037477A1 (en) 2001-11-01
EP0919916B1 (de) 2006-06-14

Similar Documents

Publication Publication Date Title
DE69835106T2 (de) Eingebetteter logischer Analysator
US6247147B1 (en) Enhanced embedded logic analyzer
US6389558B1 (en) Embedded logic analyzer for a programmable logic device
DE69826859T2 (de) Verteilter logik-analysator zur verwendung in einem hardware-logikemulationssystem
DE602005003225T2 (de) Verfahren und system zum simulieren eines modularen testsystems
DE60104854T2 (de) System und Verfahren zum Testen integrierter Schaltungen
DE60211659T2 (de) Verfahren und vorrichtung zur diagnose von ausfällen in einer integrierten schaltung unter verwendung von techniken des typs design-for-debug (dfd)
DE10392667T5 (de) Ereignisbasiertes IC-Testsystem
DE60309931T2 (de) Verbindung mehrerer testzugriffsportsteuerungsvorrichtungen durch ein einzeltestzugriffsport
DE602004007498T2 (de) Testemulationseinrichtung
DE102005025744A1 (de) Verfahren und Vorrichtung zum automatisierten Testaufbau
DE4420610A1 (de) Verfahren und Vorrichtung zum Konfigurieren von Speicherschaltkreisen
DE10392497T5 (de) Herstellungsverfahren und Herstellungsvorrichtung zum Vermeiden eines Prototypen-Aufschubs bei der ASIC/SOC-Herstellung
DE112008000542T5 (de) Verfahren und Vorrichtungen zum Schätzen einer Position eines Hängenbleibe-Defekts in einer Abtastkette eines Testobjekts
DE3341766A1 (de) Verfahren und vorrichtung zum zeitlichen koordinieren von daten
CN1987820A (zh) 用于跟踪现场可编程门阵列中的程序执行的方法和系统
DE60012735T2 (de) Verfahren zur unterscheidung von verschiedenen typen von abtastfehlern, rechnerbasierte schaltungsemulation und fehlerdetektionssystem
DE60306164T2 (de) Verfahren und kontrolllogik zum ansteuern von mehreren taps (test access ports) über einen einzigen tap
DE112019004358T5 (de) Verfahren zur takt-gate-analyse von entwürfen für elektronische systeme und zugehörige systeme, verfahren und vorrichtungen
EP1430320B1 (de) Elektronischer baustein und verfahren zu dessen qualifizierungsmessung
DE102020108216A1 (de) Verfahren und Vorrichtungen zum Durchführen von Design for Debug über eine Protokollschnittstelle
EP1233341A1 (de) Eingebetteter logischer Analysator
DE112019007386T5 (de) Verbesserte jtag-register mit gleichzeitigen eingängen
DE19950838C2 (de) Verfahren und Vorrichtung zur Fehleranalyse digitaler Logikschaltungen
DE10160633C1 (de) Verfahren und Vorrichtung zum Simulieren einer zu verifizierenden Schaltungseinheit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition