
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
Bitte zögern Sie nicht, Pipelinec für Sie zum Laufen zu bringen! Immer auf der Suche nach Hilfe auch. -Julianisch
Erste Schritte
Beginnen Sie mit dem Wiki.
Was ist Pipelinec?
Eine C-ähnliche (1) Hardware-Beschreibung Sprache (HDL) (2) Hinzufügen von Synthese auf hoher Ebene (HLS) -ähnliche automatische Pipelination (3) als Sprachkonstrukt-/Compiler-Funktion.
- Nicht tatsächlich regulär C. kann aber teilweise von GCC/LLVM zur grundlegenden funktionalen Überprüfung/'Simulation' zusammengestellt werden. Erreichen Sie, wenn Sie daran interessiert sind, komplexere Sprachsyntax zu entwickeln!
- Kann Verilog/VHDL vernünftigerweise ersetzen. Der Compiler produziert synthetisierbare und menschlich lesbare+debuggable VHDL. Haken existieren zum Einsetzen von RAW VHDL / vorhandenen IP / Black -Boxen.
- Wenn eine Berechnung als reine Funktion ohne Nebenwirkungen (dh keine globalen/statischen Variablen) geschrieben werden kann, wird sie autopipeliert. Konzeptionell ähnlich wie Technologien wie die variable Latenzhyperpipelining von Intel und die Retiming-Optionen von Xilinx. Teilen Sie einige der Compiler -gesteuerten Pipelining -Designziele des XLS -Projekts von Google, der DFianthdl -Sprache und bestimmten CIRCT -Dialekten.
Was ist Pipelinec nicht?
- Hochstufige Synthese des beliebigen C -Codes mit einem globalen Speichermodell / Threads / etc:
- Ich kann für Sie keine "verschachtelten Schleifen zu einer Speicherarchitektur" durchführen.
- Kompiliertes C -basierter Hardware -Simulator:
- Nur Teile des Pipelinec -Code können von C -Compilern zusammengestellt und ausgeführt werden (werden gefördert).
- Aber ganzer Multi-Modul, Multi-Clock-Domain usw. ganze Designs können nicht einfach zusammengestellt und wie reguläre C-Programme ausgeführt werden.
- Meta-Programmier-Hardware-Generator (z. B. verwendet C-Typ-System und Präprozessor).
- Stitching -Tool automatisiert den Build -Fluss von Code/Modulen zu Bitstream:
- Tool automatisiert teilweise die Syntheseläufe, aber die Automatisierung zum endgültigen Bitstream bleibt dem Benutzer überlassen.
Kernfunktionen/Vorteile
Eine leicht verständliche Hardware -Beschreibung Sprache mit einem leistungsstarken Autopipelining -Compiler und wachsender Reihe von Hardware -Design -Funktionen im realen Leben.
- Eine vertraute C -Syntax, die viele HDL -Macken beseitigt, zu denen Anfänger (und Experten) zum Opfer fallen können (z.
- Kompatibel mit allen HDL -Simulatoren. Ex. Kann Modelsim in Sekunden gestartet und importiert menschlich lesbar+debuggierbares VHDL mit Arbeiten. Kann auch maßgeschneiderte ultraschnelle kompilierte C-basierte "Simulationen" herstellen. Die Konvertierung in Verilog ist auch bei Bedarf enthalten, dh für Verilator.
- Hilfreiches Timing -Feedback, das aus Synthese -Tool -Berichten abgeleitet wird, um eine kritische Pfadlogik zu identifizieren, die nicht automatisch pipeliert werden kann - insbesondere hilfreich für diejenigen, die neu in der digitalen Logikdesign sind.
- Integriert sich leicht in die Software -Seite C; hilfreiche integrierte Codegenerierung. (Beispiel für UN/Packungsstrukturen aus DE/serialisierten Byte-Arrays, wenn Sie Daten von Host <--> FPGA verschieben).
- Eine vollständige Hardware -Beschreibung Sprachersatz. Kann zunächst vorhandene VHDL/Verilog -Designs oder ein RAW -VHDL - nicht gezwungen, jederzeit die gesamte Sprache zu verwenden, zu starten.
- Global sichtbare Punkt-zu-Punkt-Drähte, Domänenübergänge mit mehreren Raten/Breiten und komplexe FSMs sind nur einige der wachsenden Liste der Kompositionsfunktionen, die von Hardware-Designanforderungen/-aufgaben im wirklichen Leben inspiriert sind.
- Automatische Pipelination als Merkmal des Compilers. Die grundlegende Verwendung des Tools kann darin bestehen, einzelne Pipelines zu generieren, um in vorhandene Designs an anderer Stelle zu fallen. Beseitigen Sie die Praxis der Pipelinierung von Logik von Hand = nicht tragbar (stützt sich auf Betriebsfrequenz und Teil).
Grundlegende Designelemente sind staatliche Maschinen/staatliche Elemente (Register, RAMs usw.), automatische staatenlose reine Funktionen und Verbindungen (Drähte, CDC, Async FIFOS usw.). Designs können so strukturiert werden, dass sie nach Bedarf wie "nach Bedarf sequentielle Prozesse/Threads kommunizieren" aussehen.
Durch das Isolieren der komplexen Logik in autopipelable Funktionen und das Schreiben von Literaluhr für Uhr -Hardware -Beschreibung müssen Pipelinec -Designs für jedes neue Zielgerät / Betriebsfrequenz nicht umgeschrieben werden. Die Hoffnung besteht darin, gemeinsame, hohe Leistung, Geräte -Agnostiker und Hardwaredesigns aufzubauen, die in einem bekannten und kraftvoll komponierbaren C -Sprach -Look beschrieben werden.
Für Software -Leute, die Pipelinec schreiben, sollten sich die Regeln des Puzzles verstecken/implizieren, wie Hardware -Konzepte ein Programmierpuzzle lösen. Für Hardware -Leute ist Pipelinec eine bessere Hardware -Beschreibung Sprache, die versucht, einen Mittelweg zwischen traditionellem RTL und HLS zu finden. Es ist meine Sprache der Wahl als FPGA -Ingenieur :).