DE102015115022A1 - Method for changing the configuration of a programmable logic device - Google Patents

Method for changing the configuration of a programmable logic device Download PDF

Info

Publication number
DE102015115022A1
DE102015115022A1 DE102015115022.0A DE102015115022A DE102015115022A1 DE 102015115022 A1 DE102015115022 A1 DE 102015115022A1 DE 102015115022 A DE102015115022 A DE 102015115022A DE 102015115022 A1 DE102015115022 A1 DE 102015115022A1
Authority
DE
Germany
Prior art keywords
logic
configuration
elements
programmable logic
bit stream
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.)
Withdrawn
Application number
DE102015115022.0A
Other languages
German (de)
Inventor
Frank Mertens
Marc Dressler
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.)
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering GmbH
Original Assignee
Dspace GmbH
Dspace Digital Signal Processing and Control Engineering GmbH
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 Dspace GmbH, Dspace Digital Signal Processing and Control Engineering GmbH filed Critical Dspace GmbH
Priority to DE102015115022.0A priority Critical patent/DE102015115022A1/en
Priority to US15/258,059 priority patent/US9929734B2/en
Priority to JP2016175573A priority patent/JP6530358B2/en
Publication of DE102015115022A1 publication Critical patent/DE102015115022A1/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Abstract

In einem Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins wird eine Ausgangskonfiguration des programmierbaren Logikbausteins eingelesen, so dass eine Logikbeschreibung, insbesondere eine platzierte Netzliste, der Ausgangskonfiguration zumindest teilweise vorliegt. Aus der Logikbeschreibung der Ausgangskonfiguration des programmierbaren Logikbausteins werden ein oder mehrere Logikelemente und/oder Verbindungselemente ersetzt oder umkonfiguriert und eine Logikbeschreibung einer Zielkonfiguration wird erstellt, welche kein oder mehrere zusätzliche Logikelemente aufweist, wobei kein oder mehrere Elemente der Ausgangskonfiguration in der Zielkonfiguration fehlen. Anhand von Zuordnungsinformationen Übergabepunkte bestimmt, also in Ziel- und Ausgangskonfiguration vorhandene Logikelemente, insbesondere Register, und/oder Verschaltungselemente, an denen in der Zielkonfiguration eine geänderte Logikfunktion angelegt wird, wobei zumindest die bereits in der Ausgangskonfiguration nicht genutzten Logikelemente des programmierbaren Logikbausteins als frei markiert werden, und wobei die zusätzlichen Logikelemente der Zielkonfiguration auf den als frei markierten Logikelementen platziert und über ungenutzte Verbindungselemente mit den Übergabepunkten verbunden werden. Aus der Logikbeschreibung der Zielkonfiguration wird ein geänderter Bitstrom erstellt und der geänderte Bitstrom wird in den programmierbaren Logikbaustein geschrieben.In a method for changing the configuration of a programmable logic module, an output configuration of the programmable logic module is read, so that a logic description, in particular a placed network list, the output configuration is at least partially present. One or more logic elements and / or connectors are replaced or reconfigured from the logic description of the programmable logic device output configuration and a logic description of a target configuration is created having no or more additional logic elements, with none or more elements of the output configuration missing in the target configuration. On the basis of allocation information transfer points determined, ie in target and output configuration existing logic elements, in particular registers, and / or Verschaltungselemente to which a modified logic function is applied in the target configuration, wherein at least the unused in the initial configuration logic elements of the programmable logic device marked as free and the additional logic elements of the target configuration are placed on the freely marked logic elements and connected to the transfer points via unused connection elements. From the logic description of the target configuration, a modified bit stream is created and the changed bit stream is written to the programmable logic device.

Description

Die Erfindung betrifft ein Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins, ein Verfahren zum Anpassen eines Steuergeräts, welches einen zur Ausführung einer Regelfunktion eingerichteten programmierbaren Logikbaustein umfasst, und eine Programmiervorrichtung zum Beschreiben eines programmierbaren Logikbausteins. The invention relates to a method for changing the configuration of a programmable logic module, a method for adapting a control unit, which comprises a programmable logic module set up to execute a control function, and a programming device for writing a programmable logic module.

In vielen Gebieten der Technik werden Steuergeräte zur Regelung eines physikalischen Prozesses eingesetzt, wobei ein Mikrocontroller des Steuergeräts zyklisch ein Programm abarbeitet, welches die Ermittlung neuer Messwerte eines oder mehrerer Sensoren und die Ansteuerung eines oder mehrerer Aktuatoren basierend auf einem Vergleich der Messwerte mit Sollwerten umfasst. Zur Beschleunigung des Entwurfs neuer Steuergeräte bzw. Regelalgorithmen wird dabei häufig auf einem bestehenden Steuergerät aufgesetzt und lediglich einzelne (Teil-)Funktionen ersetzt. Dieses auch unter dem Begriff Bypassing bekannte Vorgehen kann entweder vollständig auf dem bestehenden Steuergerät umgesetzt werden (internes Bypassing) oder für den Aufruf der neuen Funktion(en), den sogenannten Bypassfunktionen, auf ein gesondertes Rapid Control Prototyping System (abgekürzt RCP-System) zurückgreifen (externes Bypassing). Das Ersetzen einzelner Funktionen kann zweckmäßigerweise durch die Anpassung von Sprungbefehlen erfolgen. In many fields of technology, control devices are used to control a physical process, wherein a microcontroller of the control device cyclically executes a program which comprises the determination of new measured values of one or more sensors and the actuation of one or more actuators based on a comparison of the measured values with setpoints. To speed up the design of new control devices or control algorithms is often placed on an existing controller and only single (sub) functions replaced. This procedure, also known as bypassing, can either be completely implemented on the existing control unit (internal bypassing) or resort to a separate Rapid Control Prototyping System (RCP system) for calling the new function (s), the so-called bypass functions (external bypassing). The replacement of individual functions may conveniently be done by the adaptation of jump instructions.

Aus der EP 2869145 A1 ist ein Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes bekannt, wobei das Steuerprogramm eine Vielzahl von ersten Funktionen umfasst, von denen wenigsten eine für die Steuerung eines Aktuators ausgebildet ist, und wobei ein Speicher vorgesehen ist, der mit den ersten Funktionen zugeordneten Unterprogrammen belegte Speicherbereiche aufweist. Das Steuerprogramm liegt als ein binärer Programmkode vor, wobei in dem Programmkode des Steuerprogramms bei dem Aufruf von einer der ersten Funktionen eine Sprungadresse vorliegt, welche auf eine Speicheradresse des mit dem Funktionsaufruf verbundenen Unterprogramms zeigt, und wobei das Unterprogramm als eine Abfolge von binärem Programmkode vorliegt und an dem Ende der Abfolge des Programmkodes des Unterprogramms ein Rücksprungbefehl vorliegt. Der Programmkode des Steuerprogramms wird auf das Auftreten von Funktionsaufrufen untersucht und die mit den Funktionsaufrufen verbundenen Sprungadressen und Adressen der Rücksprungbefehle werden ermittelt, wobei aus der Ermittlung der Größe die mit den jeweiligen Unterprogrammen belegten Speicherbereiche des Speichers ermittelt werden. Die den ersten Funktionen zugeordneten Bezeichner mit den jeweiligen ersten Funktionen zugeordneten Größen und Adressen der Speicherbereiche werden in einer Anzeigeeinheit dargestellt, die als Teil eines Computersystems ausgebildet ist. Mittels des Computersystems wird wenigstens eine der ersten Funktionen als zu löschend ausgewählt, wobei Größe und Adresse der ausgewählten ersten Funktion wird in einer Funktionsstruktur gespeichert und wenigstens ein Funktionsaufruf der ausgewählten ersten Funktion deaktiviert und/oder die erste Funktion durch eine zweite Funktion ersetzt wird, indem der Programmkode der ausgewählten ersten Funktion mittels des Programmkodes der zweiten Funktion überschrieben wird. From the EP 2869145 A1 a method for influencing a control program of a control unit is known, wherein the control program comprises a plurality of first functions, of which at least one is designed for the control of an actuator, and wherein a memory is provided, having the first functions associated with subroutines occupied memory areas , The control program is present as a binary program code, wherein in the program code of the control program in the call of one of the first functions there is a jump address pointing to a memory address of the subroutine associated with the function call, and wherein the subroutine is a sequence of binary program code and at the end of the sequence of the program code of the subroutine, there is a return instruction. The program code of the control program is examined for the occurrence of function calls, and the jump addresses associated with the function calls and addresses of the return instructions are determined, wherein the determination of the size determines the memory areas of the memory occupied by the respective subroutines. The identifiers associated with the first functions with the respective first functions and addresses of the memory areas are displayed in a display unit which is formed as part of a computer system. By means of the computer system, at least one of the first functions is selected as to be deleted, the size and address of the selected first function is stored in a function structure, and at least one function call of the selected first function is deactivated and / or the first function is replaced by a second function the program code of the selected first function is overwritten by the program code of the second function.

Für die Simulation und Regelung von Systemen mit hoher Dynamik werden in zunehmendem Umfang unter dem Begriff Field Programmable Gate Array (abgekürzt FPGA) bekannte programmierbare Logikbausteine eingesetzt, die aufgrund paralleler Verarbeitung und einer für die jeweilige Anwendung maßgeschneiderten Logikschaltung auch schnell veränderliche Strecken zuverlässig regeln. Da anders als bei Mikroprozessoren keine sequentielle Abarbeitung erfolgt und keine Sprungbefehle vorhanden sind, kann für die auf einem FPGA implementierten Regelfunktionen bisher kein Bypassing durchgeführt werden. Ein weiterer Nachteil des Einsatzes von FPGA liegt darin, dass kleine Anpassungen an den einzelnen Logikfunktionen nur eingeschränkt möglich sind, da die Schaltung jeweils vollständig neu synthetisiert werden muss, was insbesondere aufgrund der Optimierung von Platzierung und Routing zeitaufwändig ist. Es wäre daher wünschenswert, eine einfache Möglichkeit zur Anpassung von Logikfunktionen auch für programmierbare Logikbausteine bereitzustellen. For the simulation and control of systems with high dynamics increasingly known programmable logic devices are used under the term Field Programmable Gate Array (abbreviated FPGA), which also reliably regulate rapidly changing paths due to parallel processing and a logic circuit custom-tailored for the respective application. Since, unlike microprocessors, there is no sequential processing and there are no jump instructions, so far no bypassing can be performed for the control functions implemented on an FPGA. A further disadvantage of the use of FPGA is that small adaptations to the individual logic functions are only possible to a limited extent since the circuit must be completely re-synthesized, which is time-consuming, in particular due to the optimization of placement and routing. It would therefore be desirable to provide a simple way of adapting logic functions also for programmable logic devices.

Eine partielle Rekonfiguration ist ein z.B. aus der US 7,902,866 B2 bekanntes Vorgehen, um die Konfiguration eines FPGA nachträglich bzw. zur Laufzeit ändern zu können. Als Vorbereitung hierfür muss die FPGA-Konfiguration bereits in der Entwurfsphase in Partitionen aufgeteilt werden, wobei also beispielsweise eine erste und eine zweite Partition erstellt werden. In der ersten Partition werden unveränderliche bzw. immer vorhandene Logikfunktionen bereitgestellt. Die zweite Partition stellt dann einen abgegrenzten Bereich dar, für den eine partielle Neu-Synthese und eine partielle Rekonfiguration möglich sind, so dass also die auf der zweiten Partition angeordneten Logikfunktionen prinzipiell geändert werden können. Dieses Vorgehen weist allerdings eine Reihe von Nachteilen auf:

  • • Bereits im Initialdesign müssen die Partitionsschnittstellen geplant und fest implementiert werden.
  • • Unabhängig von der in der zweiten Partition realisierten Funktionalität bzw. implementierten Logikfunktion ist eine feste Anzahl von Logikeinheiten und Verbindungselementen reserviert. Durch die somit erforderliche Reservierung der größten anzunehmenden Anzahl erforderlicher Logikelemente bleiben in vielen Fällen Ressourcen ungenutzt.
  • • Alle auf der ersten Partition angeordneten Logikfunktionen bleiben fest; auch dann, wenn die aktuell realisierte Funktionalität der zweiten Partition diese nicht benötigt, bleibt ein Platz- und Energiebedarf der Funktionen erhalten.
A partial reconfiguration is an example from the US 7,902,866 B2 Known procedure to be able to change the configuration of an FPGA later or at runtime. In preparation for this, the FPGA configuration must already be partitioned into partitions during the design phase, for example, creating a first partition and a second partition. The first partition provides immutable or always-on logic functions. The second partition then represents a delimited area for which a partial re-synthesis and a partial reconfiguration are possible, so that in principle the logic functions arranged on the second partition can be changed. However, this approach has a number of disadvantages:
  • • Already in the initial design, the partition interfaces have to be planned and firmly implemented.
  • • Regardless of the functionality or logic implemented in the second partition, a fixed number of logic units and connectors are reserved. Due to the thus required reservation of the largest the number of required logic elements to be assumed in many cases remains unused resources.
  • • All logic functions arranged on the first partition remain fixed; even if the currently implemented functionality of the second partition does not require them, a space and energy requirement of the functions is maintained.

Für den Entwurf und die Bearbeitung von FPGA-Konfiguration wurde „Torc: Towards an Open Source Tool Flow“, Proceedings of the 19th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays, 2011, von N. Steiner et al. vorgestellt, welches beispielsweise eine Logikbeschreibung in Form einer unplatzierten oder platzierten Netzliste lesen und schreiben kann. Aufbauend hierauf beschreiben R. K. Soni et al. in „Open-Source Bitstream Generation“, 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 , eine Möglichkeit schnelle Modifikationen an einem Bitstrom vorzunehmen, der eine FPGA-Konfiguration beschreibt. Mit Hilfe einer Bibliothek von Mikro-Bitströmen, welche jeweils einzelne Grundeinheiten beschreiben, können auf Basis einer platzierten Netzliste weitere Logikelemente zu einer bestehenden Konfiguration hinzugefügt werden. For the design and editing of FPGA configuration has been "Torc: Towards an Open Source Tool Flow," Proceedings of the 19th Annual ACM / SIGDA International Symposium on Field Programmable Gate Arrays, 2011, by N. Steiner et al. which, for example, can read and write a logic description in the form of an unplaced or placed netlist. Based on this description RK Soni et al. in "Open-Source Bitstream Generation," 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 , a way to make quick modifications to a bitstream that describes an FPGA configuration. With the help of a library of micro-bit streams, which each describe individual basic units, additional logic elements can be added to an existing configuration based on a placed netlist.

Mit „Rapid Smith: Do-it-Yourself CAD Tools for Xilinx FPGAs“, 2011 21st International Conference on Field Programmable Logic and Applications, von C. Lavin et al. ist ein weiteres Entwurfswerkzeuge für FPGA-Konfigurationen bekannt geworden. Aufbauend hierauf wird in dem Paper „Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs“, 22nd IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2014, von B. L. Hutchings und J. Keeley eine Möglichkeit beschrieben, eine bestehende FPGA-Konfiguration zu modifizieren, ohne dass eine erneute Kompilierung bzw. Synthese der vollständigen Schaltung erforderlich ist. Unter Verwendung von bisher ungenutzten Logikelementen bzw. Flächen des FPGA können somit nachträglich Mess-Schaltungen in eine ansonsten unveränderte FPGA-Konfiguration eingebracht werden. Eine Anpassung einzelner Logikfunktionen und somit eine Änderung der ausgegebenen Werte bzw. Signale erfolgt nicht. With "Rapid Smith: Do-It-Yourself CAD Tools for Xilinx FPGAs", 2011 21st International Conference on Field Programmable Logic and Applications, by C. Lavin et al. Another design tool for FPGA configurations has become known. Building on this is in the paper "Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs," 22nd IEEE Annual International Symposium on Field Programmable Custom Computing Machines 2014, by BL Hutchings and J. Keeley described a way to modify an existing FPGA configuration without recompiling or synthesizing the complete circuit. Using previously unused logic elements or areas of the FPGA, measuring circuits can thus be subsequently introduced into an otherwise unchanged FPGA configuration. An adaptation of individual logic functions and thus a change of the output values or signals does not take place.

Vor diesem Hintergrund besteht die Aufgabe der Erfindung darin, ein Verfahren und eine Vorrichtung anzugeben, welche den Stand der Technik weiterbilden, und vorzugsweise eine mit dem bekannten Bypassing vergleichbare Funktionalität bei der Entwicklung von programmierbare Logikbausteine umfassenden Steuergeräten ermöglichen. Against this background, the object of the invention is to provide a method and a device, which further develop the prior art, and preferably allow a comparable with the known bypassing functionality in the development of programmable logic devices comprehensive control devices.

Die Aufgabe wird durch ein Verfahren zum Ändern der Konfiguration eines Programmierbaren Logikbausteins mit den Merkmalen von Anspruch 1 und eine Programmiervorrichtung mit den Merkmalen von Anspruch 16 gelöst. The object is achieved by a method for changing the configuration of a programmable logic module having the features of claim 1 and a programming device having the features of claim 16.

Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand von abhängigen Unteransprüchen. Advantageous embodiments of the invention are the subject of dependent subclaims.

Erfindungsgemäß wird also ein Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins bereitgestellt, bei dem eine Ausgangskonfiguration des programmierbaren Logikbausteins eingelesen wird, so dass eine Logikbeschreibung, insbesondere eine platzierte Netzliste, der Ausgangskonfiguration zumindest teilweise vorliegt, wobei aus der Logikbeschreibung der Ausgangskonfiguration des programmierbaren Logikbausteins ein oder mehrere Logikelemente und/oder Verbindungselemente ersetzt oder umkonfiguriert werden und eine Logikbeschreibung einer Zielkonfiguration erstellt wird, welche kein, ein oder mehrere zusätzliche Logikelemente aufweist, wobei kein, ein oder mehrere Elemente der Ausgangskonfiguration in der Zielkonfiguration nicht genutzt werden. Anhand von Zuordnungsinformationen werden Übergabepunkte bestimmt, also in Ziel- und Ausgangskonfiguration vorhandenen Logikelemente oder deren Ein- oder Ausgänge, insbesondere Register oder Treiber, an denen in der Zielkonfiguration eine geänderte Logikfunktion angelegt wird, wobei zumindest die bereits in der Ausgangskonfiguration nicht genutzten Logikelemente des programmierbaren Logikbausteins als frei markiert werden und wobei die zusätzlichen Logikelemente der Zielkonfiguration auf den als frei markierten Logikelementen platziert und über ungenutzte Verbindungselemente mit den Übergabepunkten verbunden werden. Aus der Logikbeschreibung der Zielkonfiguration wird ein geänderter Bitstrom erstellt und der geänderte Bitstrom wird in den programmierbaren Logikbaustein geschrieben. The invention thus provides a method for changing the configuration of a programmable logic module, in which an output configuration of the programmable logic module is read, so that a logic description, in particular a placed netlist, the output configuration is at least partially present, wherein from the logic description of the output configuration of the programmable logic device or a plurality of logic elements and / or connectors are replaced or reconfigured and a logic description of a target configuration is created that has no, one or more additional logic elements, wherein none, one or more elements of the initial configuration are not used in the target configuration. On the basis of allocation information, transfer points are determined, ie logic elements or their inputs or outputs present in the target and output configuration, in particular registers or drivers, to which a modified logic function is applied in the target configuration, whereby at least the logic elements of the programmable logic elements not already used in the initial configuration Logic blocks are marked as free and the additional logic elements of the target configuration are placed on the freely marked logic elements and connected via unused connecting elements with the transfer points. From the logic description of the target configuration, a modified bit stream is created and the changed bit stream is written to the programmable logic device.

Programmierbare Logikbausteine umfassen insbesondere unter den Abkürzungen FPGA, CPLD und PLD bekannte Bausteine, welche eine Vielzahl von Logikelementen und eine Vielzahl von Verbindungselementen besitzen, deren genaue Konfiguration nach einem Neustart des Bausteins anhand eines eingelesenen Bitstroms festgelegt wird. Zu diesem Zweck weisen programmierbare Logikbausteine zweckmäßigerweise einen Konfigurationsspeicher auf, der für jedes Logikelement und jedes schaltbare Verbindungselement zumindest ein Bit umfasst und vorzugsweise aus statischen Speicherzellen (SRAM, insbesondere bei FPGAs) oder nichtflüchtigen Speichern (FLASH, insbesondere bei PLDs) aufgebaut ist. Programmable logic devices include, in particular under the abbreviations FPGA, CPLD and PLD known components, which have a plurality of logic elements and a plurality of connecting elements, the exact configuration is set after a restart of the block based on a read bit stream. For this purpose, programmable logic devices expediently have a configuration memory which comprises at least one bit for each logic element and each switchable connection element and is preferably made up of static memory cells (SRAM, in particular in the case of FPGAs) or nonvolatile memories (FLASH, in particular in the case of PLDs).

Unter einem Logikelement sind hierbei elementare Einheiten des programmierbaren Logikbausteins wie Register, Wahrheitstabellen und Verzögerungseinheiten zu verstehen. Vorzugsweise umfassen Logikelemente auch Treiber insbesondere für einen Schnittstellen-Pin eines FPGAs sowie fest vorgegebene dedizierte Logikschaltungen z.B. für eine Multiplikation mehrerer Werte. Mit einem Umkonfigurieren eines Logikelements ist zweckmäßigerweise ein Ändern mindestens einer Eigenschaft des Logikelements gemeint. Beispielsweise würde ein Umkonfigurieren einer Wahrheitstabelle bedeuten, dass mindestens ein Ausgabewert der Tabelle gegenüber der Ausgangskonfiguration verändert ist; im Fall einer dedizierten Logikschaltung könnte das Umkonfigurieren z.B. auch in dem Anlegen eines Taktes bzw. dem Aktivieren oder Deaktivieren der dedizierten Logikschaltung bestehen. Under a logic element here are elementary units of the programmable logic device as registers, truth tables and delay units to understand. Preferably For example, logic elements also include drivers, in particular for an interface pin of an FPGA, as well as fixed, dedicated logic circuits, for example, for multiplying a plurality of values. A reconfiguration of a logic element is expediently meant to change at least one property of the logic element. For example, reconfiguring a truth table would mean that at least one output value of the table has changed from the initial configuration; In the case of a dedicated logic circuit, for example, the reconfiguration could also consist in the application of a clock or the activation or deactivation of the dedicated logic circuit.

Das Ersetzen oder Umkonfigurieren von ein oder mehreren Logikelementen und/oder Verbindungselementen der Ausgangskonfiguration erfolgt bevorzugt anhand von Zuordnungsinformationen, die insbesondere von dem Hersteller der Ausgangskonfiguration zur Verfügung gestellt worden sein können. Wenn keine vollständige Logikbeschreibung der Ausgangskonfiguration vorliegt, so umfassen die Zuordnungsinformationen zweckmäßigerweise zumindest verfügbare Eingabesignale und mögliche Ausgabepunkte. Die Zuordnungsinformationen können eine direkt vom Hersteller der Ausgangskonfiguration angegebene Liste von Übergabepunkten umfassen; alternativ oder ergänzend kann der Nutzer einen oder mehrere Übergabe punkte vorgeben. An einen Übergabepunkt wird insbesondere dann eine geänderte Logikfunktion angelegt, wenn der Signalpfad eines Eingangs des Übergabepunkts mindestens ein zusätzliches oder umkonfiguriertes Logikelement enthält. Logikfunktionen umfassen zweckmäßigerweise eine Anzahl von aufeinanderfolgenden Logikelementen, wobei zumindest teilweise ein Ausgang eines ersten Logikelements mit einem Eingang eines zweiten Logikelements verbunden ist, so dass ein durchgehender Signalpfad von einem Eingang der Logikfunktion zu einem Ausgang besteht. Bevorzugt werden Logikfunktionen ausgehend von einem für den Empfang von Signalen konfigurierten Schnittstellen-Pin des programmierbaren Logikbausteins betrachtet. The replacement or reconfiguration of one or more logic elements and / or connection elements of the output configuration preferably takes place on the basis of assignment information, which in particular may have been provided by the manufacturer of the output configuration. If there is no complete logic description of the output configuration, then the mapping information expediently includes at least available input signals and possible output points. The mapping information may include a list of handover points specified directly by the manufacturer of the initial configuration; alternatively or additionally, the user can specify one or more transfer points. A modified logic function is applied to a transfer point in particular if the signal path of an input of the transfer point contains at least one additional or reconfigured logic element. Logic functions suitably comprise a number of consecutive logic elements, wherein at least partially an output of a first logic element is connected to an input of a second logic element so that a continuous signal path exists from an input of the logic function to an output. Preferably, logic functions are considered starting from an interface pin of the programmable logic module configured for the reception of signals.

Mit zusätzlichen Logikelementen der Zielkonfiguration sind solche Logikelemente gemeint, welche in der Zielkonfiguration in einem Signalpfad angeordnet sind, aber in der Ausgangskonfiguration weder direkt noch indirekt, d.h. über weitere Logikelemente, mit einem Ausgang bzw. einem Schnittstellen-Pin des programmierbaren Logikbausteins verbunden waren. Um die Zielkonfiguration weiterhin mit hohen FPGA-Taktraten betreiben zu können, werden bevorzugt freie Logikelemente in der Nähe (z.B. innerhalb einem definierten Radius) des jeweiligen Übergabepunkts verwendet. Dies vermeidet übermäßige Verzögerungen durch lange Signalpfade. By additional logic elements of the target configuration are meant those logic elements which are located in the target configuration in a signal path but in the initial configuration neither directly nor indirectly, i. via further logic elements, were connected to an output or an interface pin of the programmable logic device. In order to continue to operate the target configuration at high FPGA clock rates, it is preferred to use free logic elements in the vicinity (e.g., within a defined radius) of the particular transfer point. This avoids excessive delays due to long signal paths.

Eine Konfiguration des FPGA kann hierbei in mehreren Ebenen dargestellt werden. Auf unterster Ebene liegt ein die Konfiguration beschreibender Bitstrom vor, welcher direkt in den Konfigurationsspeicher des FPGA geschrieben werden kann. In der nächsthöheren Ebene liegt die Logikbeschreibung in Form einer platzierten Netzliste vor, bei der eine gewünschte Funktionalität bereits auf die Logik- und Verschaltungselemente abgebildet wurde und somit in einem Bitstrom übersetzt werden kann. Die nächsthöhere Ebene bildet eine Logikbeschreibung in Form einer unplatzierten Netzliste, bei der noch keine Abbildung auf konkrete Elemente des jeweiligen FPGA-Bausteins erfolgt ist. Je nach dem Vorgehen beim Erstellen der Konfiguration können noch höhere Abstraktionsebenen vorhanden sein, so kann eine Beschreibung der Konfiguration in einer Hardwarebeschreibungssprache wie VHDL oder SystemC vorliegen, welche anschließend in eine Netzliste konvertiert wird. Auch die Beschreibung in Form eines Blockdiagramms einer technischen Rechenumgebung wie Matlab und Simulink ist möglich, da z.B. mittels des Xilinx System Generators das Blockdiagramm in eine Darstellung der FPGA-Konfiguration in einer Hardwarebeschreibungssprache übersetzt werden kann. Hierbei kann es auch vorgesehen sein, dass anhand des Blockdiagramms automatisiert eine Liste möglicher Übergabepunkte erstellt wird, welche z.B. die den Ein- und Ausgänge eines Blocks bzw. eines Subsystems entsprechenden Logikelemente enthält. A configuration of the FPGA can be displayed in several levels. At the lowest level there is a bitstream describing the configuration, which can be written directly into the configuration memory of the FPGA. In the next higher level, the logic description is in the form of a placed netlist in which a desired functionality has already been mapped to the logic and interconnection elements and thus can be translated in a bitstream. The next highest level is a logic description in the form of an unplaced netlist, in which no mapping has yet been made to concrete elements of the respective FPGA chip. Depending on the procedure used to create the configuration, even higher abstraction levels may be present, so that a description of the configuration may be available in a hardware description language such as VHDL or SystemC, which is then converted into a netlist. The description in the form of a block diagram of a technical computing environment such as Matlab and Simulink is also possible because e.g. Using the Xilinx System Generator, the block diagram can be translated into a representation of the FPGA configuration in a hardware description language. In this case, it can also be provided that a list of possible transfer points is automatically generated on the basis of the block diagram, which is e.g. contains the logic elements corresponding to the inputs and outputs of a block or subsystem.

Das Schreiben des geänderten Bitstroms kann vollständig oder differentiell erfolgen, wobei also vorzugsweise nur für geänderte Logikelemente oder Regionen ein geänderter Bitstrom geschrieben wird. Mit dem Schreiben des geänderten Bitstroms in den programmierbaren Logikbaustein ist insbesondere ein Beschreiben des Konfigurationsspeichers des programmierbaren Logikbausteins gemeint, wobei zweckmäßigerweise bei einem differentiellen Schreiben nur die Frames bzw. Adressbereiche des Konfigurationsspeichers beschrieben werden, welche ein oder mehrere umkonfigurierte oder zusätzliche Logikelemente oder Verbindungselemente umfassen. Hierbei kann es auch vorgesehen sein, einen nichtflüchtigen Speicher zu beschreiben, der bei einer Initialisierung des programmierbaren Logikbausteins ausgelesen wird und den Inhalt des Konfigurationsspeichers bestimmt; somit kann das Schreiben der geänderten Bitstroms in den programmierbaren Logikbaustein indirekt erfolgen. The writing of the modified bit stream can be done completely or differentially, so that a modified bit stream is preferably written only for changed logic elements or regions. The writing of the changed bit stream into the programmable logic module means, in particular, a description of the configuration memory of the programmable logic module, whereby only the frames or address areas of the configuration memory which contain one or more reconfigured or additional logic elements or connection elements are expediently described in a differential write. In this case, it may also be provided to describe a nonvolatile memory which is read out during initialization of the programmable logic module and determines the content of the configuration memory; Thus, the writing of the changed bit stream in the programmable logic device can be done indirectly.

Ein wichtiger Vorteil des erfindungsgemäßen Verfahrens liegt darin, dass kleine Änderungen an Logikfunktionen sehr schnell durchgeführt werden können, da nur die neu hinzugefügten Teile einer Logikfunktion platziert und geroutet werden müssen. Dies ermöglicht eine mit dem internen Bypassing vergleichbare Funktionalität auch für Steuergeräte, die einen FPGA umfassen. Somit kann eine Vielzahl von inkrementellen Änderungen mit geringem Zeitaufwand durchgeführt und getestet werden, was eine Beibehaltung des etablierten Workflows für den Regler-Entwurf gestattet. An important advantage of the method according to the invention is that small changes to logic functions can be carried out very quickly, since only the newly added parts of a logic function have to be placed and routed. This allows a functionality comparable to internal bypassing, even for ECUs, which include an FPGA. Thus, a variety of incremental changes can be made and tested in a timely manner, allowing retention of the established controller design workflow.

Indem der Hersteller der Ausgangskonfiguration neben dem ursprünglichen Bitstrom auch relevante Struktur- bzw. Zuordnungsinformationen bereitstellt, können Änderungen an Logikfunktionen vorgenommen werden, ohne dass die gesamte Logikbeschreibung der Konfiguration offengelegt werden muss. Einerseits kann der Hersteller somit den detaillierten Source-Code geheim halten und andererseits Schnittstellen bereitstellen, die dem Anwender eine schnelle Anpassung bewährter Logikfunktionen ermöglichen. By providing relevant structural or mapping information in addition to the original bitstream, the manufacturer of the output configuration can make changes to logic functions without having to disclose the entire logic description of the configuration. On the one hand, the manufacturer can thus keep the detailed source code secret and, on the other hand, provide interfaces that enable the user to rapidly adapt proven logic functions.

Weiterhin ist es vorteilhaft, dass keine vorab implementierten Partitionsschnittstellen bzw. „virtual sockets“ erforderlich sind; auch dadurch, dass keine Aufteilung in mehrere Partitionen mit entsprechenden Leerflächen erfolgt, können die vorhandenen Logik- und Verbindungselemente des FPGA-Bausteins effizient ausgenutzt werden. Furthermore, it is advantageous that no pre-implemented partition interfaces or "virtual sockets" are required; The fact that there is no division into several partitions with corresponding empty areas allows the existing logic and connection elements of the FPGA module to be used efficiently.

Ein weiterer Vorteil besteht darin, dass durch die Anpassung des Programmier-Bitstroms, der vorzugsweise in einem nichtflüchtigen Speicher hinterlegt ist, eine gewünschte Funktionalität nach einem Neustart des Steuergeräts ohne Verzögerung unmittelbar zur Verfügung steht. Der für die Initialisierung des programmierbaren Logikbausteins verwendete nichtflüchtige Speicher kann über einen Mikrocontroller oder einen entsprechend konfigurierten zusätzlichen Logikbaustein wie einen CPLD ausgelesen werden, die zweckmäßigerweise mit dem programmierbaren Logikbaustein auf einer Leiterplatte angeordnet bzw. in dem Steuergerät integriert sind; prinzipiell kann der programmierbare Logikbaustein auch einen nichtflüchtigen Speicher umfassen. A further advantage is that by adapting the programming bit stream, which is preferably stored in a non-volatile memory, a desired functionality is immediately available after a restart of the control unit without delay. The non-volatile memory used for the initialization of the programmable logic device can be read via a microcontroller or a correspondingly configured additional logic device such as a CPLD, which are expediently arranged with the programmable logic device on a printed circuit board or integrated in the control unit; In principle, the programmable logic module may also include a non-volatile memory.

Wenn in der Ausgangskonfiguration hinreichend viele freie Logikelemente verfügbar sind, kann es vorgesehen sein, nur die Verbindung von nicht mehr genutzten Logikelementen zu den Übergabepunkten zu entfernen und die geänderten Logikfunktionen ausschließlich mittels bereits anfangs ungenutzten Logikelementen zu realisieren. Auch in dem Fall, dass die Zuordnungsinformationen nur die Übergabepunkte und eine Liste der ursprünglich freien Logikelemente umfassen, ist somit ein Ändern der Konfiguration des programmierbaren Logikbausteins möglich. If a sufficient number of free logic elements are available in the initial configuration, it may be provided to remove only the connection of disused logic elements to the transfer points and to realize the changed logic functions exclusively by means of already unused logic elements. Even in the case where the allocation information includes only the transfer points and a list of the originally free logic elements, it is thus possible to change the configuration of the programmable logic device.

Gemäß einer bevorzugten Ausführungsform der Erfindung werden auch die Logikelemente der Ausgangskonfiguration, welche in der Zielkonfiguration nicht genutzt werden und deren Ausgänge nur mit einem oder mehreren Eingängen zumindest eines der Übergabepunkte verbunden sind, als frei markiert. Wenn also ein Ausgang eines Logikelements in der Ausgangskonfiguration mit einem Eingang eines Übergabepunkts verbunden ist bzw. war, aber der Eingang des Übergabepunkts in der Zielkonfiguration mit einem anderen Logikelement verbunden ist, so wird das Logikelement in der Zielkonfiguration nicht genutzt und kann als frei markiert werden. Vorzugsweise werden weiterhin die entsprechenden Verbindungselemente als nicht genutzt markiert. Die entsprechenden Verbindungselemente umfassen hierbei insbesondere schaltbare Verbindungselemente, die in der Ausgangskonfiguration den Ausgang des als frei markierten Logikelements mit einer oder mehreren Leiterbahnen verbinden und diese Leiterbahn/en mit einem oder mehreren Eingängen eines oder mehrerer Übergabepunkte verbinden, sowie zweckmäßigerweise diese in der Zielkonfiguration unverbundene/n Leiterbahn/en. Durch ein derartiges Freigeben bzw. Bereinigen von nicht mehr benutzten Logikelementen wird die freie Fläche bzw. die Anzahl der für die Rekonfiguration verfügbaren Logikelemente maximiert. Das Freigeben von Logik- und Verbindungselementen ist besonders dann vorteilhaft, wenn die Ausgangskonfiguration die Ressourcen des FPGA-Bausteins nahezu vollständig ausfüllt. According to a preferred embodiment of the invention, the logic elements of the output configuration, which are not used in the target configuration and whose outputs are connected only to one or more inputs of at least one of the transfer points, are marked as free. Thus, if an output of a logic element in the output configuration is connected to an input of a transfer point, but the input of the transfer point in the destination configuration is connected to another logic element, then the logic element in the destination configuration is not used and can be marked as free , Preferably, furthermore, the corresponding connection elements are marked as not used. In this case, the corresponding connection elements in particular comprise switchable connection elements which in the output configuration connect the output of the logic element marked as free with one or more interconnects and connect this interconnect to one or more inputs of one or more transfer points, and expediently unlink them in the target configuration. n trace / s. By releasing or cleaning up unused logic elements, the free area or the number of logic elements available for the reconfiguration is maximized. Releasing logic and interconnect elements is particularly advantageous when the output configuration almost completely fills the resources of the FPGA device.

In einer besonders bevorzugten Ausführungsform der Erfindung werden rekursiv alle Logikelemente, deren Ausgänge ausschließlich mit den Eingängen von in einem vorherigen Schritt als frei markierten Logikelementen verbunden sind, ebenfalls als frei markiert. Wenn der Ausgang eines Logikelements nur mit dem Eingang eines in einem vorherigen Schritt als frei markierten Logikelements verbunden ist, der Ausgabewert also verworfen würde, so wird das Logikelement nicht mehr genutzt und kann ebenfalls als frei markiert werden. Somit werden schrittweise alle nicht mehr benötigten Logikelemente und zweckmäßigerweise auch nicht mehr benötigte Verbindungselemente freigegeben. In a particularly preferred embodiment of the invention, all logic elements whose outputs are connected exclusively to the inputs of logic elements marked as free in a previous step recursively are also marked as free. If the output of a logic element is only connected to the input of a logic element marked as free in a previous step, ie the output value would be discarded, then the logic element is no longer used and can also be marked as free. Thus, all logic elements no longer needed and expediently no longer required connecting elements are released gradually.

Gemäß einer weiteren besonders bevorzugten Ausführungsform der Erfindung werden alle Logikelemente in einer vorgegebenen Region um ein oder mehrere ersetzte Logikelemente der Ausgangskonfiguration oder einen Eingang eines Übergabepunkts als frei markiert und die entsprechenden Verbindungselemente als ungenutzt markiert, wobei alle Logikelemente in der vorgegebenen Region mit Ausnahme des oder der ersetzten Logikelemente anschließend neu platziert und mit ungenutzten Verbindungselementen verbunden werden. Bei geeigneter Wahl der Region (z.B. anhand eines definierten Radius um den jeweiligen Übergabepunkt) kann somit auch eine Optimierung des Platzierens bzw. Routings stattfinden, wodurch bei nur geringer Zunahme der benötigten Entwurfszeit ein weitgehend optimales zeitliches Verhalten gewährleistet wird. According to a further particularly preferred embodiment of the invention, all logic elements in a given region are marked as free around one or more replaced logic elements of the initial configuration or an input of a transfer point and the corresponding connection elements marked as unused, all logic elements in the given region except the or then replaced the replaced logic elements and connected to unused fasteners. With a suitable choice of the region (for example based on a defined radius around the respective transfer point), an optimization of the placement or routing can thus also take place, whereby a largely optimal temporal behavior is ensured with only a small increase in the required design time.

In einer ganz besonders bevorzugten Ausführungsform der Erfindung werden die in der Ausgangskonfiguration verwendeten Verbindungselemente, welche an einem der Logikelemente in der vorgegebenen Region enden, zumindest bis zu dem nächsten verbundenen Logikelement außerhalb der vorgegebenen Region als ungenutzt markiert. Somit wird sichergestellt, dass in der vorgegebenen Region hinreichend Verbindungselemente für ein optimiertes Routing verfügbar sind. In a very particularly preferred embodiment of the invention, the connecting elements used in the initial configuration, which terminate at one of the logic elements in the predetermined region, are marked as unused at least as far as the next connected logic element outside the predetermined region. This ensures that sufficient connection elements for optimized routing are available in the given region.

Zweckmäßigerweise umfasst der Schritt des Einlesens einer Ausgangskonfiguration das Einlesen eines Bitstroms und eine zumindest für Teile des Bitstroms vorgenommene Konvertierung des Bitstroms in eine Logikbeschreibung. Die Konvertierung kann insbesondere anhand von Architekturinformationen des verwendeten programmierbaren Logikbausteins erfolgen, wobei also eine Beziehung zwischen Position im Bitstrom und Logikelement auf dem programmierbaren Logikbaustein anhand von Architekturinformationen des verwendeten programmierbaren Logikbausteins hergestellt wird. The step of reading in an output configuration expediently comprises reading in a bit stream and converting the bit stream at least for parts of the bit stream into a logic description. The conversion can in particular be based on architectural information of the programmable logic device used, so that a relationship between position in the bit stream and logic element is made on the programmable logic device based on architectural information of the programmable logic device used.

Es ist vorteilhaft, wenn der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem für die geänderten und somit zu rekonfigurierenden Logikelemente eine Beziehung zwischen Position im Bitstrom und Logikelement auf dem programmierbaren Logikbaustein hergestellt und der ursprüngliche Bitstrom an den entsprechenden Positionen geändert wird. Hierbei kann es vorgesehen sein, einen differentiellen Bitstrom zu erstellen, welcher nur die geänderten Logik- und Verbindungselemente beschreibt oder nur Adressbereiche umfasst, in denen mindestens ein geändertes Logikelement liegt. Wenn geeignete Architektur- bzw. Zuordnungsinformationen vorliegen, muss somit nur ein Minimum an Daten geschrieben werden. It is advantageous if the modified bit stream is created on the basis of the target configuration by establishing a relationship between position in the bit stream and logic element on the programmable logic module for the changed and thus to be reconfigured logic elements and the original bit stream is changed at the corresponding positions. In this case, it may be provided to create a differential bit stream which only describes the changed logic and connection elements or only comprises address areas in which at least one changed logic element is located. Thus, if proper architectural or mapping information is available, only a minimum of data needs to be written.

Alternativ ist es vorteilhaft, wenn der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem die platzierte Netzliste der Zielkonfiguration in einen neuen vollständigen Bitstrom übersetzt wird. Wenn eine platzierte Netzliste der gesamten Zielkonfiguration vorliegt, ist eine schnelle Erstellung des geänderten Bitstroms möglich. Alternatively, it is advantageous if the modified bitstream is created based on the target configuration by translating the placed netlist of the target configuration into a new complete bitstream. If there is a placed netlist of the entire target configuration, a fast creation of the changed bitstream is possible.

Bevorzugt wird für eine zu ändernde Logikfunktion, welche mindestens einen Signalpfad umfasst, zumindest nach der Änderung eine Signallaufzeit ermittelt. Vorzugsweise wird für einen Signalpfad in der Zielkonfiguration des programmierbaren Logikbausteins, in dessen Verlauf mindestens ein zusätzliches oder umkonfiguriertes Logikelement oder Verbindungselement vorkommt, eine Signallaufzeit geschätzt, indem die Anzahl sequentiell aufeinander folgender Logikelemente des Signalpfads in der Zielkonfiguration gezählt wird und jedem Logikelement eine konstante Signallaufzeit zugeordnet wird. Alternativ kann es auch vorgesehen sein, einen Signalpfad in der Zielkonfiguration des programmierbaren Logikbausteins, in dessen Verlauf mindestens ein zusätzliches oder umkonfiguriertes Logikelement vorkommt, mit dem entsprechenden Signalpfad in der Ausgangskonfiguration vergleichen, insbesondere indem die Anzahl sequentiell aufeinander folgender Logikelemente des Signalpfads in der Zielkonfiguration und die Anzahl sequentiell aufeinander folgender Logikelemente des entsprechenden Signalpfads in der Ausgangskonfiguration gezählt und verglichen wird und jedem Logikelement eine konstante Signallaufzeit zugeordnet wird. Auf diese Weise kann schnell und einfach festgestellt werden, ob die Zielkonfiguration voraussichtlich mit derselben Taktrate betrieben werden kann wie die Ausgangskonfiguration, oder ob eine Probleme in dem Zeitverhalten der Schaltung zu erwarten sind. Preferably, for a logic function to be changed, which comprises at least one signal path, a signal propagation time is determined at least after the change. Preferably, a signal transit time is estimated for a signal path in the target configuration of the programmable logic device in the course of which at least one additional or reconfigured logic element or connection element is counted by counting the number of sequentially consecutive logic elements of the signal path in the target configuration and assigning each logic element a constant signal transit time becomes. Alternatively, it can also be provided to compare a signal path in the target configuration of the programmable logic module, in the course of which at least one additional or reconfigured logic element occurs, with the corresponding signal path in the output configuration, in particular by the number of sequentially consecutive logic elements of the signal path in the target configuration and the number of sequentially sequential logic elements of the corresponding signal path is counted and compared in the output configuration and a constant signal transit time is assigned to each logic element. In this way, it can be quickly and easily determined whether the target configuration is expected to operate at the same clock rate as the initial configuration, or whether problems in the timing of the circuit are to be expected.

Besonders bevorzugt wird anstelle einer auf der Anzahl von Logikelementen im Signalpfad basierten Schätzung der Signallaufzeiten von Logikelementen die durch Architekturinformationen gegebenen minimalen und maximalen Signallaufzeiten ermittelt und für die weiteren Betrachtungen verwendet. Zweckmäßigerweise kann eine Summation von jeweils der minimalen und jeweils der maximalen Signallaufzeiten der einzelnen Logikelemente über einen Signalpfad erfolgen, und diese auf die Einhaltung von zeitlichen Anforderungen insbesondere der nachfolgenden Logikelemente überprüft werden. Particularly preferably, instead of an estimate of the signal propagation times of logic elements based on the number of logic elements in the signal path, the minimum and maximum signal propagation times given by architectural information are determined and used for the further considerations. Appropriately, a summation of each of the minimum and respectively the maximum signal propagation times of the individual logic elements via a signal path can be carried out, and these are checked for compliance with time requirements, in particular the subsequent logic elements.

Besonders bevorzugt wird für alle zu ändernden Logikfunktionen mindestens eine Signallaufzeit ermittelt und mit einem oder mehreren Schwellenwerten verglichen, der insbesondere zeitliche Anforderungen der auf die geänderte Logikfunktion folgenden Übergabepunkte beschreibt. Wenn die Änderung der geschätzten oder errechneten Verzögerung den Schwellenwert überschreitet, erfolgt eine Warnung und/oder eine Modifikation der platzierten Netzliste der Zielkonfiguration. Beispielsweise kann die Modifikation eine lokale Erhöhung des Takts und/oder ein Einfügen von Registern umfassen. Somit kann der Nutzer auf ein potentiell kritisches Zeitverhalten vorab hingewiesen werden und zweckmäßigerweise auch Maßnahmen ergriffen werden, um ein definiertes zeitliches Verhalten der Zielkonfiguration sicherzustellen. Particularly preferably, at least one signal transit time is determined for all logic functions to be changed and compared with one or more threshold values, which in particular describe time requirements of the transfer points following the changed logic function. If the change in the estimated or calculated delay exceeds the threshold, a warning and / or modification of the placed netlist of the target configuration occurs. For example, the modification may include a local increase of the clock and / or an insertion of registers. Thus, the user can be notified in advance of a potentially critical timing and measures are taken to ensure a defined temporal behavior of the target configuration.

Vorzugsweise umfasst die Zielkonfiguration mindestens einen ersten Multiplexer, der insbesondere direkt vor einem Übergabepunkt angeordnet ist, wobei alle hinzugefügten Logikelemente in neuen Signalpfaden angeordnet sind, die einen einzigen Eingang des ersten Multiplexers umfassen. Indem die Bypassfunktion mit einem ersten Eingang des Multiplexers verbunden wird und die bisherige Logikfunktion mit einem zweiten Eingang des Multiplexers verbunden wird, kann somit auch zur Laufzeit, also während die Zielkonfiguration ausgeführt wird, zwischen der Bypassfunktion und der ursprünglichen Funktion umgeschaltet werden. Hierbei kann ein freier Eingang eines vorhandenen Multiplexers genutzt werden oder der Multiplexer eingefügt werden. Preferably, the target configuration comprises at least a first multiplexer, in particular arranged directly in front of a transfer point, with all the added logic elements being arranged in new signal paths comprising a single input of the first multiplexer. By the bypass function is connected to a first input of the multiplexer and the previous logic function is connected to a second input of the multiplexer, thus at runtime, ie while the target configuration is being executed, switching between the bypass function and the original function is made. In this case, a free input of an existing multiplexer can be used or the multiplexer can be inserted.

Insbesondere umfassen die neuen Signalpfade mindestens ein Schnittstellen-Pin des programmierbaren Logikbausteins, wobei der mindestens eine Schnittstellen-Pin vorzugsweise einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. Der Schnittstellen-Pin muss dabei nicht exklusiv für den neuen Signalpfad genutzt werden, sondern kann auch weitere Funktionalitäten bereitstellen. Vorzugsweise wird ein Protokoll definiert, so dass die für den Signalpfad erforderlichen Daten über den Schnittstellen-Pin getunnelt werden. Insofern muss es sich bei diesem Schnittstellen-Pin nicht um einen physikalisch vorhandenen Pin handeln, sondern es kann sich auch um eine Schnittstelle bzw. einen Datenkanal handeln, der zweckmäßigerweise unter Nutzung der Debug-Schnittstelle aufgebaut wird. Sofern noch mindestens ein Schnittstellen-Pin des FPGA-Bausteins unbelegt ist bzw. in der Funktionalität ergänzt werden kann, kann also ein externes Bypassing stattfinden oder auch ein Multiplexer zum Umschalten zwischen verschiedenen internen Logikfunktionen von außen angesteuert werden. Die einer Debugging-Schnittstelle zugeordneten Schnittstellen-Pins sind selten mit anderen Funktionen belegt und somit häufig verfügbar. Falls ein oder mehrere andere Schnittstellen-Pins noch unbelegt sind, kann prinzipiell auch eine höhere Datenrate beim externen Bypassing gewährleistet werden, indem diese Schnittstellen-Pins für eine Übertragung nach einem geeigneten Protokoll wie z.B. LVDS verwendet werden. In particular, the new signal paths comprise at least one interface pin of the programmable logic module, wherein the at least one interface pin is preferably assigned to a debugging interface of the programmable logic module. The interface pin does not have to be used exclusively for the new signal path, but can also provide additional functionalities. Preferably, a protocol is defined so that the data required for the signal path is tunneled through the interface pin. In this respect, this interface pin does not have to be a physically present pin, but may also be an interface or a data channel, which is expediently set up using the debug interface. If at least one interface pin of the FPGA module is unoccupied or can be supplemented in functionality, an external bypassing can therefore take place or else a multiplexer for switching between different internal logic functions can be controlled externally. The interface pins associated with a debugging interface are rarely populated with other functions and thus often available. In principle, if one or more other interface pins are still unoccupied, a higher data rate can also be ensured in the case of external bypassing by transmitting these interface pins for transmission according to a suitable protocol, such as e.g. LVDS can be used.

Es ist vorteilhaft, wenn die Zielkonfiguration mindestens einen zweiten Multiplexer umfasst, der insbesondere direkt hinter einem Übergabepunkt angeordnet ist, wobei der zweite Multiplexer mit mindestens einem Eingang eines Logikelements verbunden ist. Dies ermöglicht es, die Eingabesignale einer Funktion zu ändern, wobei ggfs. die ursprüngliche Funktion mit dem geänderten Eingabesignal weiterverwendet werden kann. It is advantageous if the target configuration comprises at least one second multiplexer, which in particular is arranged directly behind a transfer point, wherein the second multiplexer is connected to at least one input of a logic element. This makes it possible to change the input signals of a function, where necessary, the original function can be used with the changed input signal.

Bevorzugt umfasst die Zielkonfiguration mindestens ein hinzugefügtes Register, wobei der Ausgang des Registers vorzugsweise mit einem Schnittstellen-Pin verbunden ist, welcher insbesondere einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. Indem das Register in einem Signalpfad angeordnet wird, kann das entsprechende Signal auch von einem RCP-System erfasst und ausgewertet werden, welches mit der Debugging-Schnittstelle verbunden ist. Preferably, the target configuration comprises at least one added register, wherein the output of the register is preferably connected to an interface pin, which is assigned in particular to a debugging interface of the programmable logic module. By placing the register in a signal path, the corresponding signal can also be detected and evaluated by an RCP system which is connected to the debugging interface.

Die Erfindung betrifft ferner ein Verfahren zum Anpassen eines Steuergeräts, welches einen zur Ausführung einer Regelfunktion eingerichteten programmierbaren Logikbaustein umfasst, bei dem der programmierbare Logikbaustein durch ein erfindungsgemäßes Verfahren rekonfiguriert wird. Durch die Nutzung eines erfindungsgemäßen Verfahrens können somit auch einen FPGA umfassende Steuergeräte schnell und einfach angepasst werden, so dass eine iterative Entwicklung der neuen Regelfunktion möglich ist. Mit dem Begriff Regelfunktion sind hier zweckmäßigerweise alle von dem Steuergerät bzw. dem programmierbaren Logikbaustein bereitgestellten Funktionen gemeint, insbesondere auch eine Ansteuerung eines Aktuators ohne geschlossene Regelschleife. The invention further relates to a method for adapting a control device, which comprises a programmable logic device set up to execute a control function, in which the programmable logic device is reconfigured by a method according to the invention. By using a method according to the invention, it is therefore also possible for control devices comprising FPGAs to be adapted quickly and easily, so that an iterative development of the new control function is possible. By the term control function, all functions provided by the control unit or the programmable logic module are expediently meant, in particular a control of an actuator without a closed control loop.

Zweckmäßigerweise erfolgt zumindest der Schritt des Schreibens eines geänderten Bitstroms in den programmierbaren Logikbaustein bei der Initialisierung des programmierbaren Logikbausteins, und wird insbesondere von einem Mikroprozessor durchgeführt. Somit ist die angepasste Logikfunktion bzw. die Bypassfunktion direkt zum Startzeitpunkt des FPGAs bzw. des den FPGA umfassenden Steuergeräts verfügbar. Appropriately, at least the step of writing a changed bit stream into the programmable logic device takes place during the initialization of the programmable logic device, and is carried out in particular by a microprocessor. Thus, the adapted logic function or the bypass function is available directly at the start time of the FPGA or the FPGA comprehensive control unit.

Außerdem betrifft die Erfindung eine Programmiervorrichtung zum Beschreiben eines programmierbaren Logikbausteins, umfassend einen Prozessor, eine Programmierschnittstelle und/oder eine Debugging-Schnittstelle, wobei die Vorrichtung dazu eingerichtet ist, ein erfindungsgemäßes Verfahren durchzuführen. Moreover, the invention relates to a programming device for writing a programmable logic device, comprising a processor, a programming interface and / or a debugging interface, wherein the device is adapted to perform a method according to the invention.

Die Erfindung betrifft weiterhin ein Computerprogrammprodukt mit einem computerlesbaren Speichermedium, auf dem Befehle eingebettet sind, die, wenn sie von einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit dazu eingerichtet ist, ein erfindungsgemäßes Verfahren auszuführen. The invention further relates to a computer program product with a computer-readable storage medium, on which instructions are embedded, which, when executed by a computing unit, cause the arithmetic unit to be configured to carry out a method according to the invention.

Die Erfindung wird nachfolgend unter Bezugnahme auf die Zeichnungen näher erläutert. Hierbei werden gleichartige Teile mit identischen Bezeichnungen beschriftet. Die dargestellten Ausführungsformen sind stark schematisiert, d.h. die Abstände und die lateralen und die vertikalen Abmessungen sind nicht maßstäblich und weisen, sofern nicht anders angegeben auch keine ableitbaren geometrischen Relationen zueinander auf. The invention will be explained in more detail with reference to the drawings. Here similar parts are labeled with identical names. The illustrated embodiments are highly schematic, i. the distances and the lateral and vertical dimensions are not to scale and, unless otherwise indicated, have no derivable geometrical relations to one another.

Darin zeigt: It shows:

1 einen schematischen Ablaufplan eines ersten bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens, 1 a schematic flowchart of a first preferred embodiment of a method according to the invention,

2a eine schematische Darstellung einer geänderten Konfiguration eines programmierbaren Logikbausteins, 2a a schematic representation of a modified configuration of a programmable logic device,

2b einen schematische Darstellung einer zweiten bevorzugten Ausführungsform einer erfindungsgemäßen Verfahrens, 2 B a schematic representation of a second preferred embodiment of a method according to the invention,

3 eine schematische Ansicht auf einen programmierbaren Logikbaustein, der mit einem erfindungsgemäßen Verfahren rekonfiguriert werden kann, und 3 a schematic view of a programmable logic device that can be reconfigured with a method according to the invention, and

4 eine schematische Ansicht eines Steuergeräts mit einem programmierbaren Logikbaustein und eine erfindungsgemäße Programmiervorrichtung. 4 a schematic view of a control device with a programmable logic device and a programming device according to the invention.

Ein FPGA-Baustein umfasst eine Vielzahl von Logikelementen und Verbindungselementen sowie eine Taktversorgung, welche mehrere Taktregionen umfassen kann. Die Logikelemente umfassen beispielsweise Register, Wahrheitstabellen (auch als Lookup-Table bzw. LUT bekannt), Addierer, Schalter und Verzögerungseinheiten. Auch Frequenzgeneratoren können vorhanden sein. Je nach Granularität des FPGA-Bausteins können auch mehrere dieser Elemente zu einer Elementar-Einheit zusammengefasst sein. Die Verbindungselemente umfassen zweckmäßigerweise Leiterbahnen unterschiedlicher Länge, welche z.B. auch Regionen des FPGA überspannen können, und schaltbare Verbindungen zwischen den Leiterbahnen und Logikelementen. Nach dem Einschalten der Spannungsversorgung wird der FPGA mit einem Bitstrom initialisiert, der zweckmäßigerweise für jedes Logikelement mindestens ein Bit enthält; dies ermöglicht eine für die jeweilige Anwendung maßgeschneiderte Logikschaltung auf einem Standard-Baustein. Unter einem Bit für die Konfiguration eines Logikelements kann hierbei auch ein Schalter verstanden werden, der das Logikelement mit einem Signal verbindet. In diesem Sinne können auch einem UND-Gatter ein oder mehrere Konfigurations-Bits zugeordnet werden. An FPGA device comprises a multiplicity of logic elements and connecting elements as well as a clock supply, which can comprise a plurality of clock regions. The logic elements include, for example, registers, truth tables (also known as lookup tables or LUTs), adders, switches and delay units. Frequency generators can also be present. Depending on the granularity of the FPGA module, several of these elements may also be combined into one elementary unit. The connecting elements suitably comprise conductor tracks of different lengths, which are e.g. can also span regions of the FPGA, and switchable connections between the tracks and logic elements. After turning on the power supply, the FPGA is initialized with a bit stream which expediently contains at least one bit for each logic element; this enables a custom-tailored logic circuit on a standard device. In this case, a bit for the configuration of a logic element can also be understood to mean a switch which connects the logic element to a signal. In this sense, one or more configuration bits can also be assigned to an AND gate.

Die Abbildung der 1 zeigt einen schematischen Ablaufplan einer ersten bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens. The picture of the 1 shows a schematic flowchart of a first preferred embodiment of a method according to the invention.

In Schritt S1 (Einlesen) erfolgt ein Einlesen der Ausgangskonfiguration, wobei als Eingangsdaten der ursprüngliche Bitstrom (Bitstrom 1) und Informationen (Info) über die Architektur des verwendeten FPGA-Bausteins und die Ausgangskonfiguration empfangen werden. Das Einlesen kann ein Konvertieren des Bitstroms in eine Logikbeschreibung bzw. platzierte Netzliste der Ursprungskonfiguration umfassen. Alternativ kann es auch vorgesehen sein, als Eingangsdaten neben dem Bitstrom auch eine Logikbeschreibung zumindest von Teilen der Ausgangskonfiguration sowie Informationen über mögliche Eingangssignale und mögliche Übergabepunkte der Ausgangskonfiguration zum empfangen. Dann kann auf ein Konvertieren des Bitstroms verzichtet werden. In step S1 (read in), the output configuration is read in, the input data being the original bit stream (bit stream 1) and information (info) about the architecture of the FPGA block used and the output configuration being received. The reading may include converting the bitstream into a logic description or placed netlist of the source configuration. Alternatively, it can also be provided to receive as input data in addition to the bit stream also a logic description of at least parts of the output configuration as well as information about possible input signals and possible transfer points of the output configuration. Then can be dispensed with a conversion of the bitstream.

Die in der Zielkonfiguration gewünschten Änderungen werden in Schritt S2 (Ändern) vorzugsweise auf einer höheren Abstraktionsebene wie der Logikbeschreibung bzw. einer unplatzierten Netzliste vorgenommen. Prinzipiell könnte auch eine Hardwarebeschreibungs-Sprache wie VHDL zur Angabe der Zielkonfiguration bzw. der gewünschten Änderungen eingesetzt werden. The changes desired in the target configuration are preferably made on a higher level of abstraction, such as the logic description or an unplaced netlist, in step S2 (change). In principle, a hardware description language such as VHDL could also be used to specify the target configuration or the desired changes.

Beispielsweise kann der Nutzer neue Eingangssignale wählen und eine angepasste Logikfunktion an dem jeweiligen Übergabepunkt anlegen. Diese Änderung der Konfiguration kann auch interaktiv in einem Programm vorgenommen werden, dass auf einem an den FPGA-Baustein bzw. an das Steuergerät angeschlossenen Standard-PC und/oder einem speziellen Programmiergerät ausgeführt; auch ein Standard-PC mit extern angeschlossener Debugging-Schnittstelle, die mit einem FPGA verbindbar ist, soll unter der Bezeichnung Programmiervorrichtung verstanden werden können. For example, the user can select new input signals and create an adapted logic function at the respective transfer point. This configuration change can also be made interactively in a program executed on a standard PC and / or a special programming device connected to the FPGA module or to the controller; Even a standard PC with externally connected debugging interface, which can be connected to an FPGA, should be understood by the term programming device.

Ein derartiges Programm, im Folgenden FPGA-Manager genannt, könnte z.B. die Zuordnungsinformationen des Konfigurationsherstellers, zweckmäßigerweise Architekturinformationen des verwendeten FPGA-Bausteins sowie zumindest eine Logikbeschreibung, insbesondere eine platzierte Netzliste, und/oder einen Bitstrom der Ausgangskonfiguration einlesen. Es ist vorteilhaft, wenn der FPGA-Manager dazu eingerichtet ist, die Ausgangskonfiguration zumindest teilweise in einer höheren Abstraktionsebene, wie einer Logikbeschreibung einer unplatzierten Netzliste oder einem Blockdiagramm darzustellen. Dann kann der Nutzer eine oder mehrere Elementareinheiten der jeweiligen Abstraktionsebene selektieren und anpassen. Zweckmäßigerweise ist auch das Löschen oder Einfügen von Elementareinheiten vorgesehen. Die Elementareinheiten können eine oder mehrere Logikeinheiten des FPGA-Bausteins umfassen. Beispielsweise kann auch eine häufig verwendete Funktionalität aus einer Mehrzahl von Logikeinheiten des FPGA als eine Elementareinheit vordefiniert werden. Vorzugsweise kann der Nutzer weiterhin vordefinierte Übergabepunkte und/oder Schnittstellen-Pins des FPGA selektieren, um diesen die Signale der geänderten Logikfunktionen zuzuführen. Auch eine Überprüfung vorgegebener Bedingungen kann vorgesehen sein, wobei insbesondere ein gesondertes Signal über eine Debugging-Schnittstelle ausgegeben werden kann, wenn die vorgegebenen Bedingungen nicht erfüllt sind. Somit kann eine fehlerhaft definierte Logikfunktion oder ungültige Eingabedaten schnell erkannt werden. Such a program, hereafter referred to as FPGA manager, could be e.g. the assignment information of the configuration manufacturer, expediently architectural information of the FPGA module used and at least one logic description, in particular a placed netlist, and / or read a bit stream of the output configuration. It is advantageous if the FPGA manager is set up to present the output configuration at least partially in a higher level of abstraction, such as a logic description of an unplaced netlist or a block diagram. Then the user can select and adapt one or more elementary units of the respective abstraction level. Expediently, the deletion or insertion of elementary units is provided. The elementary units may include one or more logic units of the FPGA device. For example, a frequently used functionality can be predefined from a plurality of logic units of the FPGA as an elementary unit. Preferably, the user can continue to select predefined transfer points and / or interface pins of the FPGA to supply the signals of the changed logic functions. Also, a check of predetermined conditions may be provided, in particular, a separate signal can be output via a debugging interface, if the predetermined conditions are not met. Thus, an erroneously defined logic function or invalid input data can be quickly recognized.

In Schritt S3 (Bereinigen) werden zweckmäßigerweise nicht mehr genutzte Logikelemente aus der Ausgangskonfiguration entfernt, um eine größere Anzahl von freien Logikelementen zur Realisierung der geänderten Logikfunktionen verfügbar zu machen. In step S3 (purge), unused logic elements are expediently removed from the output configuration in order to make available a larger number of free logic elements for realizing the changed logic functions.

Der FPGA Manager kann hierbei auch vorsehen, die nicht mehr genutzten Logikelemente anhand der gelöschten Elementareinheiten zu ermitteln. The FPGA Manager can also provide for determining the disused logic elements based on the deleted elementary units.

Auf die freien Logikelemente werden in Schritt S4 (Platzieren) die in der Zielkonfiguration hinzugekommenen Logikfunktionen bzw. Logikelemente platziert. Anschließend werden die Verbindungselemente konfiguriert, um die gewünschten Signalpfade zu erhalten. Somit liegt die Zielkonfiguration als platzierte Netzliste vor. Im Rahmen des Platzierens und des Verbinden der Logikfunktionen bzw. Logikelemente werden dabei zweckmäßigerweise Anforderungen bezüglich des Timings wie z.B. das Einhalten geforderter Signallaufzeiten zum Erreichen von vorgegebenen Taktfrequenzen berücksichtigt. In step S4 (placement), the logic functions or logic elements added in the target configuration are placed on the free logic elements. Then, the connectors are configured to obtain the desired signal paths. Thus, the destination configuration exists as a placed netlist. In the context of placing and connecting the logic functions or logic elements thereby expediently timing requirements such. observing the required signal propagation delays to achieve predetermined clock frequencies.

Der FPGA Manager kann hierbei auch vorsehen, hinzugekommene Logikelemente anhand der hinzugefügten Elementareinheiten zu ermitteln. The FPGA Manager may also provide for determining added logic elements based on the added elementary units.

In Schritt S5 (Konvertieren) wird die platzierte Netzliste in einen geänderten Bitstrom konvertiert, der somit als Ausgabedaten (Bitstrom 2) zur Verfügung steht. In step S5 (convert), the placed netlist is converted into a changed bitstream, which is thus available as output data (bitstream 2).

Besonders wenn die Logikbeschreibung der Ausgangskonfiguration nur teilweise vorhanden ist, kann die Konvertierung auch darin bestehen, für hinzugekommene Logikeinheiten und/oder Verbindungseinheiten geeignete Mikrobitströme zu generieren und diese zum ursprünglichen Bitstrom zu addieren, um den geänderten Bitstrom zu erhalten. Especially if the logic description of the output configuration is only partially available, the conversion may also be to generate appropriate micro bitstreams for added logic units and / or connection units and to add them to the original bitstream to obtain the changed bitstream.

Der FPGA-Baustein wird in Schritt S6 (Schreiben) mit dem geänderten Bitstrom beschrieben und somit rekonfiguriert. Da ein zeitraubendes Platzieren und Routen nur für die wenigen geänderten Logikelemente erfolgte, kann diese Rekonfiguration schnell erfolgen und ist prinzipiell auch ohne eine Kenntnis der vollständigen Netzliste möglich. The FPGA block is written in step S6 (Write) with the changed bit stream and thus reconfigured. Since a time-consuming placement and routing was done only for the few changed logic elements, this reconfiguration can be done quickly and is in principle possible without a knowledge of the complete network list.

In der Abbildung der 2a ist eine geänderte Konfiguration eines programmierbaren Logikbausteins schematisch dargestellt. In the picture of the 2a a modified configuration of a programmable logic device is shown schematically.

Die Konfiguration 201 umfasst zwei Übergabepunkte 202 und 203, welche Eingangssignale a und b bereitstellen, sowie einen Übergabepunkt 204, an den das Funktionsergebnis y angelegt wird. Die Übergabepunkte werden vorzugsweise vom Nutzer mittels des FPGA-Managers festgelegt oder können anhand einer vom Hersteller der ursprünglichen Konfiguration bereitgestellten Liste möglicher Übergabepunkte manuell oder automatisch ausgewählt werden. The configuration 201 includes two transfer points 202 and 203 , which provide input signals a and b, as well as a transfer point 204 to which the function result y is applied. The handover points are preferably determined by the user by means of the FPGA manager or can be manually or automatically selected based on a list of possible handover points provided by the manufacturer of the original configuration.

Schematisch ist dargestellt, dass der von der ursprünglichen Logikfunktion f eingenommene Bereich 205 freigegeben wurde, und dass die hinzugefügte Logikfunktion y = g(a, b) in einem Bereich 206 unter Verwendung freier bzw. ungenutzter Logik- und Verbindungselemente implementiert ist, so dass der Außenbereich der Konfiguration 201 von der Änderung unberührt bleibt. Schematically, it is shown that the area occupied by the original logic function f 205 has been released, and that the added logic function y = g (a, b) in one area 206 is implemented using free or unused logic and connectors, so that the exterior of the configuration 201 remains unaffected by the change.

Die Abbildung der 2b zeigt eine schematische Darstellung einer zweiten bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens. The picture of the 2 B shows a schematic representation of a second preferred embodiment of a method according to the invention.

Zu Beginn des Verfahrens werden die ursprüngliche Konfiguration 210 des FPGA und Zuordnungsinformationen 211 eingelesen. Die Ausgangskonfiguration in FPGA Bitstrom 1 umfasst eine Logikfunktion y = f(a, b), welche ersetzt werden soll. Als Info hierzu sind die zwei Übergabepunkte angegeben, an denen die Eingangssignale a und b anliegen, sowie der Übergabepunkt, an dem der Funktionswert y angelegt werden soll. Abhängig von dem verwendeten FPGA-Baustein kann Bitstrom 210 einerseits eine feste Zuordnung zwischen Position und Logikelement aufweisen oder andererseits eine Liste von Adresse/Konfigurations-Paaren umfassen. Somit kann prinzipiell ausgehend von einer Start-Adresse ein ganzer Adressbereich (oder der ganze FPGA) neu geschrieben werden, oder die Logikelemente einzeln umkonfiguriert werden. At the beginning of the procedure will be the original configuration 210 of the FPGA and mapping information 211 read. The output configuration in FPGA Bitstream 1 includes a logic function y = f (a, b), which should be replaced. As information about this, the two transfer points are indicated, on which the input signals a and b are applied, as well as the transfer point at which the function value y is to be applied. Depending on the FPGA chip used, bitstream 210 on the one hand have a fixed assignment between position and logic element or on the other hand comprise a list of address / configuration pairs. Thus, in principle starting from a start address, an entire address range (or the entire FPGA) can be rewritten, or the logic elements can be individually reconfigured.

In Schritt 212 erfolgt das Konvertieren des Bitstroms 210 in eine platzierte Netzliste 213. Die platzierte Netzliste 213 wird unter Verwendung von den angegebenen Übergabepunkten und zweckmäßigerweise Architekturinformationen des FPGAs in Schritt 214 analysiert, woraufhin in Schritt 215 ein Bereinigen stattfindet, bei dem nicht verwendete Logik- und Verschaltungselemente als frei bzw. ungenutzt markiert werden. Die bereinigte FPGA Netzliste 216 weist somit freie Logikelemente bzw. Bereich auf, welche für die Realisierung der neuen Funktion verwendet werden können. In step 212 the bitstream is converted 210 in a placed netlist 213 , The placed netlist 213 is done using the specified transfer points and expediently architectural information of the FPGA in step 214 analyzed, whereupon in step 215 a cleanup takes place in which unused logic and interconnect elements are marked as free or unused. The adjusted FPGA netlist 216 thus has free logic elements or area, which can be used for the realization of the new function.

Die neue Logikfunktion 217, welche insbesondere mittels eine Blockdiagramms beschrieben werden kann, basiert vorzugsweise auf denselben Eingabesignalen a, b wie die Ursprungsfunktion und gibt einen geänderten Wert y = g(a, b) aus. In Schritt 218 erfolgt daher eine Synthese der geänderten Logikfunktion, d.h. die Logikbeschreibung der Teilfunktion wird in eine unplatzierte Teil-Netzliste 219 konvertiert. The new logic function 217 , which can be described in particular by means of a block diagram, is preferably based on the same input signals a, b as the original function and outputs a changed value y = g (a, b). In step 218 Therefore, a synthesis of the changed logic function, that is, the logic description of the subfunction is in an unplaced part netlist 219 converted.

Ausgehend von den Informationen 211 über die Übergabepunkte, wird in Schritt 220 ein Einfügen der Teil-Netzliste 219 in die bereinigte FPGA-Netzliste 216 vorgenommen, so dass eine die vollständige Konfiguration beschreibende Netzliste 221 entsteht. Based on the information 211 over the transfer points, will step in 220 an insertion the part netlist 219 into the adjusted FPGA netlist 216 so that a netlist describing the complete configuration is made 221 arises.

Die noch unplatzierten neuen Logikfunktion 217 wird in Schritt 222 auf die freien Logikelemente platziert und diese mit ungenutzten Verbindungselementen geroutet. In Schritt 223 erfolgt ein Konvertieren der vollständigen Netzliste in einen neuen Bitstrom 224. Somit liegt ein die Zielkonfiguration beschreibender vollständiger FPGA Bitstrom 2 vor, der direkt oder indirekt in einen programmierbaren Logikbaustein geschrieben werden kann. The still unplaced new logic function 217 will be in step 222 placed on the free logic elements and routed with unused connectors. In step 223 the complete netlist is converted into a new bit stream 224 , Thus, there is a complete FPGA bitstream 2 describing the target configuration, which can be written directly or indirectly into a programmable logic device.

In der Abbildung der 3 ist ein programmierbarer Logikbaustein 1 schematisch dargestellt. Über Schnittstellen-Pins 2, 3, 4, 5, 6, 7 werden dem FPGA 1 Eingangssignale zugeführt. Die dargestellte Beispielkonfiguration weist mehrere vereinfacht dargestellte Funktionsblöcke auf, die prinzipiell aus einer Reihe elementarer Logikeinheiten wie Wahrheitstabellen und Flip-Flops aufgebaut sind. Die an den Schnittstellen-Pins 2, 3, 4 anliegenden Eingangssignale werden beispielsweise Funktionsblock 8 zugeführt, der eine erste Logikfunktion berechnet. Entsprechend werden die an den Schnittstellen-Pins 5, 6, 7 anliegenden Eingangssignale Funktionsblock 9 zugeführt, der eine zweite Logikfunktion berechnet. Die Signale der Funktionsblöcke 8 und 9 werden einem weiteren Funktionsblock 10 zugeführt, der eine dritte Logikfunktion berechnet. Über Multiplexer 11 kann das Funktionsergebnis der dritten Logikfunktion einem Schnittstellen-Pin 12 des programmierbaren Logikbausteins 1 zugeführt werden und wird somit als Ausgangssignal ausgegeben. Als gestrichelte Linie ist ein beispielgemäßer Signalpfad 16 dargestellt. Die gezeigte Logikfunktion, deren Ausgangssignal an Schnittstellen-Pin 12 ausgegeben wird, umfasst somit 6 Signalpfade, die jeweils an einem der Schnittstellen-Pins 2, 3, 4, 5, 6, 7 beginnen. In the picture of the 3 is a programmable logic device 1 shown schematically. Via interface pins 2 . 3 . 4 . 5 . 6 . 7 The FPGA receives 1 input signal. The illustrated example configuration has a plurality of function blocks, which are shown in simplified form and which are basically constructed from a series of elementary logic units such as truth tables and flip-flops. The at the interface pins 2 . 3 . 4 adjacent input signals, for example, function block 8th supplied, which calculates a first logic function. Accordingly, those at the interface pins 5 . 6 . 7 applied input signals function block 9 supplied, which calculates a second logic function. The signals of the function blocks 8th and 9 become another functional block 10 supplied, which calculates a third logic function. Via multiplexer 11 the function result of the third logic function can be an interface pin 12 of the programmable logic device 1 be supplied and is thus output as an output signal. As a dashed line is an exemplary signal path 16 shown. The logic function shown, whose output signal is at the interface pin 12 is output, thus includes 6 Signal paths, each at one of the interface pins 2 . 3 . 4 . 5 . 6 . 7 kick off.

Indem einer der Funktionsblöcke 8, 9 oder 10 geändert oder ersetzt wird, kann die ausgegebene Logikfunktion modifiziert werden. Alternativ zu einem vollständigen Austausch der ursprünglichen Logikfunktion kann auch ein Umschalten ermöglicht werden, indem die ursprüngliche Logikfunktion beibehalten und eine geänderte Logikfunktion in der Konfiguration integriert wird, sowie am Ausgang des entsprechenden Funktionsblocks ein Multiplexer angeordnet wird. Darüber hinaus kann auch eine Vorverarbeitung der Eingabesignale einer Logikfunktion eingefügt werden. Insbesondere ist es möglich, eine zusätzliche Logikfunktion zu integrieren, die einen Wahrheitswert zur Gültigkeit der Eingabesignale in Abhängigkeit von einer oder mehreren Bedingungen ausgibt. Auch ein Einfügen zusätzlicher Register zum Beibehalten konsistenter Daten kann erfolgen. Wenn der FPGA 1 in einem Steuergerät eingesetzt wird, kann somit ein internes Bypassing vorgenommen werden. By one of the functional blocks 8th . 9 or 10 changed or replaced, the output logic function can be modified. As an alternative to a complete replacement of the original logic function, switching can also be enabled by maintaining the original logic function and integrating a modified logic function in the configuration, and by arranging a multiplexer at the output of the corresponding function block. In addition, a preprocessing of the input signals of a logic function can be inserted. In particular, it is possible to integrate an additional logic function that outputs a truth value on the validity of the input signals in response to one or more conditions. Also, inserting additional registers to maintain consistent data can be done. If the FPGA 1 is used in a control unit, then an internal bypassing can be made.

Indem ein weiterer Eingang des benachbart zu Ausgangspin 12 angeordneten Multiplexers 11 mit einem über einen weiteren Schnittstellen-Pin 14 verbunden wird, kann auch ein externes Signal an Schnittstellen-Pin 12 ausgegeben werden. Zur Vermeidung von Synchronisationsproblemen ist es zweckmäßig, wenn das Signal von Schnittstellen-Pin 14 einem Register 15 zugeführt wird, so dass immer ein definiertes Signal an Multiplexer 11 anliegt. Über Schnittstellen-Pin 13 kann der gewünschte Eingang von Multiplexer 11 selektiert und somit das in Signalpfad 16 angeordnete Ausgangssignal geändert werden. Es ist vorteilhaft, wenn die Schnittstellen-Pins 14 und 13 einer Debugging-Schnittstelle wie JTAG zugeordnet sind, da diese Pins im Allgemeinen nicht belegt sind und/oder über diese Debugging-Schnittstelle, zweckmäßigerweise unter Erweiterung der vorhandene Debugging-Funktions-Protokolle, Signale in den FPGA hinein- oder heraus übertragen werden können. Wird der FPGA 1 in einem Steuergerät eingesetzt, dann ist somit auch ein externes Bypassing möglich. By adding another input of the adjacent pin to the output pin 12 arranged multiplexer 11 with one via another interface pin 14 can also connect an external signal to interface pin 12 be issued. To avoid synchronization problems, it is useful if the signal from interface pin 14 a register 15 is fed, so that always a defined signal to multiplexer 11 is applied. Via interface pin 13 can be the desired input from multiplexer 11 selected and thus in the signal path 16 arranged output signal to be changed. It is advantageous if the interface pins 14 and 13 are associated with a debugging interface such as JTAG, since these pins are generally not occupied and / or via this debugging interface, expediently by extending the existing debugging function protocols, signals in or out of the FPGA can be transmitted. If the FPGA 1 is used in a control unit, then an external bypassing is also possible.

Die Abbildung der 4 zeigt eine schematische Ansicht eines Steuergeräts 30 mit einem programmierbaren Logikbaustein 33 und eine erfindungsgemäße Programmiervorrichtung 40. The picture of the 4 shows a schematic view of a controller 30 with a programmable logic device 33 and a programming device according to the invention 40 ,

Steuergerät 30 umfasst einen Mikrocontroller 31, der mit einem nichtflüchtigen Speicher 32, insbesondere einem Flash-Speicher, und mit dem FPGA 33 verbunden ist. Mikrocontroller 31 kann auch noch mit einem oder mehreren nicht gezeigten Schnittstellen, insbesondere für einen Fahrzeugdatenbus, und/oder weiterer Peripherie verbunden sein. control unit 30 includes a microcontroller 31 that with a non-volatile memory 32 , especially a flash memory, and with the FPGA 33 connected is. microcontroller 31 may also be connected to one or more interfaces, not shown, in particular for a vehicle data bus, and / or other peripherals.

Der programmierbare Logikbaustein 33 stellt vorzugsweise eine Regelfunktion bereit und ist in dem gezeigten Beispiel mit einem Sensor 37 und einer Ansteuerschaltung 35 verbunden, die einen Aktor 36 ansteuert. Weiterhin weist FPGA eine Programmier- und/oder Debugging-Schnittstelle 34 auf. The programmable logic device 33 preferably provides a control function and is in the example shown with a sensor 37 and a drive circuit 35 connected to an actor 36 controls. Furthermore, FPGA has a programming and / or debugging interface 34 on.

Normalerweise ist Programmierschnittstelle 34 nicht verbunden, und das Steuergerät stellt eine oder mehrere Regelfunktionen bereit; beispielsweise kann Aktor 36 ein bürstenloser Elektromotor sein, dessen Drehzahl und/oder abgegebenes Drehmoment von dem programmierbaren Logikbaustein 33 geregelt wird. Usually is programming interface 34 not connected, and the controller provides one or more control functions; For example, actor 36 a brushless electric motor whose speed and / or output torque from the programmable logic device 33 is regulated.

Programmiervorrichtung 40 umfasst einen Mikrocontroller 41, der mit einem nichtflüchtigen Speicher 42, insbesondere einem Flash-Speicher und einer Programmier- und/oder Debugging-Schnittstelle 44 verbunden ist. programmer 40 includes a microcontroller 41 that with a non-volatile memory 42 , in particular a flash memory and a programming and / or debugging interface 44 connected is.

Über gestrichelt dargestellte Verbindungsleitungen 43 kann die Programmiervorrichtung 40 mit dem Steuergerät 30 bzw. dem darauf angeordneten FPGA 33 verbunden werden. Indem der programmierbare Logikbaustein 33 umkonfiguriert wird, kann daher die Regelfunktion mit geringem Aufwand angepasst werden. About dashed lines shown connecting lines 43 can the programming device 40 with the control unit 30 or the FPGA arranged thereon 33 get connected. By the programmable logic device 33 can be reconfigured, therefore, the control function can be adjusted with little effort.

Prinzipiell kann ein Ändern der Konfiguration auch dadurch erfolgen, dass das Programmiergerät mit dem Mikrocontroller 31 oder dem nichtflüchtigen Speicher 32 verbunden ist und die geänderte Konfiguration zunächst in den nichtflüchtigen Speicher 32 und erst indirekt in den programmierbaren Logikbaustein 33 geschrieben wird. Dies hat den Vorteil, dass die geänderte Konfiguration auch bei jeder weiteren Initialisierung des Steuergeräts 30 sofort verfügbar ist. In principle, a change of the configuration can also take place in that the programming device with the microcontroller 31 or the nonvolatile memory 32 is connected and the changed configuration first in the non-volatile memory 32 and only indirectly in the programmable logic device 33 is written. This has the advantage that the changed configuration also with every further initialization of the control unit 30 is immediately available.

Die in der Abbildung gezeigte Nutzung der Debugging-Schnittstelle 34 hat den Vorteil, dass diese ein Umschalten zwischen verschiedenen Logik- bzw. Regelfunktionen im laufenden Betrieb des Steuergeräts ermöglicht. Zu diesem Zweck kann in der geänderten Konfiguration beispielsweise direkt vor dem mit Ansteuerschaltung 35 verbundenen Schnittstellen-Pin des FPGA 33 ein Multiplexer angeordnet werden, wobei ein erster Eingang des Multiplexers vorzugsweise mit der ursprünglichen Regelfunktion verbunden ist und ein zweiter Eingang des Multiplexers mit einer geänderten Regelfunktion verbunden ist. The use of the debugging interface shown in the figure 34 has the advantage that this allows switching between different logic or control functions during operation of the controller. For this purpose, in the changed configuration, for example, directly in front of the with drive circuit 35 connected interface pin of the FPGA 33 a multiplexer are arranged, wherein a first input of the multiplexer is preferably connected to the original control function and a second input of the multiplexer is connected to a modified control function.

Besonders bevorzugt erfolgt die Wahl des durchzuschaltenden Eingangs über ein mit dem Umschalteingang verbundenes Register, so dass der Inhalt des Registers die aktive Regelfunktion bestimmt. Indem ein Datenkanal über die Debugging-Schnittstelle 34 eingerichtet wird, kann der Inhalt des Registers vom Programmiergerät 40 beschrieben werden. Somit kann der Nutzer über Programmiergerät 40 zwischen verschiedenen Regelfunktionen umschalten. Dies beschleunigt den Entwurf neuer Steuergeräte bzw. Regelfunktionen weiter. Particularly preferably, the input to be switched through is selected via a register connected to the switching input, so that the content of the register determines the active control function. By having a data channel through the debugging interface 34 is set up, the contents of the register from the programmer 40 to be discribed. Thus, the user can via programming device 40 switch between different control functions. This further speeds up the design of new control devices or control functions.

In einer weiteren bevorzugten Ausführungsform der Erfindung wird ein Register in einem Signalpfad der Ausgangskonfiguration angeordnet, wobei der Ausgang des Registers zweckmäßigerweise mit einem der Debugging-Schnittstelle zugeordneten Pin des FPGA verbunden ist. Somit erfasst das Register ein Signal der Ausgangskonfiguration und kann dieses an ein externes RCP-System übertragen. Indem eine Trigger-Logik hinzugefügt wird, kann der Zeitpunkt der Erfassung anhand einer Auswertung vorgegebener Bedingungen bestimmt werden. Alternativ oder ergänzend kann auch vorgesehen sein, das Signal auf dem programmierbaren Logikbaustein zwischenzuspeichern. Durch das erfindungsgemäße Verfahren ist es somit möglich, auch ohne Vorliegen des Quellcodes bzw. einer vollständigen Logikbeschreibung der Ausgangskonfiguration eine Messfunktionalität hinzuzufügen. In a further preferred embodiment of the invention, a register is arranged in a signal path of the output configuration, wherein the output of the register is expediently connected to a pin of the FPGA assigned to the debugging interface. Thus, the register detects a signal of the output configuration and can transmit it to an external RCP system. By adding a trigger logic, the time of detection can be determined by evaluating given conditions. Alternatively or additionally, it can also be provided to buffer the signal on the programmable logic module. The method according to the invention thus makes it possible to add a measuring functionality to the initial configuration even without the presence of the source code or a complete logic description.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • EP 2869145 A1 [0003] EP 2869145 A1 [0003]
  • US 7902866 B2 [0005] US 7902866 B2 [0005]

Zitierte Nicht-PatentliteraturCited non-patent literature

  • „Torc: Towards an Open Source Tool Flow“, Proceedings of the 19th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays, 2011, von N. Steiner et al. [0006] "Torc: Towards an Open Source Tool Flow," Proceedings of the 19th Annual ACM / SIGDA International Symposium on Field Programmable Gate Arrays, 2011, by N. Steiner et al. [0006]
  • R. K. Soni et al. in „Open-Source Bitstream Generation“, 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 [0006] RK Soni et al. in "Open-Source Bitstream Generation", 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013 [0006]
  • „Rapid Smith: Do-it-Yourself CAD Tools for Xilinx FPGAs“, 2011 21st International Conference on Field Programmable Logic and Applications, von C. Lavin et al. [0007] "Rapid Smith: Do-It-Yourself CAD Tools for Xilinx FPGAs", 2011 21st International Conference on Field Programmable Logic and Applications, by C. Lavin et al. [0007]
  • „Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs“, 22nd IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2014, von B. L. Hutchings und J. Keeley [0007] "Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs", 22nd IEEE Annual International Symposium on Field Programmable Custom Computing Machines 2014, by BL Hutchings and J. Keeley [0007]

Claims (17)

Verfahren zum Ändern der Konfiguration eines programmierbaren Logikbausteins, bei dem eine Ausgangskonfiguration des programmierbaren Logikbausteins eingelesen wird, so dass eine Logikbeschreibung, insbesondere eine platzierte Netzliste, der Ausgangskonfiguration zumindest teilweise vorliegt, wobei aus der Logikbeschreibung der Ausgangskonfiguration des programmierbaren Logikbausteins ein oder mehrere Logikelemente und/oder Verbindungselemente ersetzt oder umkonfiguriert werden und eine Logikbeschreibung einer Zielkonfiguration erstellt wird, welche kein, ein oder mehrere zusätzliche Logikelemente aufweist, wobei kein, ein oder mehrere Elemente der Ausgangskonfiguration in der Zielkonfiguration nicht genutzt werden, wobei anhand von Zuordnungsinformationen Übergabepunkte bestimmt werden, also in Ziel- und Ausgangskonfiguration vorhandenen Logikelemente, insbesondere Register oder Treiber, an denen in der Zielkonfiguration eine geänderte Logikfunktion angelegt wird, wobei zumindest die bereits in der Ausgangskonfiguration nicht genutzten Logikelemente des programmierbaren Logikbausteins als frei markiert werden und wobei die zusätzlichen Logikelemente der Zielkonfiguration auf den als frei markierten Logikelementen platziert und über ungenutzte Verbindungselemente mit den Übergabepunkten verbunden werden, wobei aus der Logikbeschreibung der Zielkonfiguration ein geänderter Bitstrom erstellt wird und wobei der geänderte Bitstrom in den programmierbaren Logikbaustein geschrieben wird.  Method for changing the configuration of a programmable logic module, in which an output configuration of the programmable logic module is read, so that a logic description, in particular a placed network list, the output configuration is at least partially present, wherein from the logic description of the output configuration of the programmable logic module one or more logic elements and / or connecting elements are replaced or reconfigured and a logic description of a target configuration is created which has no, one or more additional logic elements, none, one or more elements of the initial configuration in the target configuration are not used, wherein transfer points are determined based on mapping information, ie Target and output configuration existing logic elements, in particular registers or drivers to which a modified logic function is created in the target configuration, wherein at least the logic elements of the programmable logic device that are not already used in the initial configuration are marked as free and the additional logic elements of the destination configuration are placed on the freely marked logic elements and connected to the transfer points via unused connecting elements, wherein a modified bit stream is created from the logic description of the destination configuration and wherein the changed bit stream is written to the programmable logic device. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass auch die Logikelemente der Ausgangskonfiguration, welche in der Zielkonfiguration nicht genutzt werden und deren Ausgänge nur mit Eingängen von Übergabepunkten verbunden sind, als frei markiert werden, wobei vorzugsweise die entsprechenden Verbindungselemente als ungenutzt markiert werden. A method according to claim 1, characterized in that the logic elements of the initial configuration, which are not used in the target configuration and whose outputs are connected only to inputs of transfer points, are marked as free, wherein preferably the corresponding connection elements are marked as unused. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass rekursiv alle Logikelemente, deren Ausgänge ausschließlich mit einem oder mehreren Eingängen von in einem vorherigen Schritt als frei markierten Logikelementen verbunden sind, ebenfalls als frei markiert werden, wobei vorzugsweise die entsprechenden Verbindungselemente als ungenutzt markiert werden. A method according to claim 2, characterized in that recursively all logic elements whose outputs are exclusively connected to one or more inputs of in a previous step as freely marked logic elements are also marked as free, wherein preferably the corresponding connection elements are marked as unused. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass alle Logikelemente in einer vorgegebenen Region um ein oder mehrere ersetzte Logikelemente der Ausgangskonfiguration oder einen Eingang eines Übergabepunkts als frei markiert und die entsprechenden Verbindungselemente als ungenutzt markiert werden, wobei alle Logikelemente in der vorgegebenen Region mit Ausnahme des oder der ersetzten Logikelemente anschließend neu platziert und mit ungenutzten Verbindungselementen verbunden werden. A method according to claim 2 or 3, characterized in that all logic elements in a given region around one or more replaced logic elements of the initial configuration or an input of a transfer point marked as free and the corresponding connecting elements are marked as unused, with all logic elements in the given region with Exception of the replaced logic element (s) then re-placed and connected to unused connectors. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass die in der Ausgangskonfiguration verwendeten Verbindungselemente, welche an einem der Logikelemente in der vorgegebenen Region enden, zumindest bis zu dem nächsten verbundenen Logikelement außerhalb der vorgegebenen Region als ungenutzt markiert werden. A method according to claim 4, characterized in that the connecting elements used in the initial configuration, which terminate at one of the logic elements in the predetermined region, are marked as unused at least until the next connected logic element outside the predetermined region. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Schritt des Einlesens einer Ausgangskonfiguration das Einlesen eines Bitstroms und eine zumindest für Teile des Bitstroms vorgenommene Konvertierung des Bitstroms in eine Logikbeschreibung umfasst, wobei die Konvertierung insbesondere anhand von Architekturinformationen des verwendeten programmierbaren Logikbausteins erfolgt. Method according to one of the preceding claims, characterized in that the step of reading in an output configuration comprises reading a bit stream and a conversion of the bit stream made at least for parts of the bit stream into a logic description, the conversion taking place in particular on the basis of architectural information of the programmable logic module used. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem für die geänderten und somit umkonfigurierten Logikelemente und/oder Verbindungselemente eine Beziehung zwischen Position im Bitstrom und Logikelement oder Verbindungselement auf dem programmierbaren Logikbaustein hergestellt und der ursprüngliche Bitstrom an den entsprechenden Positionen geändert wird. Method according to one of the preceding claims, characterized in that the changed bit stream is created on the basis of the target configuration by establishing for the changed and thus reconfigured logic elements and / or connection elements a relationship between position in the bit stream and logic element or connection element on the programmable logic device and the original Bitstream is changed at the appropriate positions. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass der geänderte Bitstrom anhand der Zielkonfiguration erstellt wird, indem die platzierte Netzliste der Zielkonfiguration in einen neuen vollständigen Bitstrom übersetzt wird. Method according to one of claims 1 to 6, characterized in that the changed bit stream is created based on the target configuration by the translated netlist of the target configuration is translated into a new complete bit stream. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass für eine zu ändernde Logikfunktion, welche mindestens einen Signalpfad umfasst, zumindest nach der Änderung eine Signallaufzeit ermittelt wird, wobei vorzugsweise für einen Signalpfad in der Zielkonfiguration des programmierbaren Logikbausteins, in dessen Verlauf mindestens ein zusätzliches oder umkonfiguriertes Logikelement oder Verbindungselement vorkommt, eine Signallaufzeit geschätzt wird, indem die Anzahl sequentiell aufeinander folgender Logikelemente des Signalpfads in der Zielkonfiguration gezählt wird und jedem Logikelement eine konstante Signallaufzeit zugeordnet wird. Method according to one of the preceding claims, characterized in that for a logic function to be changed, which comprises at least one signal path, a signal delay is determined at least after the change, preferably for a signal path in the target configuration of the programmable logic module, in the course of at least one additional or reconfigured logic element or connector, a signal delay is estimated by counting the number of sequentially consecutive logic elements of the signal path in the target configuration and assigning each logic element a constant signal delay. Verfahren nach einem der vorhergehenden Ansprüche dadurch gekennzeichnet, dass für alle zu ändernden Logikfunktionen und/oder alle von diesen umfassten Signalpfade mindestens eine Signallaufzeit ermittelt und mit einem oder mehreren Schwellenwerten verglichen wird, und dass eine Warnung und/oder eine Modifikation der platzierten Netzliste der Zielkonfiguration erfolgt, wenn mindestens eine ermittelte Signallaufzeit den Schwellenwert überschreitet oder außerhalb eines vorgegebenen Intervalls liegt. Method according to one of the preceding claims, characterized in that for all logic functions to be changed and / or all signal paths covered by these, at least one signal transit time is determined and compared with one or more threshold values, and that one Warning and / or a modification of the placed netlist of the target configuration occurs when at least one detected signal propagation time exceeds the threshold or is outside a predetermined interval. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zielkonfiguration mindestens einen ersten Multiplexer umfasst, der insbesondere direkt vor einem Übergabepunkt angeordnet ist, und dass alle hinzugefügten Logikelemente in neuen Signalpfaden angeordnet sind, die einen einzigen Eingang des ersten Multiplexers umfassen. Method according to one of the preceding claims, characterized in that the target configuration comprises at least a first multiplexer, which is arranged in particular directly before a transfer point, and that all added logic elements are arranged in new signal paths comprising a single input of the first multiplexer. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass die neuen Signalpfade mindestens ein Schnittstellen-Pin des programmierbaren Logikbausteins umfassen, wobei der mindestens eine Schnittstellen-Pin vorzugsweise einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. A method according to claim 11, characterized in that the new signal paths comprise at least one interface pin of the programmable logic device, wherein the at least one interface pin is preferably associated with a debugging interface of the programmable logic device. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zielkonfiguration mindestens einen zweiten Multiplexer umfasst, der insbesondere direkt hinter einem Übergabepunkt angeordnet ist, wobei der zweite Multiplexer mit mindestens einem Eingang eines Logikelements verbunden ist. Method according to one of the preceding claims, characterized in that the target configuration comprises at least one second multiplexer, which is arranged in particular directly behind a transfer point, wherein the second multiplexer is connected to at least one input of a logic element. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zielkonfiguration mindestens ein hinzugefügtes Register umfasst, wobei der Ausgang des Registers vorzugsweise mit einem Schnittstellen-Pin verbunden ist, welcher insbesondere einer Debugging-Schnittstelle des programmierbaren Logikbausteins zugeordnet ist. Method according to one of the preceding claims, characterized in that the target configuration comprises at least one added register, wherein the output of the register is preferably connected to an interface pin, which is assigned in particular to a debugging interface of the programmable logic module. Verfahren zum Anpassen eines Steuergeräts, welches einen zur Ausführung einer Regelfunktion eingerichteten programmierbaren Logikbaustein umfasst, bei dem die Konfiguration des programmierbaren Logikbausteins durch ein Verfahren nach einem der vorhergehenden Ansprüche verändert wird.  Method for adapting a control device, which comprises a programmable logic device configured to execute a control function, in which the configuration of the programmable logic device is modified by a method according to one of the preceding claims. Programmiervorrichtung zum Beschreiben eines programmierbaren Logikbausteins, umfassend einen Prozessor, eine Programmierschnittstelle und/oder eine Debugging-Schnittstelle, wobei die Vorrichtung dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 15 auszuführen.  A programming device for describing a programmable logic device, comprising a processor, a programming interface and / or a debugging interface, the device being adapted to carry out a method according to one of claims 1 to 15. Computerprogrammprodukt mit einem computerlesbaren Speichermedium, auf dem Befehle eingebettet sind, die, wenn sie von einer Recheneinheit ausgeführt werden, bewirken, dass die Recheneinheit dazu eingerichtet ist, ein Verfahren gemäß einem der Ansprüche 1 bis 15 auszuführen.  A computer program product having a computer-readable storage medium embedded with instructions that, when executed by a computing unit, cause the computing unit to be configured to perform a method according to any one of claims 1 to 15.
DE102015115022.0A 2015-09-08 2015-09-08 Method for changing the configuration of a programmable logic device Withdrawn DE102015115022A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102015115022.0A DE102015115022A1 (en) 2015-09-08 2015-09-08 Method for changing the configuration of a programmable logic device
US15/258,059 US9929734B2 (en) 2015-09-08 2016-09-07 Method for changing the configuration of a programmable logic module
JP2016175573A JP6530358B2 (en) 2015-09-08 2016-09-08 How to change the configuration of programmable logic chips

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015115022.0A DE102015115022A1 (en) 2015-09-08 2015-09-08 Method for changing the configuration of a programmable logic device

Publications (1)

Publication Number Publication Date
DE102015115022A1 true DE102015115022A1 (en) 2017-03-09

Family

ID=58055148

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015115022.0A Withdrawn DE102015115022A1 (en) 2015-09-08 2015-09-08 Method for changing the configuration of a programmable logic device

Country Status (1)

Country Link
DE (1) DE102015115022A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7902866B1 (en) 2007-08-27 2011-03-08 Virginia Tech Intellectual Properties, Inc. Wires on demand: run-time communication synthesis for reconfigurable computing
US7940082B1 (en) * 2007-12-28 2011-05-10 Altera Corporation Circuits and method for bypassing a static configuration in a programmable logic device to implement a dynamic multiplexer
EP2869145A1 (en) 2013-10-29 2015-05-06 dSPACE digital signal processing and control engineering GmbH Method for influencing a control program of a control unit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7902866B1 (en) 2007-08-27 2011-03-08 Virginia Tech Intellectual Properties, Inc. Wires on demand: run-time communication synthesis for reconfigurable computing
US7940082B1 (en) * 2007-12-28 2011-05-10 Altera Corporation Circuits and method for bypassing a static configuration in a programmable logic device to implement a dynamic multiplexer
EP2869145A1 (en) 2013-10-29 2015-05-06 dSPACE digital signal processing and control engineering GmbH Method for influencing a control program of a control unit

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
„Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs", 22nd IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2014, von B. L. Hutchings und J. Keeley
„Rapid Smith: Do-it-Yourself CAD Tools for Xilinx FPGAs", 2011 21st International Conference on Field Programmable Logic and Applications, von C. Lavin et al.
„Torc: Towards an Open Source Tool Flow", Proceedings of the 19th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays, 2011, von N. Steiner et al.
HUTCHINGS, Brad L.; KEELEY, Jared. Rapid Post-Map Insertion of Embedded Logic Analyzers for Xilinx FPGAs. In: Field-Programmable Custom Computing Machines (FCCM), 2014 IEEE 22nd Annual International Symposium on. IEEE, 2014. S. 72-79. *
LE ROUX, Ronnie Rikus. Bitstream specialisation for dynamic reconfiguration of real-time applications/Ronnie Rikus le Roux. Dez. 2014. Doktorarbeit. *
R. K. Soni et al. in „Open-Source Bitstream Generation", 21st IEEE Annual International Symposium on Field-Programmable Custom Computing Machines 2013
SONI, Ritesh Kumar; STEINER, Neil; FRENCH, Matthew. Open-source bitstream generation. In: Field-Programmable Custom Computing Machines (FCCM), 2013 IEEE 21st Annual International Symposium on. IEEE, 2013. S. 105-112. *
ZHA, Wenwei. Facilitating FPGA reconfiguration through low-level manipulation. 2014. *

Similar Documents

Publication Publication Date Title
DE112013000758B4 (en) Generate clock signals for a cycle-accurate, cycle-replicable FPGA-based hardware accelerator
EP2765528B1 (en) Unrestricted access to signal values of an FPGA during runtime
DE112016003949T5 (en) WEB-BASED PROGRAMMING ENVIRONMENT FOR EMBEDDED EQUIPMENT
DE10034405B4 (en) Method and system for programming FPGAs on PC cards without additional hardware
EP2954440B1 (en) Alteration of a signal value for an fpga at runtime
DE10333087A1 (en) Process for the automatic decomposition of dynamic system models into sub-models
DE19814415A1 (en) Logic analysis subsystem in a time slice emulator
DE102016102920A1 (en) A method of configuring a test device set up to test an electronic controller
DE102013101300A1 (en) Method for assessing signal value i.e. engine speed, of field programmable gate array at run-time of processing device, involves reading status data from memory as read-back data, and determining signal value by mapping data on value
EP3244326B1 (en) Method for creating a fpga netlist
DE102022106423A1 (en) Method for sharing simulation models between a processor and an FPGA
EP3142032B1 (en) Method for changing the configuration of a programmable logic component
DE19530669A1 (en) Method for automatically selecting a clock-controlling signal path in reprogrammable systems for hardware emulation
DE102011103861A1 (en) Functional unit for use in simulation system to perform simulation of mixed analog/digital model, has logic module operated over pulse, and interface connecting module with simulation device, where pulse is controlled by simulation device
DE102020124791A1 (en) Method for the transmission of data from a first processing unit to a second processing unit
EP2963541B1 (en) Implementation of a constant in FPGA code
EP2899652A1 (en) Method for optimising the operation of programmable logic modules in control devices for vehicles
DE102015115022A1 (en) Method for changing the configuration of a programmable logic device
EP3739479B1 (en) Method for detecting errors in the program logic of a system of distributed programmable gate assemblies
DE60003847T2 (en) UNIVERSAL DEVICE AND METHOD AND TOOLS FOR THEIR USE
AT501880A1 (en) MEMORY PROGRAMMABLE CONTROL
DE102009054567A1 (en) Single event effect permissive circuit designing method, involves producing two logic element network data sheets, and providing synchronization line between error permissive memory circuit models of data sheets
DE102018217016A1 (en) One-chip system and security circuit with such a one-chip system
EP3242232B1 (en) Optimised production of total network list and bit stream
DE4445310C2 (en) Output control circuit

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0015177000

Ipc: G06F0009440000

R163 Identified publications notified
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee