Die Verfügbarkeit kostengünstiger und großer FPGAs hat für die Entwickler von Embedded-Systemen ganz neue Möglichkeiten eröffnet, da vollständige Embedded Systeme, also Hardware und Software, innerhalb des programmierbaren Bereiches zusammengefasst werden können. Während die Software auf vertraute Art und Weise entwickelt wird, umfasst der Prozess der Erstellung von Embedded Hardware typischerweise die Arbeit mit einer HDL (Hardware Description Language) wie VHDL oder Verilog sowie die Anwendung gewisser Kenntnisse aus dem Bereich der zugrundeliegenden Hardwaretechnologie.
Bei der Entwicklung von Embedded Hardware mit derartigen Systemen und unter Verwendung eines weitgehend von der Chip Design-Branche übernommenen Design-Flows muss man sich zuerst spezielle Programmierfähigkeiten aneignen und mit einer hohen Designkomplexität zurechtfinden. Für Embedded System-Entwickler mit einem begrenzten Verständnis der zugrundeliegenden Hardwaretechnologie stellt eine HDL-Lösung eine beachtliche Hürde für das Design von Embedded Hardware dar.
Wie es sich auch in anderen Umgebungen für die Design-Erfassung gezeigt hat, sollten sich durch die Abstraktion eines komplexen Prozesses die notwendigen Vorteile ergeben, so dass mehr Ingenieure Embedded Hardware-Plattformen erstellen können. Im Gegensatz zu anderen Systemen, die hiervon profitieren, gibt es beim Entwicklungsprozess für Embedded Hardware jedoch einen entscheidenden Unterschied: dieser Prozess existiert nicht für sich allein, sondern ist eng mit anderen Teilen des Design-Prozesses verbunden.
In der Praxis bedeutet dies, dass die Embedded Hardware-Konfiguration direkt und unausweichlich mit der Software des Designs und der physischen Hardware verbunden ist. Ändert man z.B. den Typ des Embedded-Prozessors oder einen Peripherie-Funktionsblock, so wird sich dies höchstwahrscheinlich auf die Pin-Konfigurationen eines FPGA und die darauf laufende Embedded Software auswirken. Wie zu erwarten, gilt dies auch umgekehrt: der Wechsel eines Hardware-Bausteins wie z.B. eines FPGAs erzwingt auch Veränderungen im Embedded-Teil eines Designs sowie in der Embedded Software.
Es werden High-Level Design-Ansätze benötigt, um das Embedded Hardware Design zu einem zugänglichen und eingebundenen Teil der gesamten Produktentwicklungskette zu machen. Hier gibt es eine Reihe von Herangehensweisen, und ganz ähnlich wie bei der Einführung von High-Level Softwaresprachen wird auch hier die steigende Größe des Embedded Code durch leistungsfähigere und größere Bausteine ausgeglichen. Während die Einführung von Abstraktions- oder Translation-Layer den Prozess der Design-Erfassung benutzerfreundlicher und effizienter gestalten dürfte, bleibt die Systemintegration noch ein Thema für sich.
Nehmen wir z.B. ein High-Level Embedded Design-System, das auf einer Variante einer konventionellen Softwaresprache wie C basiert. Ein solches System bietet Softwareingenieuren mit grundlegendem Wissen im Bereich Hardwaredesign die Möglichkeit, die Embedded Hardware auf vertraute Art und Weise zu erstellen. Dies ist jedoch eine weitgehend separate Methodik für das Embedded Hardware Design, welche die gegenseitigen Abhängigkeiten des Designprozesses insgesamt ignoriert.