EP4148613A1 - Verfahren zum hinzufügen einer weiteren schaltungskomponente - Google Patents

Verfahren zum hinzufügen einer weiteren schaltungskomponente Download PDF

Info

Publication number
EP4148613A1
EP4148613A1 EP22194640.3A EP22194640A EP4148613A1 EP 4148613 A1 EP4148613 A1 EP 4148613A1 EP 22194640 A EP22194640 A EP 22194640A EP 4148613 A1 EP4148613 A1 EP 4148613A1
Authority
EP
European Patent Office
Prior art keywords
circuit component
existing
fpga
component
circuit components
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.)
Pending
Application number
EP22194640.3A
Other languages
English (en)
French (fr)
Inventor
Dominik Lubeley
Heiko Kalte
Marc Schlenger
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
Original Assignee
Dspace 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 filed Critical Dspace GmbH
Publication of EP4148613A1 publication Critical patent/EP4148613A1/de
Pending 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]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/337Design optimisation
    • 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]
    • G06F30/343Logical level

Definitions

  • the invention relates to a method for adding a further circuit component with operations that can be performed on an FPGA to an FPGA configuration, the FPGA configuration already having at least one existing circuit component that is distributed locally in the FPGA configuration and that has operations that can be performed on the FPGA.
  • the invention also relates to a non-volatile, computer-readable storage medium with instructions stored thereon which, when executed on a processor, bring about the method.
  • An FPGA is a digital technology integrated circuit into which a logic circuit can be loaded.
  • programming or “construction of the FPGA” in the case of FPGAs means not only the specification of time sequences, but also the definition of the desired circuit structure.
  • This circuit structure is formulated using a hardware description language and then translated by software into a configuration file that specifies how the elements in the FPGA are to be connected.
  • a description of the hardware structure is created, which is then transferred to the actual FPGA using synthesis and routing tools.
  • This hardware description typically takes place in special languages such as VHDL or Verilog. Instead of "FPGA program” one also speaks of an "FPGA configuration".
  • FPGA programming is not based on a given operating system and driver base. Instead, FPGA programming aims to define structures in the semiconductor that will later perform the intended functions. In this way is a degree of specialization and parallelism achievable that is difficult to achieve with conventional, off-the-shelf microprocessors.
  • HIL simulation hardware-in-the-loop simulation
  • RCP systems rapid control prototyping systems
  • real-time simulations for example in the technical areas of power electronics and electromobility
  • pure processor models for example in the technical areas of power electronics and electromobility
  • FPGA models In many applications, such as simulations, in which very fast control loops are required, these must be supplemented or even replaced by FPGA models.
  • Such hardware for HIL simulations and rapid control prototyping systems have a large number of FPGAs with tested firmware versions for different functionalities or circuit components, for example FPGAs for communication in a real-time network and FPGAs which have different I/O functionalities on I/O can realize channels.
  • An essential point of the proposed method is that, in contrast to the prior art, only changes to the FPGA configuration have to be tested, but not the overall functionality of the FPGA configuration, which greatly reduces the time and costs involved.
  • a fixed so-called floorplaning was assumed in the prior art, in which circuit components were placed in fixed regions, so-called Pblocks, in the FPGA configuration.
  • the proposed method enables the use of, in particular, protected circuit components in variable logic without floorplaning.
  • the method utilizes existing free space for additional circuit components that are created, for example, by customers and not by a manufacturer. In this case, an overall timing of the FPGA is not influenced by rigid Pblock boundaries and/or circuit components are not preset to a fixed Pblock size fixed.
  • the proposed method enables secure operation of protected circuit components in variable FPGA logic, with the timing being secured and standard scenarios for power consumption being tested, and shorter build times being possible through pre-placement.
  • the process eliminates the need for floorplaning while allowing more degrees of freedom for the FPGA manufacturer's placement and routing tools. Furthermore, there is no waste of unused resources through cuttings, since in principle all free spaces that are still left can be used.
  • the process does not require ideal pre-placement of the circuit components, and the overall timing is not impaired by rigid Pblock boundaries. Furthermore, no additional transfer registers are required at the Pblock boundaries to avoid timing problems. Finally, there is no discarding of many and/or all circuit components when a circuit component becomes too large for its Pblock.
  • the temperature development tends to be more evenly distributed, since there are no local hotspots caused by extremely active Pblock.
  • the method allows the circuit components to be automatically placed close to their I/O.
  • the component functionality can be expanded to include an additional heat application, such as switching flip-flops, registerless oscillators, etc., which can heat up the FPGA so that worst-case scenarios can be secured.
  • the arrangement includes the step: Incremental addition of the further net list when at least one existing circuit component is blocked.
  • the method includes the step after arranging: removing the at least one existing circuit component.
  • a fully placed and routed FPGA configuration can be used as a reference design, with all circuit components that also appear in the current design being retained identically, but unused circuit components can be automatically removed.
  • a library of fully placed, routed individual circuit components can be created and for all circuit components used in the current design, the completed placement and routing of the individual circuit components are taken from the library for the build.
  • a so-called constraints library can be created with the help of the FPGA configuration, which, in addition to the description of the functionality in a synthesized netlist or a language such as VHDL or Verilog or a graphic modeling of the circuit components, only contains their constraints.
  • the netlists of all circuit components are not stored completely placed and routed, only the unplaced and unrouted netlists and their constraints, which force an identical place and route.
  • the further circuit component is arranged while maintaining an arrangement of the at least one existing circuit component.
  • the arrangement takes place in free spaces of the FPGA configuration that are not occupied by the at least one existing circuit component.
  • the FPGA configuration may include a plurality of existing circuit components.
  • Distributed arrangement of the additional netlist taking into account the at least one existing circuit component in the FPGA configuration, in particular locally distributed arrangement, means in particular that each circuit component is not arranged in a dedicated free space, i.e. each circuit component is arranged separately and/or at a distance from one another in such a way that but the circuit components may overlap geographically.
  • the at least one existing circuit component and the further circuit component are placed in the same partitions of the FPGA configuration and/or the at least one existing circuit component and the further circuit component are arranged partition-free in the FPGA configuration.
  • the method has the step: Individual testing of the at least one existing circuit component and the further circuit component.
  • the testing preferably takes place in a climatic cabinet and/or by means of load generation logic, for example massive flip-flop switching.
  • a plurality of existing circuit components are arranged in a distributed manner, taking into account other existing circuit components Circuit components are provided on the FPGA configuration and/or the method includes the step: arranging a plurality of further circuit components.
  • the plurality of further circuit components are preferably arranged as described above by means of synthesizing the respective further and distributed arrangement of the respective further netlist.
  • the individual circuit components preferably each have different operations that can be carried out on the FPGA.
  • a plurality of existing circuit components arranged in a distributed manner, taking into account other existing circuit components, are provided on the FPGA configuration and the method includes the step: sequentially removing at least one existing circuit component from the FPGA configuration and replacing the removed circuit component with another version of the circuit component that was created taking into account all other existing circuit components.
  • the FPGA configuration has at least one further circuit component arranged in a distributed manner, which is removed sequentially and the other version of which is arranged in free spaces, in particular in the removed circuit component or over all available free spaces.
  • circuit component such as “network” can be updated in an FPGA configuration that consists only of circuit components arranged without conflict. This is also possible with arbitrarily placed circuit components that are deleted before the update and placed in newly created free spaces after the update.
  • the object is also achieved by a non-volatile, computer-readable storage medium with instructions stored thereon which, when executed on a processor, bring about a previously described method.
  • Modern FPGA tools offer various options for synthesis, generation of netlists, and implementation, place & route, of FPGAs.
  • the netlists for the circuit components can be retained in their hierarchy, for example, or dehierarchized across circuit component boundaries and thus better optimized.
  • libraries are still in a hardware description language such as VHDL, Verilog or in the form of a graphic model, from which VHDL or Verilog, for example, is generated with a code generator, if necessary with an intermediate step using another language such as C, if tools for a High Level Synthesis (HLS) can be used.
  • VHDL hardware description language
  • Verilog Verilog
  • a graphic model from which VHDL or Verilog, for example, is generated with a code generator, if necessary with an intermediate step using another language such as C, if tools for a High Level Synthesis (HLS) can be used.
  • C High Level Synthesis
  • the area of the FPGA can be divided into different regions, called Pblock, for individual circuit components by floorplaning, as in 1 shown, which can be placed and routed individually.
  • the subdivision into rigid Pblocks also serves as the basis for a dynamic partial reconfiguration, in which individual circuit components can be exchanged during the runtime of the FPGA.
  • a distribution of the circuit components to different regions is the method of the prior art in order to be able to use existing circuit components, with the serious limitations of floorplaning and Pblocks, also in a fixed position and routed. Libraries can therefore be present as described above and are then placed on a Pblock, so that circuit components are present in the library as netlists placed ready for their Pblock.
  • FIG. 2 shows a further circuit component 1 with operations that can be carried out on an FPGA at the bottom left, which are to be inserted into an FPGA configuration 3 for four existing circuit components 2 shown at the top left.
  • the four existing circuit components 2 are distributed locally in the FPGA configuration 3, ie not limited to one region of the FPGA.
  • two basic steps are run through, so first (a) synthesizing the further circuit component 1 to obtain a further net list of the further circuit component 1, and (b) distributed arrangement of the further net list, taking into account the at least one existing circuit component 2 in the FPGA configuration 3 .
  • the further circuit component 1 is arranged while maintaining an arrangement of the at least one existing circuit component 2 in unoccupied free spaces of the FPGA configuration 3.
  • the arrangement places the at least one existing circuit component 2 and the further circuit component 1 in the same partitions of the FPGA configuration 3, see above that the at least one existing circuit component 2 and the further circuit component 1 are arranged without partitions in the FPGA configuration 3 .
  • a library of ready-placed, routed individual circuit components is created with the help of the "merged component stack".
  • the finished placement & routing of the individual circuit components is taken from the library for the build.
  • This method can have characteristics of the so-called hierarchical design use flows.
  • the locking of already placed and routed circuit components with Pblocks is known from the hierarchical design flow.
  • PIPs programmable interconnects
  • ROUTE_FIXED constraints it is also necessary to lock the pins of the basic elements , LOCK PINS Constraints.
  • Constraints method is the simplest method, since the circuit components are not already placed and routed, only their constraints are used to force an identical Place & Route.
  • This method can use the "Merged Component Stack" to create a constraints library that, in addition to the description of the functionality in a synthesized netlist or a language such as VHDL or Verilog or a graphic modeling of the circuit components, only contains their constraints.
  • the creation of a library of circuit components includes the following steps: With the subtractive and additive method, the further network list is first added incrementally with at least one existing circuit component 2 blocked. With the subtractive method, the at least one existing circuit component 2 is then removed, with the further circuit component 1 is blocked. In the Constraints method, the further circuit component 1 is first blocked, and then the arrangement of the further circuit component 1 is exported to be taken into account when adding a still further circuit component 1. Beforehand, the at least one existing circuit component 2 including the at least one existing net list is read in. Circuit components that are not used can be removed from the arrangement of the further circuit component 1 together with the at least one existing circuit component 2 .
  • the further circuit component 1 is first synthesized in the subtractive method, with the further circuit component 1 being synthesized as a dedicated object out of context, OOC.
  • the synthesis takes place in a fixed wrapper, so that one netlist path of the other Circuit component 1 is always identical.
  • the further net list of the further further circuit component 1 is then exported in order to obtain this as a net list library.
  • the netlists of the circuit components used are added from the netlist library of the "Merged Component Stack" so that in a later incremental implementation the netlist of the "Component Stack” element of the new design is identical to the netlist in the "Merged Component Stack" reference is recognized. Specifically, the following is carried out individually for each circuit component: read _ check point ⁇ synthesized _ component _ check point _ file name >
  • Place & Route the entire implemented "Merged Component Stacks" are read in as a reference.
  • the netlist of the "merged component stack” is also loaded in order to find the circuit components used in the "merged component stack” in the netlists of the customer design and/or the firmware.
  • the existing placement & routing of the reference design (“Merged Component Stack") is used for the circuit components used: read _ check point ⁇ incrementally ⁇ design _ of _ merged _ component _ stack > ⁇ fix _ trap
  • the overall design is routed while maintaining the routing of the circuit components of the "merged component stack". Routing to non-circuit components of the "merged component stack" is removed since it has no match in the netlist of the design being routed.
  • the synthesis is initially carried out analogously to the additive and subtractive methods.
  • Place & Route the constraints of the individual required circuit components of the "Component Stack" are first read.
  • the existing placement & routing is reused for the circuit components used. For each circuit component is carried out individually:
  • a customer who graphically models his FPGA model can build the entire flexible I/O framework with every FPGA build.
  • the framework ensures that the FPGA customer model is connected to the communication bus and I/O and also includes the wrapper between the customer model and the framework circuit components. If the customer does not address the I/O channels directly from the FPGA model, these channels can be used by standard I/O functions implemented in the FPGA, as in 3 implied.
  • the standard I/O functions are used by the CPU model on the real-time processor, i.e. not by the FPGA model.
  • the netlists of the flexible I/O framework are used for the FPGA build.
  • the standard I/O channel functionalities for the "Component Stack" based synthesis are defined as black boxes.
  • the rest of the framework can be further dehierarchized and optimized in the synthesis.
  • the implementation runs in the same way as previously described.
  • a constraint for locking the placement & routing for the im Standard I/O functionalities and/or circuit components used by customers FPGA model is used for the FPGA build.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

Gegenstand der Erfindung ist ein Verfahren zum Hinzufügen einer weiteren Schaltungskomponente (1) mit auf einem FPGA ausführbaren Operationen zu einer FPGA Konfiguration (3), wobeidie FPGA Konfiguration (3) bereits wenigstens eine in der FPGA Konfiguration (3) örtlich verteilt angeordnete bestehende Schaltungskomponente (2) mit auf dem FPGA ausführbaren Operationen aufweist, mit den Schritten:Synthetisieren der weiteren Schaltungskomponente (1) zum Erhalten einer weiteren Netzliste, undverteiltes Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente (2) in der FPGA Konfiguration (3).

Description

    Technisches Gebiet
  • Die Erfindung betrifft ein Verfahren zum Hinzufügen einer weiteren Schaltungskomponente mit auf einem FPGA ausführbaren Operationen zu einer FPGA Konfiguration, wobei die FPGA Konfiguration bereits wenigstens eine, in der FPGA Konfiguration örtlich verteilt angeordnete, bestehende Schaltungskomponente mit auf dem FPGA ausführbaren Operationen aufweist. Die Erfindung betrifft ferner ein nichtflüchtiges, computerlesbares Speichermedium mit darauf abgespeicherten Befehlen, die bei ihrer Ausführung auf einem Prozessor das Verfahren bewirken.
  • Hintergrund der Erfindung
  • Ein FPGA ist ein integrierter Schaltkreis der Digitaltechnik, in den eine logische Schaltung geladen werden kann. Im Unterschied zur Programmierung von Computern, Mikrocontrollern und Steuerungen meint der Begriff "Programmierung" bzw. "Bauen des FPGA" bei FPGAs nicht nur die Vorgabe zeitlicher Abläufe, sondern auch die Definition der angestrebten Schaltungsstruktur. Diese Schaltungsstruktur wird mittels einer Hardware-Beschreibungssprache formuliert und dann softwaremäßig in eine Konfigurationsdatei übersetzt, die vorgibt, wie die Elemente im FPGA verschaltet werden sollen. Bei der FPGA-Programmierung erzeugt man also eine Beschreibung der Hardware-Struktur, die dann mit Hilfe von Synthese- und Routing-Werkzeugen auf den eigentlichen FPGA übertragen wird. Diese Hardware-Beschreibung findet typischerweise in speziellen Sprachen, wie VHDL oder Verilog statt. Anstelle von "FPGA-Programm" spricht man dabei deshalb auch von einer "FPGAKonfiguration". Im Gegensatz zur Programmierung von Computern, Mikroprozessoren und Steuerungen richtet sich die FPGA-Programmierung somit nicht an einem vorgegebenen Betriebssystem und einer Treiberbasis aus. Stattdessen zielt die FPGA-Programmierung auf die Definition von Strukturen im Halbleiter ab, die später die beabsichtigten Funktionen ausführen. Auf diese Weise ist ein Spezialisierungs- und Parallelitätsgrad erzielbar, der von herkömmlichen, vorgefertigten Mikroprozessoren nur schwer zu erreichen ist.
  • Im Bereich der Hardware in the Loop-Simulation (HIL-Simulation) und bei Rapid Control Prototyping-Systemen (RCP-Systemen) können Echtzeitsimulationen, zum Beispiel in den technischen Bereichen Leistungselektronik und Elektromobilität, schon längere Zeit nicht mehr durch reine Prozessormodelle abgedeckt werden. Bei vielen Anwendungsfällen, wie Simulationen, in denen sehr schnelle Regelkreise erforderlich sind, müssen diese durch FPGA-Modelle ergänzt oder gar ersetzt werden. Derartige Hardware für HIL-Simulationen und bei Rapid Control Prototyping-Systeme verfügen über eine Vielzahl von FPGAs mit getesteten Firmwareständen für unterschiedliche Funktionalitäten bzw. Schaltungskomponenten, beispielsweise FPGAs für eine Kommunikation in einem Echtzeitnetzwerk und FPGAs, welche unterschiedliche I/O Funktionalitäten auf I/O Kanälen realisieren können.
  • Sobald eine Änderung an der Funktionalität erforderlich wird, muss die Funktionalität neu implementiert, der FPGA neu gebaut und jede einzelne Funktionalität, also sowohl vorhandene Funktionalitäten als auch die neue Funktionalität, getestet und freigegeben werden. Dies ist dadurch bedingt, da beim Bauen des FPGA-Firmwarestands die Funktionalität jeder einzelnen Schaltungskomponente über Grenzen der Schaltungskomponente hinweg optimiert, auf dem FPGA platziert und neu geroutet werden muss. Selbst eine Änderung eines einzelnen Bits oder Signals kann zu einem unterschiedlichen Ergebnis führen. Insofern kann jede einzelne Funktionalität ein abweichendes Timingverhalten haben, abhängig von der Platzierung auf dem FPGA. Die dadurch erforderlichen Tests erzeugen selbst bei nur minimalen Änderungen einen hohen Aufwand, die sich von der Hardwareentwicklung über die Softwareentwicklung bis zum Systemtest ziehen kann, da immer die Gesamtfunktionalität des FPGA getestet werden muss. Insbesondere in der Hardwareentwicklung ist dies problematisch, da der Firmwarestand aufwendig in einem Klimaschrank getestet werden muss, um zu garantieren, dass der Firmwarestand unter allen für das Produkt spezifizierten Umweltbedingungen funktioniert.
  • Beschreibung der Erfindung
  • Ausgehend von dieser Situation ist es eine Aufgabe der vorliegenden Erfindung, eine Verfahren zum Ändern einer Funktionalität einer FPGA Konfiguration anzugeben, welches gegenüber den aus dem Stand der Technik bekannten Verfahren durch einen geringen Testaufwand gekennzeichnet ist.
  • Die Aufgabe der Erfindung wird durch die Merkmale der unabhängigen Ansprüche gelöst. Vorteilhafte Ausgestaltungen sind in den Unteransprüchen angegeben.
  • Demnach wird die Aufgabe gelöst durch ein Verfahren zum Hinzufügen einer weiteren Schaltungskomponente mit auf einem FPGA ausführbaren Operationen zu einer FPGA Konfiguration, wobei
    die FPGA Konfiguration bereits wenigstens eine in der FPGA Konfiguration örtlich verteilt angeordnete bestehende Schaltungskomponente mit auf dem FPGA ausführbaren Operationen aufweist, mit den Schritten:
    • Synthetisieren der weiteren Schaltungskomponente zum Erhalten einer weiteren Netzliste, und
    • verteiltes Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente in der FPGA Konfiguration.
  • Ein wesentlicher Punkt des vorgeschlagenen Verfahrens liegt darin, dass im Gegensatz zum Stand der Technik nur noch Änderungen an der FPGA Konfiguration getestet werden müssen, nicht jedoch eine Gesamtfunktionalität der FPGA Konfiguration, wodurch ein Zeit- und Kostenaufwand stark reduziert wird. Bei derartigen Anwendungsfällen wurde im Stand der Technik ein festes sogenanntes Floorplaning vorausgesetzt, bei dem Schaltungskomponenten in festen Regionen, sogenannten Pblocks, in der FPGA Konfiguration platziert wurden. Im Gegensatz dazu ermöglicht das vorgeschlagene Verfahren eine Verwendung von insbesondere abgesicherten Schaltungskomponenten in veränderlicher Logik ohne Floorplaning. Das Verfahren nutzt für weitere Schaltungskomponenten, die beispielsweise durch Kunden und nicht durch einen Hersteller erstellt werden, vorhandene Freiräume aus. Dabei wird ein Gesamt-Timing des FPGA nicht durch starre Pblock Grenzen beeinflusst und/oder Schaltungskomponenten sind nicht vorab auf eine feste Pblock Größe festgelegt. Das bedeutet, dass das verteilte Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente nicht auf eine feste Region in der FPGA Konfiguration beschränkt ist, wie im Stand der Technik praktiziert. Mit anderen Worten wird im Gegensatz zu einer reinen "Incremental Implementation" ein sogenanntes Komponentenhandling realisiert.
  • Zusammengefasst ermöglicht das vorgeschlagene Verfahren einen sicheren Betrieb von abgesicherten Schaltungskomponenten in veränderlicher FPGA Logik, wobei das Timing gesichert ist und Standardszenarien für Leistungsaufnahme getestet sind, und kürzere Buildzeiten durch Vorplatzierung möglich sind. Durch das Verfahren entfällt die Notwendigkeit eines Floorplanings, während mehr Freiheitsgrade für Platzierungs- und Routing-Werkzeuge des FPGA Herstellers erzeugt werden. Ferner findet keine Verschwendung von ungenutzten Ressourcen durch Verschnitt statt, da grundsätzlich alle Freiräume, die noch übrig sind, genutzt werden können. Zudem ist durch das Verfahren kein ideales Vorplatzieren der Schaltungskomponenten notwendig und auch das Gesamt-Timing wird nicht durch starre Pblock Grenzen beeinträchtigt. Ferner werden auch keine zusätzlichen Übergaberegister an den Pblock Grenzen benötigt, um Timingprobleme zu vermeiden. Schließlich findet kein Verwerfen vieler und/oder aller Schaltungskomponenten statt, wenn eine Schaltungskomponenten zu groß für ihren Pblock wird. Zudem entsteht eine tendenziell gleichmäßigere Verteilung der Temperaturentwicklung, da keine lokalen Hotspots, durch extrem aktive Pblock, entstehen. Ebenso ermöglicht das Verfahren, dass die Schaltungskomponenten automatisch nahe an ihre I/O platziert werden. Für einen Klimaschranktest kann die Komponentenfunktionalität um eine zusätzliche Heat-Applikation, beispielsweise schaltende FlipFlops, Oszillatoren ohne Register, etc. , erweitert werden, welche den FPGA aufheizen kann, so dass sich Worst Case Szenarien absichern lassen.
  • Nach einer bevorzugten Weiterbildung umfasst das Anordnen den Schritt:
    Inkrementelles Hinzufügen der weiteren Netzliste bei gesperrter wenigstens einer bestehenden Schaltungskomponente.
  • Gemäß einer anderen bevorzugten Weiterbildung umfasst das Verfahren den Schritt nach dem Anordnen:
    Entfernen der wenigstens einen bestehenden Schaltungskomponente.
  • Nach einer bevorzugten Weiterbildung umfasst das Entfernen die Schritte:
    • Sperren der weiteren Schaltungskomponente, und
    • sequentielles Entfernen wenigstens einer bestehenden Netzliste der wenigstens einen bestehenden Schaltungskomponente.
  • Mittels dieser Schritte kann eine fertig platzierte und geroutete FPGA Konfiguration als Referenzdesign verwendet werden, wobei insbesondere alle Schaltungskomponenten, die auch im aktuellen Design vorkommen, identisch erhalten bleiben, jedoch ungenutzte Schaltungskomponenten automatisch entfernt werden können. Ebenso kann mit Hilfe der FPGA Konfiguration eine Bibliothek von fertig platzierten gerouteten Einzel-Schaltungskomponenten erstellt werden und für alle im aktuellen Design verwendeten Schaltungskomponenten werden für den Build das fertige Placement & Routing der Einzel-Schaltungskomponenten aus der Bibliothek übernommen.
  • Gemäß einer anderen bevorzugten Weiterbildung umfasst das Verfahren die Schritte:
    • Sperren der weiteren Schaltungskomponente, und
    • Exportieren der Anordnung der weiteren Schaltungskomponente zur Berücksichtigung beim Hinzufügen einer noch weiteren Schaltungskomponente.
  • Bei dieser Variante kann mit Hilfe der FPGA Konfiguration eine sogenannte Constraints Bibliothek erstellt werden, die neben der Beschreibung der Funktionalität in einer synthetisierten Netzliste oder einer Sprache wie beispielsweise VHDL oder Verilog oder einer graphischen Modellierung der Schaltungskomponente, nur deren Constraints enthält. Die Netzlisten aller Schaltungskomponenten werden nicht fertig plaziert und geroutet abgespeichert sondern nur die unplatzierten und ungerouteten Netzlisten und deren Constraints, die ein identisches Place & Route erzwingen.
  • Nach einer bevorzugten Weiterbildung umfasst das Verfahren den Schritt:
    • Einlesen der wenigstens einen bestehenden Schaltungskomponente einschließlich der wenigstens einen bestehenden Netzliste, und/oder
    • Entfernen nicht verwendeter Schaltungskomponenten aus der Anordnung der weiteren Schaltungskomponente zusammen mit der wenigstens einen bestehenden Schaltungskomponente.
  • Gemäß einer anderen bevorzugten Weiterbildung erfolgt das Anordnen der weiteren Schaltungskomponente unter Beibehaltung einer Anordnung der wenigstens einen bestehenden Schaltungskomponente. Nach einer bevorzugten Weiterbildung erfolgt das Anordnen in durch die wenigstens eine bestehende Schaltungskomponente unbelegten Freiräumen der FPGA Konfiguration. Die FPGA Konfiguration kann eine Mehrzahl bestehender Schaltungskomponenten umfassen.
  • Verteiltes Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente in der FPGA Konfiguration, insbesondere örtlich verteiltes Anordnen, bedeutet insbesondere, dass die Anordnung jeder Schaltungskomponente nicht in einem dedizierten Freiraum erfolgt, also jede Schaltungskomponente derart separat und/oder beabstandet voneinander angeordnet ist, sondern sich die Schaltungskomponenten geografisch betrachtet überlappen können. Nach einer bevorzugten Weiterbildung sind durch das Anordnen die wenigstens eine bestehende Schaltungskomponente und die weitere Schaltungskomponente in gleichen Partitionen der FPGA Konfiguration platziert und/oder sind die wenigstens eine bestehende Schaltungskomponente und die weitere Schaltungskomponente partitionsfrei in der FPGA Konfiguration angeordnet.
  • Nach einer bevorzugten Weiterbildung weist das Verfahren den Schritt auf:
    Einzelnes Testen der wenigstens einen bestehenden Schaltungskomponente und der weiteren Schaltungskomponente.
  • Das Testen erfolgt bevorzugt in einem Klimaschrank und/oder mittels einer Lastgenerierungslogik, beispielsweise massives FlipFlop-Umschalten.
  • Gemäß einer anderen bevorzugten Weiterbildung sind eine Mehrzahl bestehender unter jeweiliger Berücksichtigung anderer bestehender Schaltungskomponenten verteilt angeordneter Schaltungskomponenten auf der FPGA Konfiguration vorgesehen und/oder umfasst das Verfahren den Schritt:
    Anordnen einer Mehrzahl weiterer Schaltungskomponenten.
  • Bevorzugt werden die Mehrzahl weiterer Schaltungskomponenten wie zuvor beschrieben mittels Synthetisieren der jeweiligen weiteren und verteiltes Anordnen der jeweils weiteren Netzliste angeordnet. Bevorzugt weisen die einzelnen Schaltungskomponenten jeweils unterschiedliche auf dem FPGA ausführbare Operationen auf.
  • Nach einer bevorzugten Weiterbildung sind eine Mehrzahl bestehender unter jeweiliger Berücksichtigung anderer bestehender Schaltungskomponenten verteilt angeordneter Schaltungskomponenten auf der FPGA Konfiguration vorgesehen und umfasst das Verfahren den Schritt:
    sequentielles Entfernen mindestens einer bestehenden Schaltungskomponente aus der FPGA Konfiguration und Ersetzen der entfernten Schaltungskomponente durch eine andere Version der Schaltungskomponente, die unter Berücksichtigung aller anderen bestehenden Schaltungskomponenten erstellt wurde.
  • Nach einer bevorzugten Weiterbildung weist die FPGA Konfiguration wenigstens eine verteilt angeordnete weitere Schaltungskomponente auf, die sequentiell entfernt wird und deren andere Version in Freiräume insbesondere der entfernten Schaltungskomponente oder über alle vorhandenen Freiräume angeordnet wird.
  • Derart lässt sich beispielsweise ein Update einer Schaltungskomponente wie beispielsweise "Netzwerk" in einer FPGA Konfiguration bewirken, die nur aus konfliktfrei angeordneten Schaltungskomponenten besteht. Dies ist auch bei beliebig platzierten Schaltungskomponenten möglich, die vor dem Update gelöscht und nach dem Update in neu entstehende Freiräume platziert werden.
  • Die Aufgabe wird weiterhin gelöst durch ein nichtflüchtiges, computerlesbares Speichermedium mit darauf abgespeicherten Befehlen, die bei ihrer Ausführung auf einem Prozessor ein zuvor beschriebenes Verfahren bewirken.
  • Kurze Beschreibung der Zeichnungen
  • Nachfolgend wird die Erfindung unter Bezugnahme auf die anliegenden Zeichnungen anhand bevorzugter Ausführungsbeispiele näher erläutert.
  • In den Zeichnungen zeigen
  • Fig. 1
    eine exemplarische Stand der Technik-Anwendung,
    Fig. 2
    eine Anwendung gemäß dem vorgeschlagenen Verfahren in einer schematischen Ansicht,
    Fig. 3
    eine weitere Ausgestaltung der Anwendung des vorgeschlagenen Verfahrens in einer schematischen Ansicht, und
    Fig. 4
    eine noch weitere Ausgestaltung der Anwendung des vorgeschlagenen Verfahrens in einer schematischen Ansicht, und
    Detaillierte Beschreibung der Ausführungsbespiele
  • Moderne FPGA Tools bieten verschiedene Optionen zur Synthese, Generierung von Netzlisten, und zur Implementierung, Place & Route, von FPGAs an. Während der Synthese können die Netzlisten für die Schaltungskomponenten beispielsweise in ihrer Hierarchie erhalten bleiben oder über Schaltungskomponentengrenzen hinweg dehierarchisiert und somit besser optimiert werden.
  • Fig. 1 zeigt eine exemplarische Stand der Technik-Anwendung, bei der ein Kunde mit jedem Build seiner Kunden-FPGA Konfiguration gegebenenfalls auch verwendete bestehende Schaltungskomponenten gegebenenfalls aus Bibliotheken mitbauen musste. Jeder Build resultierte in einer neuen optimierten Netzliste, in einem neuen Placement und in einem neuen Routing für bestehenden Schaltungskomponenten, die neben der Kundenfunktionalität im FPGA Bitstrom enthalten sind. Bibliotheken liegen in diesem Fall noch in einer Hardwarebeschreibungssprache wie beispielsweise VHDL, Verilog oder in Form einer graphischen Modellierung, aus der mit einem Codegenerator beispielsweise VHDL oder Verilog generiert wird, ggf. mit einem Zwischenschritt über eine andere Sprache wie beispielsweise C, wenn Tools für eine High Level Synthese (HLS) verwendet werden.
  • Alternativ kann die Fläche des FPGAs durch Floorplaning in verschiedene Regionen, Pblock genannt, für einzelne Schaltungskomponenten aufgeteilt werden, wie in Fig. 1 gezeigt, die einzeln platziert und geroutet werden können. Die Unterteilung in starren Pblocks dient gleichzeitig als Grundlage für eine dynamische partielle Rekonfiguration, bei der einzelne Schaltungskomponenten zur Laufzeit des FPGAs ausgetauscht werden können. Eine Aufteilung der Schaltungskomponenten auf verschiedene Regionen, ist das Verfahren des Stands der Technik, um bestehende Schaltungskomponenten, mit den gravierenden Einschränkungen des Floorplanings und der Pblocks, auch fest platziert und geroutet verwenden zu können. Bibliotheken können also wie oben beschrieben vorliegen und werden dann auf einen Pblock platziert, so dass Schaltungskomponenten als fertig für ihren Pblock platzierte Netzlisten in der Bibliothek vorliegen.
  • Das im folgenden beschriebene Verfahren eines flexiblen "Component Stack" ermöglicht Testaufwände zu reduzieren und zukünftige in Kunden-FPGA Applikationen eingebaute Schaltungskomponenten durch neuere, gesicherte Versionen tauschen zu können.
  • Im Gegensatz zum zuvor beschriebenen Ansatz mit Floorplaning müssen bei dem nachfolgend beschriebenen Verfahren keine Regionen des FPGA für die einzelnen Schaltungskomponenten festgelegt werden. Jede Schaltungskomponente kann beliebig im FPGA platziert sein. Allerdings darf die Schaltungskomponente keine Ressourcen verwenden, die bereits von einer anderen Schaltungskomponente belegt sind und sie muss als dediziertes Stack-Element auswählbar sein. Zur Sicherstellung dessen bieten sich die im Folgenden vorgestellten drei Vorgehensweisen an, die anhand der Fig. 2 erläutert werden.
  • Fig. 2 zeigt eine weitere Schaltungskomponente 1 mit auf einem FPGA ausführbaren Operationen links unten, die zu vier bestehenden links oben gezeigten Schaltungskomponenten 2 in eine FPGA Konfiguration 3 eingefügt werden soll. Die vier bestehenden Schaltungskomponenten 2 sind örtlich verteilt in der FPGA Konfiguration 3 angeordnet, also jeweils nicht auf eine Region des FPGA beschränkt. Zum Hinzufügen werden zwei grundsätzliche Schritte durchlaufen, so zunächst (a) Synthetisieren der weiteren Schaltungskomponente 1 zum Erhalten einer weiteren Netzliste der weiteren Schaltungskomponente 1, und (b) verteiltes Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente 2 in der FPGA Konfiguration 3.
  • Das Anordnen der weiteren Schaltungskomponente 1 erfolgt unter Beibehaltung einer Anordnung der wenigstens einen bestehenden Schaltungskomponente 2 in unbelegten Freiräumen der FPGA Konfiguration 3. Durch das Anordnen werden die wenigstens eine bestehende Schaltungskomponente 2 und die weitere Schaltungskomponente 1 in gleichen Partitionen der FPGA Konfiguration 3 platziert, so dass die wenigstens eine bestehende Schaltungskomponente 2 und die weitere Schaltungskomponente 1 partitionsfrei in der FPGA Konfiguration 3 angeordnet sind.
  • Zum Ausgestalten dieses Verfahrens existieren verschiedene Möglichkeiten.
  • Bei der sogenannten subtraktiven Methode wird ein fertig platzierter und gerouteter "Merged Component Stack" als Referenzdesign verwendet, in Fig. 2 rechts schematisch als FPGA Konfiguration 3 gezeigt. Alle Schaltungskomponenten des "Merged Component Stacks", die auch in einem aktuellen Design vorkommen, bleiben identisch erhalten, ungenutzte Schaltungskomponenten werden automatisch entfernt. Diese Methode kann Merkmales des sogenannten Incremental Compilation nutzen.
  • Bei der sogenannten additiven Methode wird mit Hilfe des "Merged Component Stacks" eine Bibliothek von fertig platzierten gerouteten einzelnen Schaltungskomponenten erstellt. Für alle im aktuellen Design verwendeten Schaltungskomponenten wird für den Build das fertige Placement & Routing der einzelnen Schaltungskomponenten aus der Bibliothek übernommen. Diese Methode kann Merkmale des sogenannten Hierarchical Design Flows nutzen. Aus dem Hierarchischem Design Flow ist das Locken von bereits platzierten und gerouteten Schaltungskomponenten mit Pblocks bekannt. Außerdem ist es erforderlich, neben dem Locken des Placements der Cells, LOC Constraints, der von den Cells verwendeten Basic Elements, BEL Constraints, und des Routings inklusive Setting der programmable Interconnects (PIPs), ROUTE_FIXED Constraints, zusätzlich die Pins der Basic Elements zu locken, LOCK PINS Constraints.
  • Die sogenannte Constraints Methode ist die einfachste Methode, da nicht die Schaltungskomponenten fertig platziert und geroutet verwendet werden, sondern nur deren Constraints, um ein identisches Place & Route zu erzwingen. Diese Methode kann mit Hilfe des "Merged Component Stacks" eine Constraints Bibliothek erstellen, die neben der Beschreibung der Funktionalität in einer synthetisierten Netzliste oder einer Sprache wie z.B. VHDL oder Verilog oder einer graphischen Modellierung der Schaltungskomponente, nur deren Constraints enthält.
  • Das Erstellen einer Bibliothek von Schaltungskomponenten beinhaltet folgende Schritte: Bei der subtraktiven und additiven Methode erfolgt zunächst ein inkrementelles Hinzufügen der weiteren Netzliste bei gesperrter wenigstens einer bestehenden Schaltungskomponente 2. Bei der subtraktiven Methode wird sodann die wenigstens eine bestehende Schaltungskomponente 2 entfernt, wobei die weitere Schaltungskomponente 1 gesperrt wird. Bei der Constraints Methode erfolgt zunächst das Sperren der weiteren Schaltungskomponente 1, und sodann das Exportieren der Anordnung der weiteren Schaltungskomponente 1 zur Berücksichtigung beim Hinzufügen einer noch weiteren Schaltungskomponente 1. Zuvor erfolgt ein Einlesen der wenigstens einen bestehenden Schaltungskomponente 2 einschließlich der wenigstens einen bestehenden Netzliste. Nicht verwendete Schaltungskomponenten können aus der Anordnung der weiteren Schaltungskomponente 1 zusammen mit der wenigstens einen bestehenden Schaltungskomponente 2 entfernt werden.
  • Zum Erstellen einer weiteren FPGA Schaltungskomponente 1 wird bei der subtraktiven Method zunächst die weitere Schaltungskomponente 1 synthetisiert, wobei die weitere Schaltungskomponente 1 als dediziertes Objekt Out of Context, OOC, synthetisiert wird. Die Synthese erfolgt in einem festgelegten Wrapper, damit ein Netzlistenpfad der weiteren Schaltungskomponente 1 immer identisch ist. Sodann wird die weitere Netzliste der weiteren weitere Schaltungskomponente 1 exportiert, um diese als Netzlistenbibliothek zu erhalten. Zum Implementieren (Place & Route) der weiteren Schaltungskomponente 1 wird diese zusammen mit einem Wrapper und allen schon bestehenden Schaltungskomponenten 2 platziert und gerouted. Dabei wird das Placement und Routing aller schon bestehenden Schaltungskomponenten 2 gelockt und nur die neue Netzliste inkrementell hinzugefügt.
  • Die im Folgenden mehrfach exemplarisch verwendete Syntax entspricht dem FPGA Tool Xilinx Vivado, ist somit in ihrer Explizität produkt- und versionsgebunden, in ihrer Implizität aber hinreichend selbstsprechend. read _ checkpoint incremental < design _ of _ merged _ component _ stack > fix _ reuse place _ design
    Figure imgb0001
    route _ design
    Figure imgb0002
  • Als Ergebnis erhält man eine neue FPGA Konfiguration 3, in dem alle bestehenden Schaltungskomponenten 2 einschließlich der weiteren Schaltungskomponente 1 enthalten sind.
  • Bei der Additiven Methode wird die weitere Schaltungskomponente 1 zunächst analog zur subtraktiven Methode synthetisiert und dann ebenso analog zur subtraktiven Methode implementiert. Sodann werden alle anderen Schaltungskomponenten 2 aus dem platzierten und gerouteten Design entfernt durch:
    1. 1. Locken des Placements und Routings der weiteren Schaltungskomponente 1. lock _ component < netlist _ path _ of _ component _ in _ wrapper >
      Figure imgb0003
    2. 2. Sequentielles Entfernen der Netzlisten aller alten Schaltungskomponenten 2. remove _ net < netlist _ paths _ of _ all _ other _ component _ in _ wrapper >
      Figure imgb0004
      remove _ cell < netlist _ paths _ of _ all _ other _ component _ in _ wrapper >
      Figure imgb0005
    3. 3. Platzieren des Gesamtdesigns, wobei das Placements der weiteren Schaltungskomponente 1 beibehalten und alle anderen nicht verwendeten Schaltungskomponenten entfernt werden, da sie keine Entsprechung in der Netzliste des zu platzierenden Designs haben. place _ design unplace
      Figure imgb0006
      place _ design
      Figure imgb0007
    4. 4. Routen des Gesamtdesigns, wobei das Routing der weiteren Schaltungskomponente 1 beibehalten und alle anderen nicht verwendete Routen der Schaltungskomponenten entfernt werden, da sie keine Entsprechung in der Netzliste des zu routenden Designs haben. route _ design unroute
      Figure imgb0008
      route _ design
      Figure imgb0009
    5. 5. Abspeichern des Checkpoints der weiteren Schaltungskomponente 1.
  • Bei der der Constraints Methode findet die Synthese analog zur additiven und/oder subtraktiven Methode jedoch ohne Netzlistenexport statt. Aus einem fertig platzierten Design, das auch aus mehreren Schaltungskomponenten bestehen kann, beispielsweise einem "Merged Component Stack", werden nicht die kompletten Schaltungskomponenten exportiert, sondern nur deren Constraints durch:
    1. 1. Locken des Placements und Routings der weiteren Schaltungskomponente 1. lock _ component < netlist _ path _ of _ component _ in _ wrapper >
      Figure imgb0010
    2. 2. Export des Placement & Routing der weiteren Schaltungskomponente 1. write _ xdc type physical cell < netlist _ path _ of _ component _ in _ wrapper > compo - nent _ physical . xdc
      Figure imgb0011
  • Um mit diesem "(Merged) Component Stack", siehe Fig. 2 rechts, auch vereinfacht FPGA Konfiguration 3 genannt, so zu arbeiten, dass die vorhandenen Schaltungskomponenten 2 als fertig platzierte & geroutete Bibliothekselemente genutzt werden können, von denen nicht immer alle in einem FPGA verwendet werden müssen, gibt es in analoger Weise drei mögliche Vorgehensweisen:
    Bei der subtraktiven Methode findet zunächst eine Synthese einschließlich Erstellen eines VHDL Codes beispielsweise eines Kundendesign oder einer Firmware statt, bei der Schaltungskomponenten aus der "Merged Component Stack" Bibliothek als Black Boxen verwendet werden können. Das Erstellen kann unter Zuhilfenahme eines Tools zur Generierung von VHDL Code aus einer graphischen Modellierungsumgebung oder einer Hochsprache wie beispielsweise C erfolgen. Im VHDL Code werden nur Entities d.h. Schnittstellendefinitionen der verwendeten Schaltungskomponenten eingebunden, was in einem festgelegten Wrapper erfolgt, damit ein Netzlistenpfad der Schaltungskomponente des Components Stacks identisch ist. Im Ergebnis bleiben die einzelnen Schaltungskomponenten in der Gesamtnetzliste erhalten, werden aber als Black Boxen behandelt.
  • Beim Ausführen der Synthese werden die Netzlisten der verwendeten Schaltungskomponenten aus der Netzlistenbibliothek des "Merged Component Stacks" hinzugefügt, damit bei einer späteren inkrementellen Implementierung die Netzliste des "Component Stack" Elements des neuen Designs als identisch zur Netzliste in der "Merged Component Stack" Referenz erkannt wird. Konkret wird für jede Schaltungskomponente einzeln ausgeführt: read _ checkpoint < synthesized _ component _ checkpoint _ filename >
    Figure imgb0012
  • Im Rahmen der Implementierung, Place & Route, werden die gesamten implementierten "Merged Component Stacks" als Referenz eingelesen. Ebenso wird die Netzliste des "Merged Components Stacks" geladen, um verwendete Schaltungskomponenten des "Merged Component Stacks" in den Netzlisten des Kundendesign und/oder der Firmware wiederzufinden. Für die verwendeten Schaltungskomponenten wird das vorhandene Placement & Routing des Referenzdesigns ("Merged Component Stack") verwendet: read _ checkpoint incremental < design _ of _ merged _ component _ stack > fix _ reuse
    Figure imgb0013
  • Das Gesamtdesigns wird unter Beibehaltung des gelockten Placements der Schaltungskomponenten des "Merged Component Stacks" plaziert. Nicht verwendete Schaltungskomponenten des "Merged Component Stacks" werden entfernt, da sie keine Entsprechung in der Netzliste des zu platzierenden Designs haben:
  • place_design
  • Das Routing des Gesamtdesigns erfolgt unter Beibehaltung des Routings der Schaltungskomponenten des "Merged Component Stacks". Das Routing zu nicht Schaltungskomponenten des "Merged Component Stacks" wird entfernt, da es keine Entsprechung in der Netzliste des zu routenden Designs hat.
  • route design
  • Bei der additiven Methode erfolgt zunächst ebenso die Synthese, analog zur subtraktiven Methode, und sodann die Implementierung, Place & Route. Zunächst werden die einzelnen benötigten Schaltungskomponenten des "Component Stacks" eingelesen. Für die verwendeten Schaltungskomponenten wird das vorhandene Placement & Routing wiederverwendet. Für jede Schaltungskomponente wird einzeln ausgeführt: read _ checkpoint cell < netlist _ path _ of _ component _ in _ wrapper > < implemen - ted _ component _ checkpoint _ filename > strict
    Figure imgb0014
  • Sodann werden das Placement und Routing der verwendeten eingelesenen Schaltungskomponenten gelockt. Für jede Schaltungskomponente wird einzeln ausgeführt: lock _ component < netlist _ path _ of _ component _ in _ wrapper >
    Figure imgb0015
  • Das Gesamtdesigns wird unter Beibehaltung des Placements der einzelnen Schaltungskomponenten des "Component Stacks" plaziert:
  • place_design
  • Schließlich erfolgt das Routing des Gesamtdesigns unter Beibehaltung des Routings der einzelnen Schaltungskomponenten des "Component Stacks":
  • route_design
  • Bei der Constraints Methode wird zunächst ebenso die Synthese analog zur additiven und subtraktiven Methode durchgeführt. Bei der Implementierung, Place & Route, werden zunächst die Constraints der einzelnen benötigten Schaltungskomponenten des "Component Stacks" eingelesen. Für die verwendeten Schaltungskomponenten wird das vorhandene Placement & Routing wiederverwendet. Für jede Schaltungskomponente wird einzeln ausgeführt:
  • read_xdc component_physical.xdc
  • Sodan wird das gesamte Design plaziert, wobei das Placement der einzelnen Schaltungskomponenten des "Component Stacks" durch die Constraints erzwungen wird.
  • place_design
  • Schließlich wird das gesamte Design geroutet, wobei das Routing der einzelnen Schaltungskomponenten des "Component Stacks" durch die Constraints erzwungen wird.
  • route_design
  • Durch Verwendung eines solchen "Component Stacks" als FPGA Konfiguration 3 ist ein Betrieb von abgesicherten (Firmware-)Schaltungskomponenten 1, 2 in veränderlicher FPGA Logik möglich. Neue Funktionen mit auf dem FPGA ausführbaren Operationen müssen nur einmalig und nicht jedes Mal getestet werden, wenn eine weitere Schaltungskomponente 1 hinzukommt oder eine bestehende Schaltungskomponente 2 verändert wird. Mit der vorgeschlagenen Lösung ist auf Basis des "Component Stacks" ein abgesicherter Betrieb von bestehenden Schaltungskomponenten, so beispielsweise auch "Standard I/O" Kanalfunktionalitäten zusammen mit beispielsweise veränderlicher Kunden FPGA Logik in einem FPGA möglich, wie in Fig. 3 dargestellt. Diese wahlweise exklusive Verwendung von FPGA I/O Kanälen für z.B. bestehende Standard I/O Schaltungskomponenten/Funktionalität wie z.B. eine PWM oder eine Resolverfunktionalität, die somit über ein Echtzeitnetzwerk einer Prozessor des Simulation bereitgestellt werden können, oder eben der Kunden FPGA Logik, trägt in Produkten der Firma dSPACE den Namen "Flexible I/O". Werden I/O Kanäle von Kunden FPGA Logik benutzt, stehen sie nicht für Standard I/O Komponenten zur Verfügung, diese Schaltungskomponenten müssen folglich auch nicht in der FPGA Konfiguration enthalten sein. Für Flexible I/O wird jede Standard I/O Kanalfunktionalität als eine Schaltungskomponente des "Component Stacks" realisiert. Es kann sowohl die additive, die subtraktive, als auch die Constraints Methode verwendet werden.
  • Beispielsweise kann ein Kunde, der sein FPGA Modell graphisch modelliert, bei jedem FPGA Build das gesamte Flexible I/O Framework mit aufbauen. Das Framework sorgt beispielsweise für eines Anbindung des FPGA Kundenmodells an den Kommunikationsbus und I/O und beinhaltet auch den Wrapper zwischen Kundenmodell und Framework Schaltungskomponenten. Spricht der Kunde die I/O Kanäle nicht direkt aus dem FPGA Modell an, können diese Kanäle von im FPGA implementierten Standard I/O Funktionen verwendet werden, wie in Fig. 3 angedeutet. Die Standard I/O Funktionen werden vom CPU Modell auf dem Echtzeitprozessor, also nicht vom FPGA Modell verwendet.
  • Für den FPGA Build werden neben dem FPGA Modell die Netzlisten des Flexible I/O Frameworks verwendet. In dem Framework sind die Standard I/O Kanalfunktionalitäten für die "Component Stack" basierte Synthese als Black Boxen definiert. Der Rest des Framework kann in der Synthese weiterhin dehierarchisiert und optimiert werden. Die Implementierung läuft analog wie zuvor beschrieben. Bei der additiven bzw. der Constraints Methode wird jeweils ein Constraint für das Locken des Placements & Routings für die im Kunden FPGA Modell genutzten Standard I/O Funktionalitäten und/oder Schaltungskomponenten angewendet.
  • Der Austausch einer Komponente der Kunden FPGA Konfiguration gegen eine getestete neue Version mit festem Placement ist in Fig. 4 dargestellt. Die Kundenlogik wird um die abgesicherten bestehenden Schaltungskomponenten 2 neuplatziert, wodurch die Funktionalität der weiteren Schaltungskomponente 1 gewährleistet ist. Auf dieselbe Weise kann auch eine neuere Version ("Communication Controller v2") einer Standard I/O Kanalfunktionalität ("Communication Controller v1") in einem FPGA mit veränderlicher Logik, wie beispielsweise bei Flexible I/O ausgetauscht werden, wobei der Austausch sowohl mit der additiven als auch der subtraktiven Methode erfolgen kann.
  • Die beschriebenen Ausführungsbeispiels sind lediglich Beispiele, die im Rahmen der Ansprüche auf vielfältige Weise modifiziert und/oder ergänzt werden können. Jedes Merkmal, das für ein bestimmtes Ausführungsbeispiel beschrieben wurde, kann eigenständig oder in Kombination mit anderen Merkmalen in einem beliebigen anderen Ausführungsbeispiel genutzt werden. Jedes Merkmal, dass für ein Ausführungsbeispiel einer bestimmten Kategorie beschrieben wurde, kann auch in entsprechender Weise in einem Ausführungsbeispiel einer anderen Kategorie eingesetzt werden. B ezugszei chenli ste
    Weitere Schaltungskomponente 1
    Bestehende Schaltungskomponente 2
    FPGA Konfiguration 3

Claims (14)

  1. Verfahren zum Hinzufügen einer weiteren Schaltungskomponente (1) mit auf einem FPGA ausführbaren Operationen zu einer FPGA Konfiguration (3), wobei
    die FPGA Konfiguration (3) bereits wenigstens eine in der FPGA Konfiguration (3) örtlich verteilt angeordnete bestehende Schaltungskomponente (2) mit auf dem FPGA ausführbaren Operationen aufweist, mit den Schritten:
    Synthetisieren der weiteren Schaltungskomponente (1) zum Erhalten einer weiteren Netzliste, und
    verteiltes Anordnen der weiteren Netzliste unter Berücksichtigung der wenigstens einen bestehenden Schaltungskomponente (2) in der FPGA Konfiguration (3).
  2. Verfahren nach dem vorhergehenden Anspruch, wobei das Anordnen den Schritt umfasst:
    Inkrementelles Hinzufügen der weiteren Netzliste bei gesperrter wenigstens einer bestehenden Schaltungskomponente (2).
  3. Verfahren nach einem der vorhergehenden Ansprüche, mit dem Schritt nach dem Anordnen:
    Entfernen der wenigstens einen bestehenden Schaltungskomponente (2).
  4. Verfahren nach dem vorhergehenden Anspruch, wobei das Entfernen die Schritte umfasst:
    Sperren der weiteren Schaltungskomponente (1), und
    sequentielles Entfernen wenigstens einer bestehenden Netzliste der wenigstens einen bestehenden Schaltungskomponente (2).
  5. Verfahren nach dem vorhergehenden Anspruch 1, mit den Schritten:
    Sperren der weiteren Schaltungskomponente (1), und
    Exportieren der Anordnung der weiteren Schaltungskomponente (1) zur Berücksichtigung beim Hinzufügen einer noch weiteren Schaltungskomponente (1).
  6. Verfahren nach einem der vorhergehenden Ansprüche, mit dem Schritt:
    Einlesen der wenigstens einen bestehenden Schaltungskomponente (2) einschließlich der wenigstens einen bestehenden Netzliste, und/oder
    Entfernen nicht verwendeter Schaltungskomponenten aus der Anordnung der weiteren Schaltungskomponente (1) zusammen mit der wenigstens einen bestehenden Schaltungskomponente (2).
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anordnen der weiteren Schaltungskomponente (1) unter Beibehaltung einer Anordnung der wenigstens einen bestehenden Schaltungskomponente (2) erfolgt.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anordnen in durch die wenigstens eine bestehende Schaltungskomponente (2) unbelegten Freiräumen der FPGA Konfiguration (3) erfolgt.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei durch das Anordnen die wenigstens eine bestehende Schaltungskomponente (2) und die weitere Schaltungskomponente (1) in gleichen Partitionen der FPGA Konfiguration (3) platziert sind und/oder die wenigstens eine bestehende Schaltungskomponente (2) und die weitere Schaltungskomponente (1) partitionsfrei in der FPGA Konfiguration (3) angeordnet sind.
  10. Verfahren nach einem der vorhergehenden Ansprüche, mit dem Schritt:
    Einzelnes Testen der wenigstens einen bestehenden Schaltungskomponente (2) und der weiteren Schaltungskomponente (1).
  11. Verfahren nach einem der vorhergehenden Ansprüche, aufweisend eine Mehrzahl bestehender unter jeweiliger Berücksichtigung anderer bestehender Schaltungskomponenten verteilt angeordneter Schaltungskomponenten auf der FPGA Konfiguration (3) und/oder umfassend den Schritt:
    Anordnen einer Mehrzahl weiterer Schaltungskomponenten.
  12. Verfahren nach einem der vorhergehenden Ansprüche, aufweisend eine Mehrzahl bestehender unter jeweiliger Berücksichtigung anderer bestehender Schaltungskomponenten verteilt angeordneter Schaltungskomponenten auf der FPGA Konfiguration (3) und umfassend den Schritt:
    sequentielles Entfernen mindestens einer bestehenden Schaltungskomponente (2) aus der FPGA Konfiguration (3) und Ersetzen der entfernten Schaltungskomponente durch eine andere Version der Schaltungskomponente, die unter Berücksichtigung aller anderen bestehenden Schaltungskomponenten (2) erstellt wurde.
  13. Verfahren nach dem vorhergehenden Anspruch, wobei die FPGA Konfiguration (3) wenigstens eine verteilt angeordnete weitere Schaltungskomponente (1) aufweist, die sequentiell entfernt wird und deren andere Version in Freiräume insbesondere der entfernten Schaltungskomponente (1) oder über alle vorhandenen Freiräume angeordnet wird.
  14. Nichtflüchtiges, computerlesbares Speichermedium mit darauf abgespeicherten Befehlen, die bei ihrer Ausführung auf einem Prozessor ein Verfahren nach einem der vorhergehenden Ansprüche bewirken.
EP22194640.3A 2021-09-10 2022-09-08 Verfahren zum hinzufügen einer weiteren schaltungskomponente Pending EP4148613A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021123496.4A DE102021123496A1 (de) 2021-09-10 2021-09-10 Verfahren zum Hinzufügen einer weiteren Schaltungskomponente

Publications (1)

Publication Number Publication Date
EP4148613A1 true EP4148613A1 (de) 2023-03-15

Family

ID=83271158

Family Applications (1)

Application Number Title Priority Date Filing Date
EP22194640.3A Pending EP4148613A1 (de) 2021-09-10 2022-09-08 Verfahren zum hinzufügen einer weiteren schaltungskomponente

Country Status (4)

Country Link
US (1) US20230082540A1 (de)
EP (1) EP4148613A1 (de)
CN (1) CN115796105A (de)
DE (1) DE102021123496A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200134108A1 (en) * 2018-10-26 2020-04-30 The Regents Of The University Of California Structural Matching for Fast Re-synthesis of Electronic Circuits
US20210256190A1 (en) * 2020-02-18 2021-08-19 Dspace Digital Signal Processing And Control Engineering Gmbh Method, computer-based system and computer program product for planning partitions for a programmable gate array

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200134108A1 (en) * 2018-10-26 2020-04-30 The Regents Of The University Of California Structural Matching for Fast Re-synthesis of Electronic Circuits
US20210256190A1 (en) * 2020-02-18 2021-08-19 Dspace Digital Signal Processing And Control Engineering Gmbh Method, computer-based system and computer program product for planning partitions for a programmable gate array

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
POSSIGNOLO RAFAEL TRAPANI RPOSSIGN@UCSC EDU ET AL: "SMatch Structural Matching for Fast Resynthesis in FPGAs", DESIGNING INTERACTIVE SYSTEMS CONFERENCE, ACM, 2 PENN PLAZA, SUITE 701NEW YORKNY10121-0701USA, 2 June 2019 (2019-06-02), pages 1 - 6, XP058637289, ISBN: 978-1-4503-5850-7, DOI: 10.1145/3316781.3317912 *

Also Published As

Publication number Publication date
DE102021123496A1 (de) 2023-03-16
CN115796105A (zh) 2023-03-14
US20230082540A1 (en) 2023-03-16

Similar Documents

Publication Publication Date Title
DE60116769T2 (de) Verfahren und system zur hierarchischen metallenden-, einschliessungs- und belichtungsprüfung
EP2945083B1 (de) Verfahren zur automatisierten erstellung einer netzliste eines fpga-programms
DE112015002183T5 (de) Computerimplementiertes System und Verfahren zum Übersetzen von Verifizierungs-Befehlen eines elektronischen Designs
DE102005014532A1 (de) Mischen von Infrastruktur in einer Entwicklungsumgebung
DE10025583A1 (de) Verfahren zur Optimierung integrierter Schaltungen, Vorrichtung zum Entwurf von Halbleitern und Programmobjekt zum Entwerfen integrierter Schaltungen
EP2799983B1 (de) Flexible Aufteilung der I/O Kanäle einer Hardware Komponente
EP2765528A1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE102014119025A1 (de) Integriertes schaltungsdesign ohne mehrfachstrukturierungs-konflikte
DE4211162C2 (de) Hardware-Emulationssystem
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
WO2005022629A2 (de) Verfahren zum entwurf von integrierten schaltkreisen mit ersatz-logikgattern
EP4148613A1 (de) Verfahren zum hinzufügen einer weiteren schaltungskomponente
EP2899652B1 (de) Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
DE102015221479A1 (de) Polymorphes schaltungssimulationssystem
EP2963541B1 (de) Implementierung einer Konstanten in FPGA-Code
DE102018217016A1 (de) Ein-Chip-System und Sicherheitsschaltung mit einem derartigen Ein-Chip-System
EP3812885A1 (de) Integrierte simulationscode- und produktionscodegenerierung
DE102004003092A1 (de) Verfahren zum Auflösen nicht richtig angepaßter Parameter bei einem rechnergestützten Entwurf für integrierte Schaltungen
DE112005002149T5 (de) Logisches Verifizierungsverfahren, logische Moduldaten, Vorrichtungsdaten und logische Verifizierungsvorrichtung
DE112013005783T5 (de) Mit Stromnetzwerksynthese (PNS) zur Stromversorgungsnetz(PG)-Justierung integriertes Modellieren
DE112013005831T5 (de) Netzlistenabstraktion
DE102009054567A1 (de) Verfahren und Vorrichtung zum Entwurf einer SEE-toleranten Schaltung
DE102020130212A1 (de) Verfahren zum deterministischen Clustering und Packing für Random-Logik auf programmierbaren integrierten Schaltungen
EP3869380A1 (de) Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen
EP3246832B1 (de) Verfahren zum schutz eines fpgas vor einer unautorisierten anwendung des rtl-quellcodes

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN PUBLISHED

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20230915

RBV Designated contracting states (corrected)

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR