Aus entity signale generierien

Gast #6955493
Lesenswert?

Schwummrig2000 schrieb:

> Wie macht ihr das in so einem Fall?

Emacs Vhdl-mode:
erst VHDL->Port->Copy dann
VHDL->Port->Paste as testbench

Ohne man nimmt einen anderen Editor der einen Macrorekorder hat und 
bastelt sich eine Umwandlung entity zu signel decl. resp port map. Oder 
man arbeitet im Spalten/Block/rectangle(Emacs-Bezeichnung) mode (das 
kann der notepad++).

Merke: wer den Editor nicht ehrt ist das Quelltextschreiben nicht wert.
Gast #6955537
Lesenswert?

Innerhalb des Designs kann man schön VHDL-records verwenden. Auf dem 
top-Level verwende ich aber nur einfache Signale (std_logic) und 
Vektoren (std_logic_vector).
Ja, bei größeren FPGA zieht sich die top-Level entity dann über mehrere 
100 Zeilen Code...

Duke
Persönliche Seite #6956105
Lesenswert?

Ich habe mir ein Excel gebaut, das anhand der Signalart und -Typ 
automatisch das "downto" macht, In/Out und einiges mehr und auf 
Folgeblättern einen Wrapper ausgibt, sowie Vorlagen zur Instanzierung 
von Komponenten und Mappern mit Signalen zum verbinden nach 
Standarddeklaration.

ab da geht es Copy und Paste, je nachdem, was man jeweils braucht.
Persönliche Seite #6957494
Lesenswert?

Schwummrig2000 schrieb:
> ja hab ich gestern auch kurz mal getestet. Wusste aber nicht, ob man das
> so macht.

Ich mache das so. Der Vorteil ist, man hat gleich eine Doku in den 
Fällen, in denen mehr Doku benötigt wird, als üblich. Man kann auch gut 
ähnliche Komponenten leichter duplizieren. Excel bietet genau für solche 
von Duke angesprochenen Fälle die Möglichkeit, Nummerierung und Benamung 
von sehr ähnlichen redundanten Ports zu automatisieren. Damit kriegt man 
auch Strukturen hin, die mit Generate nicht mehr abzubilden sind.
Gast #6957573
Lesenswert?

Machen kann man vieles. Wir hatten mal einen Guru, der hat aus einem 
Skript  Schnittstellen und Datenstrukturen generiert. Damit war 
Software, Hardware und Dokumentation in sich konsistent. Man muß halt 
herausfinden, ab welcher Projektgröße (bezogen auf Mitarbeiter, Lines of 
code oder Komplexität) sich das lohnt.

Duke
Gast #6957797
Lesenswert?

Man kann doch sicher schnell ein Script schreiben, das die 
Richtungsangaben (in, out, inout, buffer) entfernt und vor jedes Signal 
ein 'signal' einsetzt.
Bisher bin ich aber auch gut mit dem Rechteckauswahlmodus ausgekommen. 
Bei mir waren es aber bisher auch 'nur' etwa 150 Signale im Port.

Schlimmer finde ich da die Zuweisung in der Port Map, weil man den Typ 
des Signals entfernen und dann den Zuweisungspfeil und den jeweiligen 
Signalnamen anfügen muss. Das kann je nach Formatierung etwas nervig 
sein, geht aber auch.
Gast #6957908
Lesenswert?

Notepad hat doch einen Block-Edit Modus mit dem man direkt mehrzeilig 
schreiben kann. Damit lassen sich auch mappings leicht modifizieren. Das 
Wichtige dabei ist, dass alle Einrückungen stimmen und die Signalnamen 
so sind dass sie leicht zu kopieren und zu editieren sind. Aber bringe 
das mal allen Entwicklern bei.
Gast #6959230
Lesenswert?

Dussel schrieb:
> Man kann doch sicher schnell ein Script schreiben, das die
> Richtungsangaben (in, out, inout, buffer) entfernt und vor jedes Signal
> ein 'signal' einsetzt.

Man kann auch gleich eine gut wiederverwertbare HDL einsetzen, bei der 
die Interfaces wie bei VHDL-2019 genau einmal definiert werden, 
beispielsweise MyHDL oder amaranth.

Wenn man natürlich mit externen Primitiven arbeiten muss, die jeden Pin 
einzeln aufführen, wird's spezifisch, d.h. man muss sich eigene Klassen 
ableiten. Lohnt nur für grössere FPGA-Libraries.

Wenn ich solche copy&paste-Aktionen noch machen muss, dann mit vim.
Ctrl-V, Pfeiltasten, yank, paste. Schneller geht's nicht, aber man muss 
sich mit vim anfreuden.
Gast #6959241
Lesenswert?

Fitzebutze schrieb:
> Dussel schrieb:
>> Man kann doch sicher schnell ein Script schreiben, das die
>> Richtungsangaben (in, out, inout, buffer) entfernt und vor jedes Signal
>> ein 'signal' einsetzt.
>
> Man kann auch gleich eine gut wiederverwertbare HDL einsetzen, bei der
> die Interfaces wie bei VHDL-2019 genau einmal definiert werden
Zeig mal ein Beispiel, wie das in VHDL(-2019) aussieht.
Gast #6959689
Lesenswert?

Dussel schrieb:
> Zeig mal ein Beispiel, wie das in VHDL(-2019) aussieht.

Da steht "*wie bei* VHDL-2019". Und wie fpgakuechle schon schrieb: Das 
heisst eigentlich, dass es Vivado in 10 Jahren noch nicht unterstützt. 
Deswegen macht es keinen Sinn, auf VHDL-2019 als Standard näher 
einzugehen.

In Python definiert man ein solches Interface einfach per Klasse:
1
class Bla:
2
    def __init__(self, param):
3
        self.p = param
4
        self.a = Signal(bool())
5
        self.b = Signal(intbv()[8:])

Wie das Interface in der resultierenden Form (z.B. VHDL als record, oder 
ausgerollt) umgesetzt wird und welche Namen dafür vergeben werden, 
bestimmt ein optionaler Dekorator oder ist Sache des Target-Konverters.

Aber wir weichen vom Luxusproblem ab, und man sollte sich gut überlegen, 
welche Baustelle man nun wirklich aufmachen will.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren