Forum: FPGA, VHDL & Co. schematics or not schematics - that is the question!


von Michel (Gast)


Lesenswert?

Unser aller Cheffe hat heute seine Vorliebe für Dokumentation entdeckt 
(oder irgendein Q-Fritze hat es für ihn entdeckt und/oder ihm Beine 
gemacht) und uns eine Vortrag gehalten, dass die Designs besser 
dokumentiert werden müssen, um die Wiederverwertbarkeit zu steigern.

Da die geschätzte Xilinx ISE ja inzwischen sehr stabil läuft und kaum 
noch Abstürze zu verzeichnen sind, wird offen in Erwägung gezogen, den 
Designern (und damit auch mir) aufzugeben, in Zukunft schematic based zu 
arbeiten, wozu ich erstens keine Lust habe und zweitens auch keinen 
echten Sinn sehe.

Wie bringe ich den Kritikern bei, dass das ein Hohlweg ist?

Das Argument, dass ISE angeblich eingefroren wird, lässt man nicht 
gelten, weil "das noch nicht offiziell ist" und "wir ISE noch mindestens 
3 Jahre nutzen und bis dahin auch keine neueren FPGAs eingesetzt 
werden".

Durch die Benutzung der SCH soll der Designer gezungen werden, sauber zu 
dokumentieren, bevor er lossynthetisiert.

von Sven P. (Gast)


Lesenswert?

Die ISE wird just im Moment schon wieder komplett umgebaut 
(Planahead...)...

Schematic ist hirnfick. Vielleicht - wirlich nur vielleicht - 
sinnvoll, um die Toplevel-Entitäten miteinander zu verdrahten und so den 
(hoffentlich) modularen Aufbau des Designs hervorzubringen.

Aber Verhalten als Schematic zu beschreiben, ist totaler Schwachsinn. 
Sehr viel Arbeit wird doch gerade in die Synthetisierer für VHDL und 
Verilog gesteckt, damit man eben nicht mehr Gatter für Gatter 
verdrahten muss, sondern das formuliert, was man auch meint.

von Hmm (Gast)


Lesenswert?

Wie setzt man eigentlich Attribute wie "keep" im Schematic? Geht das 
überhaupt?

von Omega (Gast)


Lesenswert?

ich würde Versionshistorie als Grund setzen. Ich weiß nicht wie man in 
Schematic Änderungen verfolgen kann. Ich kann es mir aber nicht 
vorstellen, dass es mit SVN oder GIT mithalten kann.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Das Einzige, was als Schematics noch akzeptabel sein könnte, ist es (wie 
erwähnt) die Struktur zu verdrahten. Und dann nach Serieneinführung 
daraus eine VHDL Beschreibung zu erzeugen. Die kann dann auch noch nach 
15 Jahren gelesen werden. Dass das mir einer Schematic geht, wage ich zu 
bezweifeln.
Aber niemals wird es Sinn machen, die Funktion mit einem Schaltplan zu 
beschreiben. Denn gerade diese Module sollen ja wiederverwendet werden.

Und das Argument mit dem Versionsmanagement lässt sich auch auf  so 
simple Tools wie Windiff (Textvergleicher) ausdehnen.

von W.S. (Gast)


Lesenswert?

Michel schrieb:
> Wie bringe ich den Kritikern bei, dass das ein Hohlweg ist?

garnicht.

Gewöhne dir lieber an, als Toplevel tatsächlich Schematics zu benutzen. 
Das ist ein durchaus probates Mittel gegen das "geniale" Schlampertum. 
Obendrein erleichtert es die Konversation mit den Leuten, die die 
Elektronik rings um dein genial programmiertes FPGA machen müssen.

W.S.

von Christian R. (supachris)


Lesenswert?

Versionskontrolle ist das Totschlagargument, das geht nämlich mit den 
Binär-Files für die Schematic überhaupt nicht sinnvoll. Und ich sehe 
keine Übersichtsprobleme auch wenn das Top-Level als VHDL gemacht ist. 
Notfalls größere Unterblöcke machen. Ich knall ja nicht 40 Module direkt 
ins Top-Level. Außerdem arbeitet ISE extrem instabil im Schematic-Edtor, 
bei jeder Änderung wird man wahnsinnig beim Leitungen schubsen, Labels 
verschieben....gruselig. Einfach mit erhöhten Kosten durch mehr 
Fehleranfälligkeit und Ineffizienz argumentieren. Kannst dem Chef ja zur 
Doku einen RTL Schaltplan generieren lassen, wenn er das geil findet 
(finden muss).

von Michel (Gast)


Lesenswert?

W.S. schrieb:
> Das ist ein durchaus probates Mittel gegen das "geniale" Schlampertum.

Ich sehe schon, wir werden W.S. anstellen, um für uns die Schaltpläne zu 
machen :-)

von Dieter (Gast)


Lesenswert?

Hast Du Dir den HDL Designer schonmal angesehen?
Ich meine jetzt nicht die Funktion um dort Schematics zu erstellen, 
sondern die einem VHDL Code graphisch mittels Flußdiagrammen und 
FSM-Bubbles darzustellen.
Ich hatte mal eine 14 Tage Testversion und zum dokumentieren von VHDL 
Code finde ich es nicht schlecht. Sicherlich gibt es hier und da Macken, 
aber die hat jede Software. Screenshot von der graphischen Darstelleung 
machen, ablegen und glücklich sein. Hilft manchmal auch ungemein fremden 
Code im Ansatz zu verstehen.
Sicherlich HTML Reports, etc. gehen auch - aber ehrlich gesagt reicht 
mir zur Doku häufig nen Screenshot von der Simulation sowie eine kleine 
graphische Aufbereitung als Erinnerungshilfe.

Desweiteren kann der HDL Designer noch viel mehr, aber pssst nicht alles 
dem QMler erzählen sonst muss nachher der Code von irgendwelchen 
bekloppten Rulechecks (vom QMler definierten) durchlaufen werden.
Eine firmeninterene Definition von wichtigen Signalen oder Strukturen 
kann man auch anregen, aber auch hier gilt weniger ist mehr und soll nur 
dazu dienen anderen Entwicklern das Modul schneller zu verstehen...

von Patrick (Gast)


Lesenswert?

Ich persönlich würde dringend dazu raten, (auch) den VHDL-Code zu 
sichern!

Als ein Argument wurde ja schon Versionskontrolle genannt - ich hoffe, 
Ihr verwendet sowas? Falls nicht, wäre die Einführung eines solchen 
Systems wesentlich sinnvoller als die Umstellung auf Schematics - 
Versionskontrolle ist nämlich nicht nur "Archivieren und Vergessen", 
sondern dient auch und hauptsächlich zur einwandfreien Rückverfolgung 
von Änderungen (Change Management), Vergleichen von Codes verschiedener 
Revisionen (Diff) und Zusammenführen von Codes (Merge).

Ein weiteres Argument: Gerade WEIL eine verbesserte 
Wiederverwendbarkeit gefordert wird, ist es das mit Abstand Sinnvollste, 
den Quellcode, welcher einem definierten und weit verbreiteten Standard 
entspricht, aufzuheben, als ein proprietäres Schematic-File, mit dem u. 
U. in ein paar Jahren niemand mehr etwas anfangen kann. Wenn man beim 
VHDL-Design noch die gängigen Regeln beachtet (z. B. "nur eine Clock für 
das System" etc.; so etwas kann man sinnvollerweise als 
unternehmensweite Entwicklungsregeln festlegen) und die Verwendung von 
IP-Cores vermeidet, geht es fast nicht portabler.
Für die "Zuarbeit" kann z. B., wie schon erwähnt, der VHDL Designer 
eingesetzt werden, um State Machines o. ä. grafisch zu illustrieren, und 
die Quellcodedokumentation kann z. B. mit Doxygen erfolgen. Das ist IMHO 
der sinnvollste Weg.

von Dieter (Gast)


Lesenswert?

Doxygen und HDL Designer halte ich für übertrieben.
Wenn man VHDL vernünftig strukturiert programmiert, sich an ein paar 
einfache Regeln hält und ggf. den ein oder anderen Process im Quellcode 
mit 1-3 Zeilen dokumentiert reicht dies häufig.
Der Einsatz von einer Versionsverwaltung sollte dazu führen dass der 
Code aufgeräumt bleibt und keine Kommentar-Roman wie "folgendes 
funktionierte mal, aber ... bevor ich den Code lösche lasse ich lieber 5 
km kommentierten Code stehen".

Je mehr Dokumentation gefordert ist, desto mehr ist der Entwickler 
eingeschränkt und ggf. führt es dann dazu dass a) alte Kommentare nicht 
bei Codeänderung geändert werden oder b) jede zweite Zeile kommentiert 
wird...

Also daher meine persönliche Empfehlung (ja und da hat jeder eine 
eigene)
- firmeninterne Styleguide mit den wichtigen Signalnamen und 
-konstrukten (3-5 Seiten reichen meist) (clk-Name, reset-Name, fallende 
Flanke, steigende Flanke, Signale synchronisiert, Signale delayed, State 
Maschine State-Namen (z.B. etx für end of transmission, stx - start of 
transmission), etc.)
- sinnvolle Signalnamen
- einheitlicher Header mit kurzer Modulbeschreibung und 
Schnittstellenbeschreibung
- Prozesse wenn nötig blockweise in 1-3 Zeile kommentieren
- Quellcode äufräumen und einrücken (EMacs oder Sigasi machen das ganz 
gut)
- Versionsverwaltung einsetzen
- Testbenches schreiben und auch pflegen, d.h. nicht nur am Anfang der 
Entwicklung und irgendwann passen die Entities nicht mehr
- Simulationsergebnisse dokumentieren, zB. Screenshot
- graphische Aufbereitung mittels HDL Designer
- Designregeln beachten (nur 1 Clock, ggf. Clk-Enable, keine Gated 
Clocks, keine asynchr. Resets...)
- bei Modulen bei denen es Sinn mach Generics oder Constanten nutzen
- Zähler wenn möglich mit Constants flexibel halten
- allerdings macht es bei einfachen Modulen ggf. mehr Arbeit ein Modul 
für 98 Generic Konfigurationen zu testen als es ggf. bei einem Reuse 
anzupassen.

von SuperWilly (Gast)


Lesenswert?

1. Frage: Kann man in Schematic Toplevel-Beschreibungen mit generischen 
Instanziierungen vornehmen?
Dies ist dann wichtig, wenn man Designs hat, in denen eine generische 
Anzahl an Komponenten (via GENERATE) instanziiert werden soll. Wozu 
generisch? Der Wiederverwendbarkeit halber ... ;-)

2. In VHDL ist man im Toplevel gezwungen, ALLE Netze sinnvoll zu 
benennen. Im Schematic? Nicht unbedingt, $75n4...

3. Wenn ich eine Subkomponente ändere, muss ich, um sie im 
Schematic-Toplevel zu instanziieren, ein neues Symbol der Subkomponente 
erstellen. Lästig, lästig ...

4. Im VHDL-Toplevel kann ich sinnvoll Gruppierungen und Formatierungen 
vornehmen (Stichwort: BLOCK)

5. Im VHDL-Toplevel kann ich sinnvoll Kommentare einfügen

6. Wenn man unbedingt ein Schematic braucht, um grob alle Komponenten zu 
überblicken, so kann man sich dieses z.B. in SynplifyPro generieren 
lassen. Dort kann man sogar in der Hierarchie navigieren.

VG, SuperWilly

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Michel schrieb:
> Wie bringe ich den Kritikern bei, dass das ein Hohlweg ist?

Durch ein gemeinsames Gespräch, bei dem jede Partei gleichberechtigt zu 
Wort kommen darf. Dabei werden zunächst alle Wünsche und Probleme auf 
den Tisch gelegt und dann sachlich argumentiert um gemeinsam einen 
effektiven Lösungsweg zu finden.
Warum schreien gleich alle VHDL? Im Kern geht es doch um ein 
Kommunikationsproblem.

von CZM (Gast)


Lesenswert?

Joe G. schrieb:
> urch ein gemeinsames Gespräch, bei dem jede Partei gleichberechtigt zu
> Wort kommen darf. Dabei werden zunächst alle Wünsche und Probleme auf
> den Tisch gelegt und dann sachlich argumentiert um gemeinsam einen
> effektiven Lösungsweg zu finden.
nenne mir eine firma wo das so gehandhabt wird

graphische repräsentationen sind schon sinnvoll
aber wer sagt, dass man die mit dem design 1:1 verknüpfen muss?

wenn man mehrere versionen eines programm codes will, reicht normal ein 
schalter - will malt man das auf?

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hallo,

ich verwende hier schon seit mehreren Jahren Ease von HDL Works, in 
Verbindung mit einem Styleguide. Mit Ease wird das ganze Projekt 
verwaltet. Das Teil hat einen guten grafischen FSM-Editor und man kann 
sich schnell durch die Hierarchie klicken. Das kommt einem insbesondere 
bei ständig unterschiedlichen Projekten entgegen. Alte 
Projekte/Bibliotheken lassen sich auch gut importieren. Natürlich wird 
dabei aus einer Text-FSM keine grafische. Aber die Hierarchie wird 
grafisch abgebildet.
Aus den Grafiken wird dann VHDL generiert. Die interne Datenbank ist 
XML, geht also gut in die Versionsverwaltung. Wenn man will kann man 
auch eine Version kaufen, die die Versionsverwaltung direkt unterstützt.

Zur Dokumentation kann man HTML und PDFs erzeugen, kommt gut bei 
Design-Reviews.

Ok, das Teil kostet etwas, ist aber deutlich billiger als der HDL 
Designer aber deutlich besser als die Tools der FPGA-Hersteller.

von René D. (Firma: www.dossmatik.de) (dose)



Lesenswert?

wenn es um die Dokumentation geht, finde ich Doxygen besser geeignet.
Vielleicht kannst du mit einem besserem Tool überzeugen.

Ich habe es auch nur sporadisch eingesetzt.
Es ist aber sehr wirksam nutzbar.

von PittyJ (Gast)


Lesenswert?

Ich habe letztens Doxygen und auch VhDocl ausprobiert. Und das Doxygen 
hat mir richtig gut gefallen. (Ok, ich hatte es auch schon für C++ 
benutzt).

Ich möchte nicht von Hand irgendwelche Bildchen malen, die nach einer 
Code-Änderung auch mühsam umgezeichnet werden müssen. Wenn, dann sollte 
das automatisch gehen. Und da ist für mich Doxygen praktischer.

Und Schematics sind nichts für mich, ich bevorzuge richtigen Quellcode.

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.