1 / 19

Automatische Code-Generierung aus Simulink-Modellen

Automatische Code-Generierung aus Simulink-Modellen. HK Eingebette Systeme - Produktivität und Qualität Prof. Dr. Holger Schlingloff Referent: Martin Werner. Agenda. Motivation – Warum automatisch Code generieren? Funktionsweise und Besonderheiten

lora
Download Presentation

Automatische Code-Generierung aus Simulink-Modellen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Automatische Code-Generierung aus Simulink-Modellen HK Eingebette Systeme - Produktivität und Qualität Prof. Dr. Holger Schlingloff Referent: Martin Werner

  2. Agenda Motivation – Warum automatisch Code generieren? Funktionsweise und Besonderheiten Optimierungsmöglichkeiten der Code Generierung Bewertung: Pro und Contra

  3. Definition „automatische Code Generierung“ Was ist automatische Code Generierung? • Umfasst das Generieren von Quellcode einer High-Level Programmier-sprache (C, C++ etc.) oder einer Hardware Beschreibungssprache (VHDL, Verilog etc.) aus Metainformationen • Diese Metainformationen können unter anderem UML-Diagramme, Datenflussdiagramme etc. sein • Grundprinzip basiert auf „Model Driven Architecture“ (MDA) • Die dafür eingesetzten Werkzeuge heißen „Generatoren“ • Simulink bietet hierfür den „Real-Time Workshop“, den „Real-Time Workshop Embedded Coder“, den „Stateflow Coder“und den „Simulink HDL Coder“ an • Der generierte Code kann dann mit Hilfe eines „normalen“ Compilersin Byte-Code der Zielarchitektur umgewandelt werden • Im Falle des HDL Coders ist ein Synthese-Werkzeug (Synopsys, ISE etc.) nötig, um die entsprechende Hardware zu erzeugen

  4. Die automatische Code Generierung soll die Produktionskosten und die Entwicklungszeitverringern und gleichzeitig die Qualität des Codes im Vergleich zur manuellen Implementierung verbessern Wofür braucht man die automatische Code Generierung? Warum möchte man Code automatisch generieren lassen? Vorurteile • Automatische Code Generierung ermöglicht den Entwurf von Software/Hardware auf der Spezifikationsebene • Der höhere Abstraktionsgrad von Modellen bietet einebessere Übersicht und schnellere Umsetzung derSpezifikationen • Simulation des Modells ermöglicht Test des Designsnoch vor der Implementierung • Durch die autom. Code Generierung wird das Rapid-Prototyping beschleunigt • Sofern das Modell korrekt ist und der Generator zuverlässigarbeitet, entspricht der generierte Code den Spezifikationenund Implementierungsfehler werden so reduziert • Performance des generierten Codes ist schlecht • Integration von Legacy Codeist schwierig • Der generierte Code ist schlecht lesbar • Der generierte Code ist schlecht portierbar • Mächtigkeit der Modelle, aus denen sich Code generierenlässt, ist eingeschränkt

  5. Agenda Motivation – Warum automatisch Code generieren? Funktionsweise und Besonderheiten Optimierungsmöglichkeiten der Code Generierung Bewertung: Pro und Contra

  6. Vorraussetzungen für die Code Generierung Voraussetzungen • Der Model Advisor gibt Aufschluss darüber, ob aus dem Modell Code generiert werden kann • Folgende Dinge sollten beachtet werden: • Der Solver muss auf „Fixed-Step“ eingestellt werden • Man sollte Blocks nicht verwenden, die nicht in Codeübersetzt werden können (z.B. MATLAB Fcn block) • Es wird empfohlen die Zielplattform anzugeben, damitder Code möglichst optimal angepasst werden kann • Je nach Zielplattform sollten die Datentypen ausgewählt werden (Optimierungspotential!) • Vermeiden von teuren floating-point Datentypen, wenn möglich • Bei der Verwendung von Zeitabhängigen Blocks sollteeine Lebensdauer des Programms angegeben werden, damit der Generator ausreichend große Zähler generiert (sonst Gefahr eines frühzeitigem Overflows!)

  7. Mögliche Zielplattformen Simulink Generatoren Real-Time Workshop RTW Embedded Coder Stateflow Coder HDL Coder C / C++ VHDL / Verilog C - Compiler Synthese Tool FPGA ASIC AMD K5 ARM AVR Intel x86 SPARC TI C6000 …

  8. Workflow der Code Generierung Ausführbare Datei erzeugen Vom Modell zum Prototypen

  9. Einbindung von Legacy Code Workflow für das Einbinden von Legacy Code Definition: Legacy Code • Ist bestehender Code, welcher ausführlich getestet wurde und bereits viele Jahre im Einsatz ist • Oftmals auch in anderen (alten) Programmier-sprachen verfasst(Fortran, Ada, etc.) • Matlab Konsolen Befehle: • f1 = legacy_code('initialize') • f1.SFunctionName = 'ex_sfun_doubleit'; f1.OutputFcnSpec = 'double y1 = doubleIt(double u1)'; f1.SourceFiles = {'doubleIt.c'}; f1.HeaderFiles = {'doubleIt.h'}; • legacy_code('sfcn_cmex_generate', f1); • legacy_code('compile', f1); • legacy_code('slblock_generate', f1); Integration in Simulink • Simulink erlaubt das Ein-binden von C Header und Source Files • Eingebettete Funktionen können als normale Blöcke in das Modell eingebaut werden • Diese Blöcke heißen S-Function Blocks

  10. Beispiel: Euklidischer Algorithmus Pseudocode Simulink Modell Generierter C Code A B C EUCLID(a, b) 1 solange b ≠ 0 2 h  a mod b 3 a  b 4 b  h 5 return a Spezifikation Simulink Implementierung Model Advisor Autom. Code Generierung Executable

  11. Agenda Motivation – Warum automatisch Code generieren? Funktionsweise und Besonderheiten Optimierungsmöglichkeiten der Code Generierung Bewertung: Pro und Contra

  12. Automatische Code Optimierung Automatische Optimierungen Ein Beispiel • Vereinfachen boolescher und algebraischer Formeln • Zusammenfassen von Blöcken • Sinnvolle automatische Zuweisung der Datentypen • Eliminierung von unerreichbaren Pfaden • Wiederverwendung von gespeicherten Signalen Generierte Dateien: Optimize01.c Optimize01_data.c

  13. Manuelle Code Optimierung Manuelle Optimierungen Ein einfachere Variante des Eukl. Algorithmus • Kleinere Datentypen erzwingen (wenn Overflow vernachlässigt werden kann) • Alternative Implementierung vonAlgorithmen • Abstimmen des Modells auf diejeweilige Zielplattform • Nutzung vorgefertigter EmbeddedMatlab Funktionen Generierte Dateien: Optimize02.c Optimize02_data.c 416 LoC vs. 305 LoC (optimiert) 51 LoC vs. 32 LoC (optimiert)

  14. Agenda Motivation – Warum automatisch Code generieren? Funktionsweise und Besonderheiten Optimierungsmöglichkeiten der Code Generierung Bewertung: Pro und Contra

  15. Leistungsanalyse Automatisch generierte Code vs. „Handarbeit“ Erfahrungsbericht: Daimler Crysler * “ • Üblicherweise erreicht der automatischgenerierte Code eine ähnliche Performancewie handgeschriebener Code • In vielen Fällen ist der Auto-Code etwas Speicherschonender • Die tatsächliche Leistung hängt aber sehr vonden gewählten Einstellungen ab „ Erfahrungsbericht: NASA ** “ „ * http://www.mathworks.com/mason/tag/proxy.html?dataid=5442&fileid=22827 **http://www.mathworks.com/mason/tag/proxy.html?dataid=5961&fileid=24637

  16. Vor- und Nachteile der Code Generierung Vorteile der Code Generierung Nachteile der Code Generierung • Deutliche Reduktion der Entwicklungszeit • Bessere Handhabbarkeit des Projekts durch bessere Übersicht undgeringere Komplexität • Leichtere Interpretierbarkeit des SimulinkModells im Vergleich zu reinem Code • Einfache Wiederverwendbarkeit von Legacy Code • Relativ breite Palette an unterstütztenPlattformen inkl. der Möglichkeit Hardware generieren zu lassen • Automatisch generierter Code istweniger anfällig für Imple-mentierungsfehler • Generierter Code ist schlecht lesbar und dadurch auch schwer manuell verifizierbar • Der generierte Code ist bei einfachenAlgorithmen deutlich größer alshandgeschriebener Code • Hohe Lizenzkosten (RTW kostet 7.500,00 €) und viele zusätzlichePlugins/Toolboxes • Keine Möglichkeit der Einflussnahmeauf den verwendeten Sprachumfang • Hohe Einarbeitungszeit bis guter Codegeneriert werden kann

  17. Zukunftsaussichten dieser Methode Die nächste Evolutionsstufe: • Steigende Komplexität der Software/Hardware erfordert weitere Abstraktion undsomit wird diese Art der Modellierung sicherlich an Bedeutung gewinnen • Automatische Code Generierung könnte die Qualität von Software-Codedeutlich steigern, da es weniger Fehler bei der Übersetzung von Modellzu Programmcode gibt • Die Code-Generatoren und Compiler werden immer besser und liefern bereitsheute ebenbürtige Ergebnisse im Vergleich zu handgeschriebenem Code • Der Konkurrenzkampf fordert immer geringere Time-To-Market und effizientere (billigere) Entwicklungsmethoden

  18. Vielen Dank fürIhr Interesse!

  19. Quellenverzeichnis Verwendete Quellen • http://www.mathworks.de/applications/controldesign/description/embedded.html • http://www.mathworks.de/store/productIndexLink.do • “Model-Based Design and Beyond: Solutions for Today’s Embedded Systems Requirements”, Krasner, Jerry, Embedded Market Forecasters, 2004http://www.mathworks.com/applications/controldesign/technicalliterature.html • „Automatische Codegenerierung: Mythos und Realität“, D&V Dezember 2004, S. 40,http://www.eue24.net/pi/index.php?StoryID=253&articleID=10540 • “Multi-target Modelling for Embedded Software Development for Automotive Applications”, Hodge, Ye, Stuart, VisteonCorporation, March 2003, SAE Technical Paper Series 2004-01-0269 http://www.visteon.com/whitepapers/2004_01_0269.pdf • “Automatic Code Generation: Facilitating New Teaching Opportunities inEngineering Education”, Pieter J. Mosterman, The MathWorks Inc., 2006 • Matlab und Simulink Hilfe und Dokumentation • Wikipedia

More Related