====== Rekonfigurierbare Prozessoren ====== ===== Allgemeines ===== * http://www.vlsi.informatik.tu-darmstadt.de/student_area/rp/ * Klausur: 14.2.2006, 16:15, Hexagon ===== 25.10.2005 ===== * Prozessoren fallen hinter Speicher zurück -> Regularität * Designprobleme -> Entwurf so komplexer Systeme nicht möglich trotz möglicher Fertigung ===== 1.11.2005 ===== **Folie 1-11:** * Hardware/Software Partitionierung: Abschaetzung HW/SW Implementierung hinsichtlich Ausfuehrungszeit,... => sehr schwierig, man muss im Vorfeld schaetzen um Aussagen treffen zu koennen * Softwareentwurf: z.B. auch Codegenerierung aus UML * generell Generierung aus hoeherleveligen Spezifikationen * HW-Entwurf: Ableitung einer Struktur, hoeherleveliger * synthesegestuetzter Ansatz geht zunehmend auch in Softwareentwicklung ueber * Treiber: Software, Interface: Hardware, Software <-> Treiber <-> Interface <-> Hardware * hohe Stueckkosten wenn keine Standardplattform nutzbar * zwei Sorten von Kosten: Entwicklulngskosten (unabhaengig von Anzahl der Systeme), Stueckkosten (Fertigungskosten) * Umlage aller Kosten auf Gesamtkosten **Folie 1-12:** * IP-Produkte = Bausteine (HW, SW, Mischung): Ermoeglicht Minderung des Entwicklungsaufwands durch Nutzung von fertigen Teilloesungen * Immer Abwaegen noetig: Leistungsfaehigkeit <-> Flexibilitaet **Folie 1-13:** * Nur Standard ICs: Kein Kontakt zum Halbleiterhersteller, nur Dokumentation * Eingeschraenkter Entwurfsraum, niedrige Integrationsdichte (da wenige Funktionen je IC) **Folie 1-14:** * Schaltungsentwurf via CAE System * Systementwickler macht Netzliste, Ueberfuehrung in Hardware durch Halbleiterhersteller * haeufig: Spezialisierung auf Entwurf, aber keine eigene Fertigung => Design an Chiphersteller, fertige Chips zurueck **Folie 1-15:** * uneinheitlich da organische Entwicklung **Folie 1-16:** * Speicher/Mikro/Signal-Prozessoren, "Katalogmodule": SoC * Anwendungsspezifische: Semicustom (Kundenwunsch, Nutzung von fertigen Teilloesungen), Fullcustom (Abwaegung, im Zweifelsfall komplette Neuentwicklung) * Entwicklungen auf Kundenwunsch -> oft daraus resultierendes neues Standardprodukt * ASICs: Auch semicustom * entweder vollstaendig optimiert (z.B. Prozessorentwurf) oder Netzung von Standard/Makrozellen * FPD <-> Structured ASICs (neu) <-> ASICs * FPGA: Besondere Bedeutung (Vorlesungsschwerpunkt) * Grundlage fuer SoC **Folie 1-18** * Designflow -> Entwurfsablauf * Syntheseverfahren: Auch geometrische Repraesentation der Schaltung * Trend zu SoC **Folie 1-20:** * Einsatz je nach Eignung * gegeben Performanzanforderung und Flusstyp: Loesungstyp * Performanz haengt stets auch von Anwendungsgebiet ab (Domaenenspezifisch) * Ueberlappung? Kosten checken, Kosten/Nutzen abschaetzen! * **Folie 1-20** -> wichtig * Performanzeinbruch (Kontroll/Datenfluss optimierte Algorithmen) -> Data Flow Architecture, System on a chip * DFA = FPGA mit groberer Granularitaet **Folie 2-2:** * zwei Teile: Logical Design, Physical Design * Drei Domaenen: Verhalten, Struktur, Geometrie * Schwerpunkt fuer uns: Logical Design * Bsp: Algorithmus in C -> Sprachbeschreibung lesbar fuer Synthesewerkzeug (VHDL, Verilog, SystemC) -> Schaltung durch Logiksynthese -> Systempartitionierung * immer: Simulation zur Validierung des Designs * Dann: Floorplanning (Aufteilung Chipflaeche in Funktionsbereiche) -> Placement (Anordnung) -> Routing (Verbindung der Komponenten) * Leitungen verzoegern, darum "circuit extraction" * Signalmissbildung, negative Beeinflussung der Signale, dadurch Beeinflussung der gesamten Schaltung (z.B. Gatter) * Abhaengigkeit des Verzoegerungsverhaltens von Signalform (non-lineares Verhalten, *brrrr*) **Folie 2-3:** * Schaltbild-Editor: Schaltungen heute idR zu komplex * Prelayout Simulation ohne Beruecksichtigung von negativen Leitungseigenschaften, da Floorplan noch unbekannt * Extraction: Abbildung auf elektrisches Modell (Ersatzschaltung) zur Abschätzung der Verzögerungen usw. * Näherung: Nach Möglichkeit nicht mehr als 5-10% Abweichung * Problem: Extraktionsverfahren muss schneller sein als Lösung der Differentialgleichung * Post-Layout dann möglich -> Verzögerungselemente hinzufügen -> Systemtakt, Hazards * Möglicherweise daraus folgende iterative Optimierung bzw. Redesign **Folie 2-5:** * "Do what I want" Knopf fehlt noch ;-) * Übersprechen einer Leitung auf eine andere -> Problem -> Ursache = elektromagnetische Eigenschaften der Übertragung **Folie 2-6:** * Drei Syntheseschritte -> Drei Synthesesysteme wäre ideal, geht aber so nicht * arbeiten möglicherweise nicht korrekt (sehr komplexe Softwarepakete) * Verifikation Syntheseergebnis (vor Transformation <-> nach Transformation) * Methode von Simulation und Vergleich * je tiefer desto komplexer (300 Zeilen Code -> 300 Mio. Transistoren) * Darum Verifikationsmethoden (formale Validation des Ergebnisses), da Simulation ab bestimmter Komplexität an ihre Grenzen stösst * Simulation nur noch in Grenzfällen (wegen Komplexität) ===== 08.11.2005 ===== **Folie 2-6:** * So es geht wird synthetisiert, aber aufgrund von Mängeln in den Synthesewerkzeugen noch sehr viel simuliert * Rechnerfarmen für Simulation * Simulation immer schwieriger da Systeme immer komplexer **Folie 2-7:** * Graphische Entwurfserfassung -> Strukturerfassung * Schaltplaneditoren * bottom-up -> komplexere Gebilde aus Primitivelementen * top-down -> Prozessor, zerlegen in Steuer- und Rechenwerk, usw * wesentlich: Entwurf kann bereits im Editor auf Korrekthieit überprüft werden (Simulation) * FLoating Impulse: Pfui (Metastabilität, Ausgang bleibt irgendwo zwischen 0 und 1 hängen) * lässt sich mittels Simulator alles wunderbar vermeiden * Verzögerungszeit wird durch Wechselwirkungen zwischen Quellen und Kapazitäten beeinflusst * Verzögerungszeiten gefährlich -> Bauteil aus zwei gegengeschalteten Transistoren, leiten zur Umschaltzeit beide aber ein bisschen -> Stromspitzen, können Bauteil zerschiessen * Leistungsverbrauch auch wenn keine Zustandswechsel vorliegen (Ruhestrom) * viele Zustandswechsel in FSM -> viele auch in Implementierung => Verbrauch auch via FSM abschätzbar * Beliebte Fehler: Vertauschung der Bitreihenfolge, Busaufteilung, ... * Ergebnis: Geprüfte Netzliste aufgrund der "Electrical Design Rules" **Folie 2-8:** * Netzliste via Converter in Simulatorsprache, Prelayoutsimulation (funktional oder timing) * Bibliotheken: graphische und tabellarische Modellrepräsentationen -> verschiedene Sichten * Strecke > 0 -> Ausbreitungszeit > 0! * Place & Route -> legt Leitungen * Vorgabe z.B. "Keine Verzögerung größer als 100ns" -> timing-driven routing * Daraus: Netzliste mit Timingannotationen, Postlayoutsimulation (timing) * Bitstreamgenerierung -> FPGA * iterative Schleife **Folie 2-9:** * Logiksimulation: Analyse des Verhaltens einer Digitalschaltung ohne Hardwareimplementierung * Test -> real existierendes Produkt * Simulation komplexer Systeme auf ungeeigneter Abstraktionsebene -> sehr teuer * Logikanalyse -> große Tabellen * Stimuli müssen System "zum Schwitzen bringen" * wenn man weiß, wie die Algorithmen laufen und wo die Schwachstellen sind, kann man das System so "kitzeln", dass man auch sieht was man sehen will * Ruhestromtest -> Ruhestrom muss (wenn Schaltung korrekt arbeitet) in einem bestimmten Intervall liegen * Algorithmen und Modelle haben Schwachpunkte -> vorsicht! **Folie 2-10:** * Modell -> __Analogie__! * Logiksimulation -> meistens alles als Logiktabelle vorliegend * HW-Modelle: komplizierte Handhabung, teuer, aber realitätsnäher **Folie 2-11:** * abstrahierte Spannungswerte, logisch 0 und 1 __gibt es nicht__ * Leistungsreduzierung? -> Versorgungsspannung reduzieren! * Z -> bei Bussystemen zur Koordination von Schreibvorgängen (Abklemmung) * Signalwertmengen können sehr groß werden -> bei kleinen Mengen potentiell zu abstraktes Modell * R und F benötigt im Simulator, um reale Vorgänge besser beschreiben zu können **Folie 2-12:** * Signalstärken werden verwendet, um andere Signale überschreiben zu können (bsp: Inverter-Speicher-Element) * VHDL kennt keine Logikwertmenge -> muss extern mit Libraries hinzugeladen werden **Folie 2-13:** * bei gleicher Signalstärke und unterschiedlichen Werten -> X **Folie 2-14:** * Komponenten -> Funktions- und Verzögerungselement zur Simulation des Verzögerungsverhaltens **Folie 2-15:** * zero-delay: Verzögerung mit Zeitwert 0 * keine Verzögerung, direkte verzögerungsfreie Rückeinspeisung -> Rückkopplung * darum zero delay nur sinnvoll wenn keine Rückeinspeisung => Modellierung Boolescher Algebra * "after 3ns" => Ausgangswert springt 3ns nach Auslösersignal für Änderung um * inertia delay = Trägheitsverzögerung ===== 22.11.2005 ===== * Zusammenfassung zu einer LUT -> idR keine gute Idee, da unflexibel (gerade bei großen sequentiellen Eingängen) ~~DISCUSSION~~