Forum: FPGA, VHDL & Co. Aus entity signale generierien


von Schwummrig2000 (Gast)


Lesenswert?

Hallo guten Tag,
habe eine große entity.
Wollte ihre Ein - und Ausgangsports mit Signalen in meiner Testbench 
verbinden.
Dafür möchte ich Signale anlegen, aber es sind viel zu viele um das per 
Hand zu schreiben.

Wie macht ihr das in so einem Fall?

Danke

von Fpgakuechle K. (Gast)


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.

von Duke Scarring (Gast)


Lesenswert?

Schwummrig2000 schrieb:
> Wie macht ihr das in so einem Fall?
Copy + Paste + Block edit mode + ordentliche Formatierung

von Schwummrig2000 (Gast)


Lesenswert?

ok Danke. sieht schwer aus :D

von Duke Scarring (Gast)


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

von J. S. (engineer) Benutzerseite


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.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Sigasi und Auto-Complete kann ich nur empfehlen. :-)

von Schwummrig2000 (Gast)


Lesenswert?

Jürgen S. schrieb:
> Ich habe mir ein Excel gebaut

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

von J. S. (engineer) Benutzerseite


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.

von Duke Scarring (Gast)


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

von Dussel (Gast)


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.

von Messtechniker (Gast)


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.

von Fitzebutze (Gast)


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.

von Dussel (Gast)


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.

von Fpgakuechle K. (Gast)


Lesenswert?

Sep 23, 2021
Xilinx currently does not support VHDL-2019. Xilinx might consider 
adding VHDL-2019 support based on customer demand in future.

aus:
https://support.xilinx.com/s/article/76460?language=en_US

von Fitzebutze (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.