Gibt es ein "Design Patterns" für synthetisierbares RTL?

Für Software ist das Buch Design Patterns eine Reihe von Mustern, um gängige Dinge in Software zu tun, und gibt Softwarepraktikern eine gemeinsame Terminologie, um einige der Komponenten zu beschreiben, die sie erstellen müssen.

Gibt es ein solches Buch oder eine solche Ressource für synthetisierbares RTL oder RTL im Allgemeinen? Dinge wie häufige Fallstricke, Kompromisse beim Design, Deadlock-Überlegungen und Schnittstellendesign.

Antworten (3)

Meine Erfahrung ist, dass Sie die Dokumentation zu einem oder mehreren der gängigen Synthesewerkzeuge lesen müssen, um zu sehen, welche Designmuster sie akzeptieren und was sie übersetzen.

Meistens müssen Sie wissen: - wie man Flops macht - wie man Drähte macht (und keine Latches) - wie man mit Reset umgeht (sync und/oder async)

Ich spreche von Dingen wie „Entwerfen einer Warteschlange mit virtuellen Ressourcen“ oder „Anrechnungsschemata und häufige Fallstricke“ oder „wann das Überlagern von Abstraktionen gebrochen werden sollte“. Best Practices und Methoden zum Entwerfen von Komponenten. Dinge, die die Veteranen des Chipdesigns bereits kennen. Ich sehe nicht viele praktische Designanleitungen in IEEE. Gibt es da draußen einen „Code Complete“ von RTLer?
RTL-Synther sind "weniger streng" als C-Compiler. Es bleibt ein gewisser Spielraum für die Syntheseimplementierung. Aus diesem Grund ist es eine gute Idee, die Dokumentation für den Synther zu lesen, den Sie verwenden möchten. Zum Beispiel ist der Synther von Xilinx XST, und sie haben ein XST-Benutzerhandbuch, das beschreibt, welche Designmuster richtige FSMs erzeugen, wie man das versehentliche Erstellen von Latches vermeidet, solche Sachen.

Ihre beste Wahl ist wahrscheinlich das Reuse Methodology Manual for System-on-a-Chip Designs von Michael Keating und Pierre Bricaud.

ausgezeichnete Empfehlung. Dieses Buch war mir nicht bekannt.

Ich fand eine strukturierte VHDL-Entwurfsmethode (pdf) interessant und nützlich, aber sie deckt nur ein einziges Entwurfsmuster ab.