2016-04-08 5 views
5

Ich versuche, die besten Praktiken des ASIC-Designs in Verilog zu verstehen oder zu erforschen. Ich arbeite an einem mittelgroßen Block mit ~ 20 Untermodulen (je ~ 1000 Zeilen Code). Es ist ein mühsamer Job, alle Untermodule manuell zu instantiieren und eine Port-Verbindung herzustellen, um RTL auf höchster Ebene zu erstellen.Gibt es eine empfohlene Methode zur Automatisierung der Modulanschlussverbindung?

Ich möchte ein Skript schreiben, um dies zu automatisieren. Solange wir die Ein-/Ausgänge aller Untermodule definieren können und wie die einzelnen Untermodule miteinander verbunden sind, sollte es nicht schwierig sein, die oberste Ebene automatisch zu generieren. Ich habe jedoch nicht genug Expertise in der Designautomatisierung. Ich habe mich gefragt, ob mir jemand Hinweise geben kann, wie ich anfangen soll.

  • Gibt es ein Open-Source-Tool, um zu erreichen, was ich versuche zu tun? Ich habe bisher noch keine gefunden.
  • Gibt es eine standardisierte Möglichkeit, synthetisierbaren Code dieser Art zu generieren?

Ich werde jede Art von Eingabe oder Beratung sehr schätzen.

+2

könnten Sie '*' implizite Port-Verbindungen, wenn das Patent Modul die gleichen Variablen wie Portnamen in Submodul hat.. Aber benutze es vorsichtig. – rahulcodesinverilog

+0

Sie können perl-Skript erstellen und Dateien von Modulen eingeben und eine Top-Datei generieren, in der Sie einige Logik-Befehle ausführen und Sub-Module in Top-Datei instanziieren können. Versuchen Sie mit einem kleinen Modul und erweitern Sie es dann mit Ihrer Anforderung. Sie können nicht nach direktem Skript fragen, aber Sie können, aber es ist möglich. –

+0

Keine automatische Lösung, aber hier ist, was ich oft tue. Einfügen in die Submoduldefinition (dh 'Modul # (...) (Eingangslogik ..., Ausgangslogik ...);' und dann den Instanznamen hinzufügen und alle Portrichtungen und Typen löschen. Jetzt die Makroaufzeichnung verwenden Funktion auf Ihrem Editor, um dies zu tun: 'CUT.PASTE (PASTE)'. Dann Doppelklick auf jeden Port-Namen, um es zu markieren und dann das Makro. Das ändert 'some_name' in' .some_name (some_name) '. Wenn der Port und Verbindungsname sind die gleichen, dann Job erledigt, wenn nicht, ist es leicht, ein bisschen mehr Doppelklick, Kopieren und Einfügen. Ich mag nicht '. *'. –

Antwort

4

Je nachdem, welchen Texteditor Sie verwenden, können Sie möglicherweise einige bereits vorhandene Tools verwenden. Es ist ein Add-on für Emacs, die Auto-instanziierenden und Verbindungssignale unterstützt, unter der Annahme, dass Sie bestimmte Namenskonventionen:

http://www.veripool.org/wiki/verilog-mode/Verilog-mode_veritedium

Für die vim Benutzer gibt, gibt es ein paar Plugins sind, die unter Verwendung erlauben der Emacs-Skript, wie diese:

http://www.vim.org/scripts/script.php?script_id=1875

Verwandte Themen