Export nach C++: eine einzelne Funktion, keine Klasse
← Alle Artikel

Export nach C++: eine einzelne Funktion, keine Klasse

5 Min

Eine Funktion, kein Simulator

Während die HDL-Exporteure eine Hardwarebeschreibung für ein Syntheseprogramm erzeugen, erzeugt der C++-Exporteur etwas, das direkt laufen soll: eine einzelne reine Funktion — bool boolflow(bool in_0, bool in_1, ...), oder eine, die eine kleine Outputs-Struktur zurückgibt, wenn es mehr als einen Ausgang gibt —, berechnet durch topologisches Sortieren des kombinatorischen Graphen der Schaltung, sodass jedes Gatter erst ausgewertet wird, nachdem alles, was es speist, ausgewertet wurde. Fügen Sie diese Funktion direkt in ein anderes C++-Programm ein, und sie verhält sich exakt wie die Schaltung, aus der sie stammt.

Auch eigenständig, über ein generiertes main()

Boolflow kann außerdem ein vollständiges, lauffähiges main() um dieselbe Funktion herum erzeugen — eines, das erschöpfend jede Eingabekombination durchsteuert und die entstehende Wahrheitstabelle ausdruckt —, nützlich, um zu bestätigen, dass der exportierte Code der Schaltung entspricht, bevor Sie ihn überhaupt irgendwo einbinden, ganz ohne zweites Werkzeug.

Auch PLM-Blöcke werden übersetzt

Anders als die HDL-Exporteure versteht der C++-Exporteur auch PLM-Blöcke: Welche Boolesche Formel auch immer Sie in die Konfiguration eines PLM eingegeben haben, wird direkt in einen entsprechenden C++-Ausdruck innerhalb der generierten Funktion übersetzt, statt als nicht unterstützt übersprungen zu werden.

Die ehrliche Einschränkung: kein Takt, kein Zustand

Der C++-Exporteur teilt dieselbe Beschränkung auf reine Kombinatorik wie die HDL-Exporteure — es gibt keine Klasse, keine Member-Variablen, keine step()- oder tick()-Methode, nichts, das sich an einen vorherigen Takt erinnert. Eine Schaltung aus Flip-Flops, REG4, SHIFT4 oder irgendeinem Zähler wird exportiert, wobei diese Elemente übersprungen werden, genau wie bei Verilog und VHDL; das eigentliche Alleinstellungsmerkmal hier ist, eine schlichte, einbettbare Funktion für kombinatorische Logik zu sein, kein vollständiges Softwaremodell eines sequentiellen Entwurfs.

Ihre Schaltung nach C++ exportieren →