CoSynth Synthesizer

Mit dem CoSynth Synthesizer bietet CoSynth ein Werkzeug für die Erzeugung von FPGA-beschleunigten Systemen direkt aus existierenden Softwarealgorithmen.

Wenn der Embedded-PC nicht mehr genug Leistung bringt, bleiben zwei Möglichkeiten: Eine teure und energie-hungrige schnelle CPU als Ersatz, oder der Einsatz eines Coprozessors wie DSP, GPU oder FPGA. Da alle Spezialprozessoren auch eine spezielle Programmierung benötigen, waren bislang hierfür hohe Kosten für Experten oder fertig eingekaufte Lösungen fällig.

Mithilfe des CoSynth Synthesizer kann nun die FPGA-Entwicklung wie bisher im Software-Entwicklungsprozess erfolgen. In C/C++ geschriebene Programme werden mit der C++-Bibliothek SystemC für die parallele Verarbeitung auf den FPGAs vorbereitet. Das endgültige Modell ist so weiterhin als reine Softwarelösung auf dem Entwicklungsrechner simulierbar und mit den vorhandenen Software-Werkzeugen zu testen und zu optimieren. Schließlich erzeugt der CoSynth Synthesizer automatisch aus der Softwarebeschreibung die für den Einsatz auf dem FPGA notwendige Hardwarebeschreibung. Funktion und Zeitverhalten werden exakt reproduziert, so dass die zuvor in Software getesteten Eigenschaften des Systems auch in der Hardware erhalten bleiben.

Mit den mitgelieferten IP Cores lassen sich die auf den FPGAs vorhandenen Ressourcen optimal in das System integrieren. So werden lokale Speicher und Busse, aber auch Schnittstellen zu CPUs und weitere I/Os auf der Softwareebene eingebunden und bis in die Hardware exakt abgebildet. Durch diese wird Hardware/Software-Entwicklung deutlich effizienter, zeitsparender und weniger fehleranfällig. Entwicklungszeiten reduzieren sich auf weniger als ein Viertel im Vergleich zu herkömmlichen Entwurfsprozessen. Insbesondere die Übertragung von existierenden Softwarelösungen in hardwarebeschleunigte Systeme profitiert von diesem Vorgehen. Hauptanwendungsgebiete sind die Automobilbranche, Industrieautomatisierung, Luft- und Raumfahrt sowie Medizintechnik.

CoSynth Synthesizer ist für den Einsatz in ihren Entwicklungsabteilungen lizenzierbar. Er ist darauf ausgelegt, sich in existierende Entwurfsprozesse zu integrieren anstatt sie zu ersetzen. So kann er z.B. zusammen mit Programmen der Firmen Xilinx, Altera und Synopsys eingesetzt werden. Der Entwurfsprozess von CoSynth basiert auf einem virtuellen Software-Prototyp des Gesamtsystems in den Programmiersprachen C++ und SystemC. Das firmeneigene Synthesewerkzeug erzeugt aus dem Softwaremodell automatisch die für die Weiterverarbeitung nötige Hardwarebeschreibung sowie die Schnittstellen zwischen Hardware- und Software. Die Grundlagen der CoSynth-Entwicklungsmethodik wurden im Rahmen mehrerer Europäischer Forschungsprojekte entwickelt. Sie wurde bereits erfolgreich bei Industriepartnern aus den Bereichen Automobil- und Telekommunikations-Technik eingesetzt. Die wesentlichen Schwerpunkte der Technologie sind:

  • Gleichzeitige Entwicklung von Hardware und Software in gemeinsamen Modellen
  • Einsatz von Software-Entwurfsmethoden für die Hardware-Entwicklung
  • Nutzung von C-basierten Sprachen (C/C++, SystemC, TLM)
  • Automatische Generierung von Hardware/Software-Schnittstellen
  • Automatische Erzeugung von Hardware-Implementierungen (High Level-Synthese)
  • Einfache Integration von Legacy IP-Cores (VHDL und Verilog)
  • Schnelle Exploration von HW/SW-Partitionierungen und Kommunikationsinfrastruktur