Zum Hauptinhalt springen

Framework unerwarteter Anwendungsfall: FPGA Entwicklung

· 8 Minuten Lesezeit
Christian Rieger
Architekt für Innovation & Automatisierung

Dieser Artikel handelt vom kleinen Framework Desktop Computer und unserem ungewöhnlichen Experiment, den Framework Desktop Computer zur Entwicklung von FPGA (Field Programmable Gate Array) Anwendungen zu verwenden.

tipp

Dieser Artikel wurde ursprünglich auf Englisch verfasst. Sie lesen hier die übersetzte Version. Das englische Original finden Sie hier: Originalartikel lesen

Hintergrund

Digitale integrierte Schaltungen (IC) werden entworfen, indem ihre Logik mit einer Hardware Description Language (HDL) beschrieben wird. Die häufigste HDL ist Verilog. Sie wurde entwickelt, um die Logik eines IC zu modellieren.

Field Programmable Gate Arrays (FPGAs) werden verwendet, um die in Verilog beschriebene Logik zu simulieren. Die mit dem Verilog Modell entworfene Logik wird zu einer Bitdatei synthetisiert, die auf das FPGA geflasht werden kann.

Das FPGA besteht aus einer sehr grossen Anzahl von Lookup Tabellen, deren Werte in der Bitdatei enthalten sind. Die Synthese von Verilog zu einer Bitdatei ist sehr rechenintensiv, weil viele Optimierungen für Place und Route durchgeführt werden müssen.

Deshalb untersuchen wir die Fähigkeiten des Framework Desktop, diese Synthesen auszuführen.

Draufsicht auf das Framework / FPGA Setup. Mit AI (ChatGPT) nachbearbeitet. Foto: Autor.

Kooperation

Dieser Blogartikel ist eine Kooperation zwischen der RiKuWe GmbH und Doktoratsstudenten des TU Graz ISEC, die das FPGA Board und das Vivado Know how bereitgestellt haben.

Florian Hirner stellte das Wissen für das Vivado Software Setup und das Benchmarking bereit.

Selim Kirbiyik stellte ein Referenzsetup und das FPGA zur Verfügung, ein Varium C1100 von AMD/Xilinx.

Der Framework Desktop

Der Framework Desktop ist ein kleiner Desktop PC, hergestellt von Framework Computer, Inc.
Framework hat das Ziel, zuverlässige und reparierbare Computer mit erstklassiger Linux Unterstützung anzubieten.

Der Framework Desktop besitzt eine Strix Halo Ryzen AI Max+ 395 mit 128 GB Onboard Speicher.
Der RAM arbeitet mit 8000 MT/s und ist damit schneller als herkömmlicher steckbarer Arbeitsspeicher.

Trotz der beeindruckenden Spezifikationen von CPU und RAM ist vor allem ihre Kombination das Besondere am Framework Desktop, da Strix Halo grosse Teile des Systemspeichers der GPU zuweisen kann.

Eine GPU mit viel schnellem VRAM ermöglicht es uns, grosse Sprachmodelle (LLMs) mit vielen Parametern zu betreiben. Das Hosten grosser LLMs ist sonst meist nur mit teuren GPUs möglich.

Der Framework Desktop ermöglicht das kostengünstige Selbsthosting grosser LLMs.

RiKuWe Framework im täglichen Betrieb

In einer Welt, in der AI und LLMs immer mehr an Bedeutung gewinnen, können wir ihre Vorteile nicht einfach ignorieren und müssen ihre Leistungsfähigkeit nutzen.

Wie bereits erwähnt ist lokale Inferenz mit GPUs relativ teuer. Da wir damit nicht direkt Geld verdienen, haben wir bisher nicht investiert.

Der Framework Desktop bietet eine kostengünstige Alternative für lokale Inferenz.

Wir verwenden den auf llama.cpp basierenden Inferenzserver ollama, der mit Docker betrieben wird. Ollama auf dem Framework funktioniert hervorragend mit flash basierten Large Language Models. gpt-oss:120b läuft mit etwa 50 Tokens pro Sekunde.

Die etwa 100 GB verfügbarer geteilter VRAM bieten ausserdem ein sehr grosses Kontextfenster, was besonders für Programmieraufgaben wichtig ist.

Wir verwenden Ollama hauptsächlich, um automatisch verschiedenste Workflows, Error Logs, Support Tickets, SBOMs, Helm Charts, Deployment Manifeste und andere textbasierte Inhalte zu analysieren.

Lokale LLM Inferenz mit dem Framework Desktop und Ollama nutzt hauptsächlich die GPU, sodass die 16 CPU Kerne die meiste Zeit ungenutzt bleiben.

Um die 16 AMD Kerne besser zu nutzen, betreiben wir auf dem Framework Desktop auch eine KVM virtuelle Maschine mit dem Woodpecker CI Build Agent.

Unsere Ziele

Mit dem folgenden Setup wollten wir herausfinden, ob der Framework Desktop mit seiner Strix Halo Plattform für FPGA Entwicklung geeignet ist.

FPGA Entwicklung erfordert einen schnellen Computer mit viel schnellem Speicher.
üblicherweise wird dafür ein entfernter Server verwendet, der groß, laut und energieintensiv ist.

Entwicklung auf einem Remote Server ist unangenehm wegen der Latenz von Remote Desktop Anwendungen und dem ständigen Datentransfer zum und vom Server.

Der Framework Desktop vereint Leistung, Geschwindigkeit, Ruhe und Effizienz in einem einzigen kleinen Paket.

Es wäre ein großartiges Setup für FPGA Entwicklung, wenn wir nur einige Herausforderungen überwinden.

Herausforderungen

Das Gehäuse

Die größte Herausforderung ist der kleine Formfaktor des Framework Desktop. Gehäuse und Mainboard sind Mini ITX.

Das Gehäuse ist für viele größere FPGA Boards nicht geeignet, da diese zu lang und zu dick für das kleine Framework Gehäuse sind.

Um den Framework Desktop mit einem FPGA zu verwenden, müssen wir das Gehäuse umgehen, entweder indem wir es entfernen oder indem wir ein PCIe Riser Kabel verwenden, um das FPGA ausserhalb des Gehäuses anzuschliessen.

Für unser Experiment haben wir ein PCIe Riser Kabel verwendet.
Für eine dauerhafte Installation würde ich empfehlen, nur das Framework Desktop Mainboard zu kaufen und es mit einem Standard PC Gehäuse zu verwenden oder es als offene Workbench zu betreiben.

PCIe x16 -> PCIe x16 Riser. Foto: Autor.

PCIe

Eine weitere Herausforderung war der PCIe x4 Anschluss des Framework Desktop, da das FPGA nur in einen PCIe x16 Slot passt.

PCIe ist in sogenannte Lanes aufgeteilt. Jede Lane hat die gleiche Bandbreite.
Je mehr PCIe Lanes ein Gerät auf dem Mainboard nutzt, desto mehr Bandbreite steht für die Kommunikation zur Verfügung.

Obwohl das FPGA einen physischen PCIe x16 Anschluss hat, kann es auch mit deutlich geringerer Bandbreite betrieben werden, zum Beispiel mit einer PCIe x4 Verbindung.

Der Betrieb mit PCIe x4 ist für unseren Anwendungsfall vollkommen ausreichend, da wir keine höhere Bandbreite benötigten.

Das einzige Problem ist daher, dass der physische Anschluss des FPGA (x16) nicht in den PCIe Slot des Framework (x4) passt. Um dieses Problem zu umgehen haben wir einen x16 zu x4 PCIe Adapter verwendet.

PCIe x4 -> PCIe x16 Adapter. Foto: Autor.

Die Stromversorgung

Das FPGA benötigt einen 8 Pin PCIe Stromanschluss, aber das Netzteil des Framework Desktop besitzt keinen solchen Anschluss.

Wir verwenden daher ein weiteres PC Netzteil, um das FPGA mit Strom zu versorgen.

Ein PC Netzteil kann eingeschaltet werden, indem der PS ON Pin des ATX 24 Pin Steckers mit Masse verbunden wird.

Wenn das Netzteil eingeschaltet ist, verbinden wir es mit dem FPGA.

Es ist wichtig, das FPGA zuerst mit dem ausgeschalteten Framework zu verbinden, um eine gemeinsame Masseverbindung herzustellen.
Danach wird das FPGA vom zweiten Netzteil mit Strom versorgt.

Fest verdrahtetes Zusatznetzteil. Foto: Autor.

Das Setup

Hardware

Ein großer Teil der Setup Details wurde bereits in den Abschnitten zu den Herausforderungen beschrieben.

Die finale Hardware besteht aus einem Framework Desktop mit geöffnetem Seitenteil. Das FPGA ist über ein PCIe Riser Kabel mit einem PCIe x16 zu x4 Adapter verbunden.

Ein zweites Netzteil wird verwendet, um das FPGA zu betreiben. Es wird eingeschaltet, indem PS ON mit GND verbunden wird.

Das FPGA wird über den 8 Pin PCIe Anschluss des externen Netzteils versorgt.

Das FPGA besitzt ausserdem einen USB zu UART Konverter, der zum Debuggen verwendet werden kann. Dieser wurde über USB C zu USB A mit dem Framework Desktop verbunden.

Komplettes Hardware Setup: Framework Desktop oben, FPGA in der Mitte und Zusatznetzteil unten. Foto: Autor.

Software

Wir verwendeten Xubuntu Linux 25.10 mit Vivado 2022.2.

Wir haben Xubuntu verwendet, weil Ubuntu die von Vivado unterstützte Distribution ist und Xfce ressourcenschonender ist und sehr gut mit Vivado funktioniert.

Für andere Anwendungen würde ich persönlich niemals eine Ubuntu basierte Distribution verwenden.

Außerdem mussten wir darauf achten, einen Linux Kernel zu verwenden, der neu genug ist, um Strix Halo zu unterstützen, aber alt genug, um mit Vivado und den Xilinx PCIe Treibern zu funktionieren.

Wir verwendeten die Xilinx DMA Treiber, um über PCIe mit dem FPGA zu kommunizieren.

Die Xilinx DMA Treiber enthalten außerdem eine Reihe von Testscripten, um die PCIe Kommunikation mit dem FPGA zu testen.

Screenshot von Vivado mit dem Testterminal auf der linken Seite. Foto: Autor.

Wichtigste Erkenntnisse

Insgesamt war es eine sehr reibungslose Erfahrung. Wir hatten Glück mit der Xubuntu Version, sodass praktisch alles direkt funktionierte.

Wir beschreiben die Leistungswerte nicht im Detail, da das für die Synthese verwendete Verilog Projekt kein standardisierter Benchmark war.

Der Framework Desktop erreichte ähnliche Synthese und Implementierungsgeschwindigkeiten wie ein ähnlich bepreister Ryzen 9950X3D, war dabei aber leiser und energieeffizienter.

Für ein dauerhaftes Setup würde ich empfehlen, nur das Mainboard ohne Framework Gehäuse zu verwenden und ein generisches ATX Netzteil einzusetzen, sodass Mainboard und FPGA mit einem einzigen Netzteil betrieben werden können.