Hallo,
der letzte Beitrag zu diesem Thema ist ja schon etwas angestaubt.
Womit entwickelt ihr?
Ich benutze das kostenlose Xilinx Webkit, aber zum programmieren nehme
ich Notepad++.
Für kleine Sachen geht das ja ganz gut, aber für größere Projekte währe
eine richtige IDE schon was feines.
Folgende Seite gibt einen guten Überblick:
http://www.vhdleditor.com/vhdl-ides
Insbesondere zamiaCAD macht auf den ersten Blick einen guten Eindruck:
http://zamiacad.sourceforge.net
Hallo Thomas,
ich nehme derzeit noch gedit (als Editor - meine Designs sind klein und
übersichtlich) und schaue mir gerade XEmacs (das ist auch ein weit
verbreiteter Editor für VHDL) an. Eine weitere sehr gute Übersicht gibt
es hier:
http://tams-www.informatik.uni-hamburg.de/vhdl/index.php?content=07-tools
Hier fehlt aber der von die gepostete zamiacad, welchen ich auf den
ersten Blick auch sehr interessant finde.
Viele Grüße Boris
Vorneweg: ich habe dem Tread mal einen sinnvollen Titel verpasst.
Und ich verwende an Editoren, was mir gerade unter die Finger kommt.
Hauptsache es gibt "find in files" und Blockbearbeitung...
Danke für den sinnvollen Titel.
Mit den Nummern habe ich nur meinen sinnvollen Titel auf die 15
erforderlichen Zeichen aufgefüllt.
Das ist meine Form von Protest gegen neunmalkluge Computer die mir
vorschreiben wollen was ich zu tun hab.
> Und ich verwende an Editoren, was mir gerade unter die Finger kommt.> Hauptsache es gibt "find in files" und Blockbearbeitung...
Ist das nicht ein bischen wenig für größere Projekte?
Ich meine für jeden Java-Entwickler sind heutzutage dinge wie
Projektnavigation, Refactoring, online-Syntaxkontrolle,
Team-Integration, etc. völlig selbstverständlich.
Sind VHDL-Entwickler wirklich so anspruchslos??
Hat jemand Erfahrung mit zamiaCAD und kann was dazu sagen?
Was ist mit Sigasi? Nutzt das jemand?
Thomas schrieb:> Sind VHDL-Entwickler wirklich so anspruchslos??
Das nicht, aber das blöde an all den Editoren ist, dass sie sich nicht
nahtlos in die jeweilige IDE des FPGA Herstellers einbinden lassen. Klar
sind all die Dinge sinnvoll, aber wenn ich dann wieder mit min. 2
verschiedenen IDEs arbeiten muss, ist das auch wieder umständlich. Ganz
auf z.B. Xilinx ISE verzichten ist zwar möglich, macht aber im täglichen
Gebrauch auch wenig Spaß, schon wenn man ein neues Modul zum projekt
hinzufügt, muss man mindestens die xst Datei anpassen, Den Core-Gen muss
man extra aufrufen, die Fehler- und Warnemldungen manuell aus den xml
Dateien ziehen. Wenn die in Zamia Cad mal den FPGA Work Flow mit
einbauen, dann ist das sicherlich sinnvoll...
Christian R. schrieb:> Thomas schrieb:>> Sind VHDL-Entwickler wirklich so anspruchslos??>> Das nicht, aber das blöde an all den Editoren ist, dass sie sich nicht> nahtlos in die jeweilige IDE des FPGA Herstellers einbinden lassen. Klar> sind all die Dinge sinnvoll, aber wenn ich dann wieder mit min. 2> verschiedenen IDEs arbeiten muss, ist das auch wieder umständlich. Ganz> auf z.B. Xilinx ISE verzichten ist zwar möglich, macht aber im täglichen> Gebrauch auch wenig Spaß, schon wenn man ein neues Modul zum projekt> hinzufügt, muss man mindestens die xst Datei anpassen, Den Core-Gen muss> man extra aufrufen, die Fehler- und Warnemldungen manuell aus den xml> Dateien ziehen. Wenn die in Zamia Cad mal den FPGA Work Flow mit> einbauen, dann ist das sicherlich sinnvoll...
Das Aufsetzen einer Tool-Chain ist nicht Zweck einer Editors.
Für so was haben die Schöpfer der Softwareentwicklung make und scripte
erfunden. Dann braucht man sich auch nicht persönlich bemühen den
Coregenerator oder modelsim aufzurufen. Fehler- und Warnmeldungen kann
ein Grep aus den log-files ziehen, perl kann dergleichen noch sortieren.
Oder man öffnet im Emacs zwei horizontale Fenster, eins für den Code,
eins für die Logdatei und wechsel per Tastenkürzel schnell zwischen
beiden.
Neben deutlsichen Geschwindigkeitsvorteilen ist ein solcher
(make-basierender) Flow auch reproduzierbar und in ein Revisionsystem
pflegbar. Und nicht zuletzt kann man eigene tools (präprozessor, script
zum erzeugen Contsnate mit compile datum und automatischer
Versionsnummer einbauen).
Der Aufwand make zu lernen ist nicht gering, er macht sich aber dank
handjustierter, schneller, komplexer und vollautomatisierter
Syntheseläufe schnell bezahlt.
IDE sind für den schnellen Einstieg sinnnvoll, volle kontrolle über die
Code-gerierung erlangt man aber dadurch nicht.
Editoren sind zweitrangig, was zählt ist die Toolchain.
MfG,
Hier muss ich dir uneingeschränkt zustimmen.
Es muss zwar nicht unbedingt make sein, aber ein standartisierter Flow
ist die beste Möglichkeit die Übersicht zu wahren.
Ein Projekt ständig neu aufsetzen oder gar die Projektdateien mit
kopieren/pflegen/tauschen kommt eigentlich kaum in Frage wenn man nicht
alleine arbeitet.
Ich geb dir vollkommen recht, was den Build-Prozess angeht. Wir haben
den auch auf einem TeamCity Server laufen, batch-gesteuert und die
Quellen im SVN, automatischer Eintrag der Versionsnummer usw.
Aber lokal konnte ich mich aus den genannten Gründen damit noch nicht
anfreunden, ist schon ein erheblicher Aufwand, wenn man dann Warnungen
parsen muss usw.
Wenn man das besser in z.B. Zamia CAD integrieren könnte, wäre das
sicherlich sinnvoll, müsste ich mal gucken, was die aktuelle Version
alles kann.
Lothar Miller schrieb:> und Blockbearbeitung...
Yepp! Notepad++ benutze ich meistens, weil man sich da eine einfach
Sprache selber definieren kann, z.B. UCF.
Beitrag "Re: VHDL extension für Programmers Notepad"
@Stachele
ich nehme an, Dich stört die Sensi-Liste?
Ich habe da einen Verdacht, warum die Signale da drin stehen...
Hallo,
ich nutze seit einiger Zeit Sigasi. Ich kann nur sagen, absolut der
Hammer. Softwareentwickler die Eclipse, QTCreator oder VS gewöhnt sind
können da nur müde lächeln, aber Hardwareentwickler die sich seit Jahren
mit öden Editoren rumplagen werden es lieben...
LG
Ich benutze beruflich auch Sigasi. Besonders die Integration von vcom
macht das Arbeiten sehr effizient, weil man sofort bzw. beim Speichern
der Datei alle Warnungen und Fehler im Editor-Fenster angezeigt bekommt.
Auch das Renaming ist sehr gut.
Es ist wie alle Eclipse basierten IDEs ein bisschen träge, aber damit
kann ich leben. Ein paar Bugs sind auch drin (manchmal stürzt er sogar
ab), aber es gibt ständig Updates mit teilweisen neuen interessanten
Funktionen.
Ich möchte nicht mehr mit einem "normalen" VHDL-Editor arbeiten.
> und Blockbearbeitung...
Kann Eclipse übrigens auch: Alt + Shift + A
Ok, Notepad++ hats besser integriert.
Sigasi:
> Es gibt auch eine Kostenlose Demo-Version. Allerdings ist da die Code> Größe beschränkt.
Laut Webseite gehen damit immerhin 2000 bis 5200 Codezeilen:
http://www.sigasi.com/faq/what-small-project
Das Video Tutorial gibt schonmal einen guten Eindruck:
http://www.sigasi.com/content/eclipse-workbench-tutorial
zamiaCAD:
Ich habe das Tutorial durchgearbeitet:
http://zamiacad.sourceforge.net/web/?q=tutorial
Die Simulation klappt bei mir nicht wie beschrieben, der interne
Simulator geht aber.
Ansonsten ist das eher ein Editor mit gewissen
Projektmanagement-Eigenschaften. Syntaxhighlighting und
Projektnavigation gehen, sonst gibt es nicht viel Unterstützung.
Ist trotzdem besser als ein einfacher Editor wie Notepad++.
Zumal sich das mit etlichen Eclipse-Plugins wie z.B. eGit erweitern
lässt.
> zamiaCAD:> Ich habe das Tutorial durchgearbeitet:> http://zamiacad.sourceforge.net/web/?q=tutorial> Die Simulation klappt bei mir nicht wie beschrieben
Hat das mal jemand getestet?
Klappt das bei euch?
Wenn nicht, dann würde ich mal einen Bug-Report schreiben.
Kann ich evtl. in den nächsten Tagen mal machen. Ich hab jetzt erst mal
ein Projekt von mir nach Eclipse mit Veditor "portiert". Das klappt auch
soweit gut, er nimmt auch den ModelSim vcom als Kompiler für den Syntax
Check. Der Error Parser klappt auch einigermaßen, hat aber ein Problem
mit verlinkten Files, die nicht physisch im Projektordner sind.
Ansonsten ist VEditor echt schön, vor allem die automatische
Komponenten-Instanziierung. Mein (Batch-)Build Script lässt sich auch
leicht über external Tools einbinden und so verknüpfen, dass es bei
Crtl+B startet. Schön wäre noch, wenn der Error-Parser dann den Build
Output auch parsen könnte, man kann ja eigene Parser erstellen, aber die
wirken da offenbar nicht (richtig).
Christian R. schrieb:> Kann ich evtl. in den nächsten Tagen mal machen. Ich hab jetzt erst mal> ein Projekt von mir nach Eclipse mit Veditor "portiert". Das klappt auch> soweit gut, er nimmt auch den ModelSim vcom als Kompiler für den Syntax> Check. Der Error Parser klappt auch einigermaßen, hat aber ein Problem> mit verlinkten Files, die nicht physisch im Projektordner sind.> Ansonsten ist VEditor echt schön, vor allem die automatische> Komponenten-Instanziierung. Mein (Batch-)Build Script lässt sich auch> leicht über external Tools einbinden und so verknüpfen, dass es bei> Crtl+B startet. Schön wäre noch, wenn der Error-Parser dann den Build> Output auch parsen könnte, man kann ja eigene Parser erstellen, aber die> wirken da offenbar nicht (richtig).
Das größe Manko an Veditor ist wohl, dass es so gut wie nicht mehr
weiter entwickelt wird. Was schade ist, denn es ist ein wirklich guter
Ansatz. Und leider ist es auch noch nicht so weit, dass es bei meinem
Projekt wirklich ohne größere Fehler läuft. Das parsen das VHDL Codes
funktioniert nicht richtig, und in der Outline steht alles doppelt drin.
Ich hatte mir auch mal den Sourcecode angeguckt, und versucht was dran
weiter zu bauen, aber leider hab ich bisher nicht genug Zeit gefunden
wirklich was zu machen.
@ Klaus: Geht bei dir der Error Parser für Modelsim im Veditor richtig?
Bei mir kriegt der das irgendwie nicht gebacken, die Fehler den Files im
Projekt zuzuordnen. Manchmal geht es, wenn ich probeweise eine Quellcode
Datei direkt im Eclipse Projektverzeichnis habe, aber dann auch nur nach
Sonnenstand. Ich hab ein Testprojekt jetzt so angelegt, dass die VHDL
Dateien usw. nur über linked folders rein hole, da gehts irgendwie erst
recht nicht. Allerdings funktioniert der integrierte Syntax-Parser. Die
doppelte Outline stört jetzt nicht wirklich, ansonsten sind viele Bugs
in der 1.1.7 die man bei testing runterladen kann, behoben.
> ansonsten sind viele Bugs in der 1.1.7 die man bei testing runterladen kann,
behoben.
Kannst du mir mal auf die Sprünge helfen? Auf sourceforge finde ich
nichts...
http://sourceforge.net/projects/veditor/
Hier die Eclipse Update Site: http://veditor.sourceforge.net/testing
Die geht soweit ganz gut, nur dass eben der ModelSim Error Parser nicht
läuft und die Outline manchmal doppelt anzeigt. Ansonsten kann man damit
sehr gut arbeiten...
Nee, keine Ahnung. Aber im Bugtracker waren relativ neue Einträge und
der Bug, dass keine Einstellungen gespeichert werden, ist offenbar noch
nicht allzu lange raus...
Christian R. schrieb:> Ich hab übrigens gestern abend noch das hier gefunden:> http://simplifide.com/drupal6/content/hdl-plugin Mal sehen wie das so> ist, man muss erst eine Lizenz anfordern.
das habe ich auch schon mal getestet.
Es ist sehr brauchbar.
Es werden auch Signale, die nicht mehr verwendert werden rot
gekenzeichnet. So kann man Leichen aus dem Code gut entfernen.
Mit "strg und Leertaste" ging auch noch was interessantes. Ich glaube
es war eine Auswahlliste.
Ich hatte erneut nach einer Testlizenz angefragt aber keine bekommen.
Irgendwann wird man eben kostenpflichtig.
René D. schrieb:> Ich hatte erneut nach einer Testlizenz angefragt aber keine bekommen.> Irgendwann wird man eben kostenpflichtig.
Das ist auch irgendwie undurchsichtig. Irgendwo bei der Installation
steht, dass es frei ist, aber eine Lizenz nötig ist. Ich denke aber dass
man eher mal am Veditor dran bleiben sollte. Wenn der Error Parser
repariert wäre, wäre das Ding äußerst brauchbar.
Interessant wäre noch ein Parser, der die Xilinx XML Files nach dem
Build durchsucht.
Ich schreibe / programmiere auschließlich mit vim (Linux/MacOS).
Verifiziert wird dann mit Modelsim (beruflich) oder GHDL (privat). Zur
Steuerung des Buildprozesses kommen Makefiles, TCL und diverse kleine
Bashscripte zum Einsatz. Als Versionsverwaltung wird Subversion und Git
genutzt. :)
Weiß jemand, wie man an den Quellcode vom Veditor der aktuellen 1.1.7
aus der Testing Update Site kommt? Ich hab mir den SVN Code mal gezogen
und den Unsinn mit dem Filename-Parser berichtigt (ErrorParser.java in
/veditor/src/net/sourceforge/veditor/builder):
Das funktioniert bei mir jetzt zumindest mit den Absolut-Pfad-Ausgaben
von vcom problemlos, damit findet er das File, auch wenn das nur zum
Projekt gelinkt ist.
Allerdings hat diese 1.1.5 Version das Problem, dass sie die Preferences
nicht speichert....also würde das nichts bringen, darauf weiter zu
arbeiten.
Der letzte Commit dort ist übrigens von diesem Jahr, also irgendwas wird
schon noch getan.
> Der letzte Commit dort ist übrigens von diesem Jahr, also irgendwas wird> schon noch getan.
Tatsache. Komisch nur, dass man das nur im SVN sieht, und nicht auch
auch auf sourceforge.
Die letzten Jahre war allerdings nur eine Person aktiv: aghoras
> Weiß jemand, wie man an den Quellcode vom Veditor der aktuellen 1.1.7> aus der Testing Update Site kommt?
Am besten aghoras mal eine PM schreiben.
Um der Diskussion mal den Schwung in Richtung Professionalität zu geben:
Entscheidend sind doch nicht Vorlieben sondern die Effizienz bein
Code-schreiben die ein Editor gewährleistet.
Für mich bedeutet dies fürs VHDL-Code schreiben:
-zwei fenster nebeneinander um Code abzugleichen bzw. nachzuscheuen:
zwei unterschiedliche files (bspw. Port -Definition|Port MAP;Package
mit functions def und File mit Test aufruf;top.vhd|ucf)
unterschiedl. Positionen selbes file (bspw. enum definition - case)
zwischen diesen beiden soll sich leicht (ohne Maus) code auswählen und
übertragen lassen
-zwei Fenster untereinander:
Oben code unten Fehlerreport,
zwischen den fesntern soll man während eine Suche gut wechseln können.
->Multi-Windowing und schneller Wechsel zwischen diesen ist für mich
einer der Hauptgründe für einen Editor zum VHDL-schreiben. Für notizen
ist das nicht so wichtig, da tuts auch ein ein-Fenstereditor. - In
dieser Disziplin hat mich Notepad++ schwer enttäuscht.
Mehrerer Files geöffnethaben und leicht zwischen diesen Wechseln: -
eigentlich
eine Konfortfunktion, hilft aber ungemein in VHDL. Durch das modulare
Konzept zieht sich eine Änderung oft über mehrere Files. Und sei es das
man für modelsim den neuen Signalnamen in "Add to wave" aufnimmt. - das
können inzwischen fast alle editoren, vim m.E. ausgenohmen.
Kopieren von rechtwinkligen Ausschnitten (Spalten-Modus) brauch ich auch
immer mal wieder (templates für MUXer mit hohen FAN-In).
Filebrowser oder Ersatzweise filenamenergänzung.
Setzen von Textmarken
Sprung zum ebenen-ende
Sprung zu Zeilennummer
Blockweises auskommentieren
fürs VHDL an sich ist Syntax-Highlighting mehr eine Komfortfunktion als
Effizienzsteigerung. zeitsparend dagegen das Paste as
(component,Instanz,Testbench, ...) des EMACS-VHDL-mode also das Setzen
von code-templates. Keyword-vervollständigung ist auch ganz nett.
Neben VHDL schreiben ist filevergleich und angleich (neudeutsch merge)
eine Disziplin in der ein editor punkten kann. Auch hier komme ich mit
dem EMACS (im EDIFF-Mode) recht weit, bevorzuge aber dann doch
dedizierte Mergetools.
Insgesamt kann ich mit dem Emacs am Effizientesten VHDL-Code schreiben,
Notepad++ nehme ich so für Notizen oder C-Code.
Notepad++ ist gut im definieren von farblichen Hervorhebung, also man
schnell definiert das im Synthesereport @E rot,@W gelb und @I grau
hervorgehebn wird. (Konfiguriern vom Emacs ist IMHO eine Qual).Emacs
kann dank vhdl-mode fast zur IDE hochgerüstet werden.
Ultraedit benutze ich garnicht mehr, dem fehlt ein
Alleinstellungsmerkmal und irgendwie gefällt mir die Optik nicht.
Für den schnellen Remote-Hack greife ich zu VIM, da effizient bei
geringen Bandbreiten (ssh-Verbindung).
Unter DOS bspw. bei der AVR-Assembler programmierung ist Boxer editor
der Wahl.
Die Editoren von IDE's verwende ich garnicht, da schnarchlangsam und
wenig Komfort. Da wechsele ich lieber zwischen Editor (Code schreiben)
und IDE (Compile-Flow options variieren ) hin und her - solange bis
alles in Scripten etc automatisiert ist.
MfG,
PS: Link zum Emacs VHDL-Mode (Screenshot):
http://www.iis.ee.ethz.ch/~zimmi/emacs/vhdl-mode.gif
T.M. schrieb:> Ich schreibe / programmiere auschließlich mit vim (Linux/MacOS).> Verifiziert wird dann mit Modelsim (beruflich) oder GHDL (privat). Zur> Steuerung des Buildprozesses kommen Makefiles, TCL und diverse kleine> Bashscripte zum Einsatz. Als Versionsverwaltung wird Subversion und Git> genutzt. :)
Auf der Welle schwimme ich auch mit. Hast du noch ein paar Scripte oder
Makefiles?
Man wird durch den Austausch immer effektiver. Ich komme mit GHDL sehr
gut zurecht und habe schon mehrere Anläufe zu modelsim unternommen und
bin immer wieder bei GHDL gelandet.
Aktuell wird der Veditor wieder mehr weiterentwickelt. Schaut euch doch
mal die neue Version an 1.2 mal an (
http://sourceforge.net/projects/veditor/ ). Es wurde unter anderem der
nervige Bug mit verlinkten Files behoben und es gibt mehr Möglichkeiten
bei der Erstellung einer neuen Datei (mehrere mögliche Templates) und es
ist nun möglich die Eclipse-Variablen beim "Synthesize" und beim
"Compile Command" zu verwenden. Zudem wurde der Formatter weiter
verbessert.
Im Wiki findet ihr auch eine Hilfe zum Veditor (
http://sourceforge.net/apps/mediawiki/veditor/index.php?title=Main_Page
)
Wenn ihr weitere Verbesserungsvorschläge habt, dann schreibt sie hier
rein :-)
Ja hab ich schon probiert, was noch fehlt ist ein extra Error parser für
compile/synthesize der auch triggert wenn man build nicht benutzt.
Ansonsten super Arbeit in der Zwischenzeit.
Fritz Jaeger schrieb:> Neben deutlsichen Geschwindigkeitsvorteilen
Hallo!
Interessanter Thread.
Mir ist nicht klar wie ein make-basierter Flow Geschwindgkeitsvorteile
bringt. Kannst Du mir das erklären??? (in der Hoffnung das Fritz Jaeger
noch da ist...)
Heinrich H. schrieb:> Mir ist nicht klar wie ein make-basierter Flow Geschwindgkeitsvorteile> bringt
Hm, das kann man so auch nicht stehen lassen, denn von ISE werden die
entsprechenden Programme XST, NGDBUILD, MAP, PAR usw. auch nur per
command line aufgerufen. Da spart man nichts. Ich lasse die toolchain
per command line (batch) auf einem Server laufen, der die Projekte
automatisiert baut, das dauert genauso lange wie aus ISE heraus.
Christian R. schrieb:> Heinrich H. schrieb:>> Mir ist nicht klar wie ein make-basierter Flow Geschwindgkeitsvorteile>> bringt>>> Hm, das kann man so auch nicht stehen lassen, denn von ISE werden die> entsprechenden Programme XST, NGDBUILD, MAP, PAR usw. auch nur per> command line aufgerufen. Da spart man nichts. Ich lasse die toolchain> per command line (batch) auf einem Server laufen, der die Projekte> automatisiert baut, das dauert genauso lange wie aus ISE heraus.
Sehe ich auch so.
Thomas W. schrieb:> Zur Übersicht habe ich mal einen Artikel angelegt:> http://www.mikrocontroller.net/articles/VHDL_Editoren_und_IDEs
Sehr gute Idee! Man sollte es noch um Funktionalitäten erweitern.
Was ich brauche, wäre eine intelligente Kommentarfunktion wie bei Excel,
um Codezeilen mit Kommentaren versehen zu können. Sowas müssste sich in
einem Extra-file speichern und zublenden lassen. Ebenso müsste es eine
Verknüpfung der Entites geben, sodass man Busbreiten und Namen konsitent
ändern kann, damit erst gar keine Diskrepanzen beim Erweitern der Ports
entstehen. Sowas müsst sich per plugin implementieren lassen, von daher
tendiere ich ja zu einer OpenSOurce Lösung. Vor Jahren schon habe ich
probiert, die SourceForge-Leute dahin zu puschen, aber für VHDL sah man
damals keine Anwendung. Wäre aber mal ein richtig interessantes Projekt.
Schön, dass sich beim Veditor wieder etwas tut, muss ich bei Gelegenheit
noch mal testen.
Es gibt noch ein aktives Projekt mit ähnlichen Namen auf Sourceforge;
http://sourceforge.net/projects/sveditor
Habs mir noch nicht angeschaut, kann aber anscheinend nur Verilog.
> Was ich brauche, wäre eine intelligente Kommentarfunktion wie bei Excel,> um Codezeilen mit Kommentaren versehen zu können. Sowas müssste sich in> einem Extra-file speichern und zublenden lassen.
Warum nicht einfach direkt im Quellcode dokumentieren?
Gängige Editoren können Codeblöcke auf- und zuklappen.
Eclipse versteht auch noch Schlüsselwörter wie TODO.
Externe Datei wird im Team scheitern, weil andere Editoren damit nichts
anfangen können.
> Ebenso müsste es eine Verknüpfung der Entites geben, sodass man Busbreiten> und Namen konsitent ändern kann, damit erst gar keine Diskrepanzen beim> Erweitern der Ports entstehen.
Nennt sich "Refactoring" und ist in allen anderen Sprachen längs
Standard.
Davon abgesehen, such mal nach "VHDL Package".
Nachtrag zu Thema Kommentarfunktion:
Ich benutze hier Redmine und Git (-> Google).
Wenn man sich dazu zwingt folgende Prozesse einzuhalten, dann ist das
wirklich sehr Übersichtlich:
* Es werden grundsätzlich nur kompilierbare, synthetisierbare,
lauffähige Versionsstände eingecheckt.
* Jeder Checkin enthält nur ein einziges Feature oder Bugfix.
* Zu jedem Feature / Bug wird ein Issue in Redmine aufgemacht. Und zwar
noch bevor man mit der Umsetzung beginnt. Dort werden kurz die
Anforderungen, Probleme, Lösungen beschrieben. Diskussionen werden auch
dort geführt (und nicht per Email!). Idealerweise gibt es also zu jedem
Checkin ein Issue (Issues könne auch mehrere Checkins haben).
* Im Checkin-Kommentar wird auf das Issue verwiesen.
* Im Issue wird auf die Checkins verwiesen (geht auch automatisch, wenn
man den vorherigen Punkt berücksichtigt hat).
Das ziehe ich auch bei 1-Mann Projekten durch.
Sehr geil, wenn:
* man nach langer Zeit noch mal ran muss.
* man Ideen mit Lösungsansätzen, Konzepten, Links, etc. bis zur
Umsetzung schon mal da ablegt. So vergisst man nichts und spart sich
doppelte Arbeit.
* jemand anderes das Projekt übernimmt.
* Teammitglieder hinzu kommen.
Ohne geht gar nicht mehr.
Thomas schrieb:> * Es werden grundsätzlich nur kompilierbare, synthetisierbare,> lauffähige Versionsstände eingecheckt.
ok, mit der Einschränkung, dass "synthetisierbar" immer an ein Projekt,
an ein FPGA und Randbedingungen gekoppelt ist. Ich checke normalerweise
einzelne VHDL Module mitsamt ihrer Doku etc ein.
Thomas schrieb:> Warum nicht einfach direkt im Quellcode dokumentieren?
Weil ich nicht einen unlesbaren Quellcode haben will und zudem dort auch
Anmerkungen rein kommen, die nicht an einen Endnutzer / Kunden
weitergeben werden sollen können dürfen. Ausserdem gibt es
Dokumenationsaspekte, die an ein bestimmtes Projekt gekoppelt sind und
die ich gerne vom Code getrennt hätte, wie requirements.
Was mich an der Eclipse-Lösung stört, ist dass man zwei IDEs parallel
laufen lassen muss. Ich mache es nämlich genauso wie Thomas (Gast): Nur
was läuft, wird auf den Build-Server (bei uns TeamCity) eingecheckt.
Daher brauch ich immer mal die ISE im Normal-Modus, weil man einfach so
schnell mal die aufbereiteten Logs bekommt. Außerdem hab ich mit
Eclipse-VEditor noch keine sinnvolle Möglichkeit gefunden, nur die
sinnvollen Dateien ins Projekt einzubinden, denn ISE müllt ja das
Arbeitsverzeichnis immer so zu. Eclipse zeigt dann brav alle erzeugten
Dateien in der Projektübersicht an.
Oder wie macht ihr das mit dem VEditor?
Millterweile benutze ich schon recht lange Notepad++ als externen Editor
in ISE, hab mir da auch noch Syntax-Dateien für UCF geschrieben. Das
reicht für das meiste. Lediglich refactoring und Typ-Anzeige bei
mouse-over fehlt mir da...
J. S. schrieb:> Ausserdem gibt es> Dokumenationsaspekte, die an ein bestimmtes Projekt gekoppelt sind und> die ich gerne vom Code getrennt hätte, wie requirements.
Dafür gibt es passende Tools, wie ReqTracer.
Damit kann man die Anforderungen auf verschiedenen Abstraktionsebenen in
verschiedenen Dokumenten halten. Das Tool prüft dann über Verknüpfungen
(Tags) in wieweit die Anforderungen bereits erfüllt sind.
Nette Sache, wurde ich mir als Open Source wünschen.
Duke
Christian R. schrieb:> Außerdem hab ich mit> Eclipse-VEditor noch keine sinnvolle Möglichkeit gefunden, nur die> sinnvollen Dateien ins Projekt einzubinden, denn ISE müllt ja das> Arbeitsverzeichnis immer so zu.
Mein Tip:
Alle selbsterstellte Dateien (vhd, ucf, etc...) in eigene Unterordner
sortieren. ISE zwingt ja keinen die sourcefiles im Work-Ordner zu
haben...
Heinrich H. schrieb:> Fritz Jaeger schrieb:>> Neben deutlsichen Geschwindigkeitsvorteilen>> Hallo!> Interessanter Thread.> Mir ist nicht klar wie ein make-basierter Flow Geschwindgkeitsvorteile> bringt. Kannst Du mir das erklären??? (in der Hoffnung das Fritz Jaeger> noch da ist...)
Hallo und danke für die Nachfrage.
Die Aussage ist fehlinterpretierbar da vom falschen blickwinkel aus
gemacht.
Gemeint ist das ein vom Projectnavigator (PN) angestossener Designflow
durch den höheren Ressourcenbedarf (Overhead)
mehr Rechnerleistung benötigt als ein durch ein schlankes make
angestossener.
Schon bei "normalen" Arbeits-PC kann es zu permanenten Swapping kommen
da GUI und Tool-Daten nicht gleichzeitig
in den physikalischen RAM passen. Gerade bei frühen Linux-Varianten
(ISE9) ging ein Aufschrei über
schneckenlangsame GUI-Synthesen durch die Foren, so dass zu vermuten war
das zu jedem Display-Update der Projektnavigator von der
Festplatte neugeladen und anschließend wieder ausgelagert werden musste.
Wohl ein Grund warum Xilinx die GUI-Basis
vor einiger Zeit komplett ersetzte (von Java auf Qt?) Alternativ kann
man unter Linux auch auf Projectnavigator
und GUI (X11) verzichten und die Synthese allein über die Konsole (tty
oder ptty) steuern. Dann steht fast der gesamte RAM
der Synthese zur Verfügung. Ferner vermute ich das der PN weit häufiger
auf die Platte zugreift (Log updaten,
fileänderungen erkennen) als make. Auch hier kann eine Schwelle erreicht
werden, bei der die Leistung deutlich
einbricht da der Lesekopf nur noch im ZickZack über die Scheiben huscht.
Ebenfalls werden die tools vom PN
anders gestartet als vom make, der commandline Schalter -intstyle steht
nicht auf xflow. Wohl um damit die generierung von xml zusätzlich txt zu
steuern.
Auch kann die Verbindung zum server in der Bndbreite beschränkt sein und
die übertragung der GUI-Daten bremst
den Designflow aus. Bspw. eine X11 - Verbindung zu einem
Linux-Mietserver über ADSL. X11-beschleuniger die
den Protokollaufwand minimieren (Message queing, vereinfachtes
handshake) helfen in solchen Situationen, aber
ideal ist in diesem Fall ein Linux komplett ohne GUI-Code.
Allerdings steht heutzutage soviel Rechenleistung zur Verfügung das das
zumindest bei kleinen Designs kaum
zzu Tragen kommt. Ich hab grad an auf eimem Win-64 laufend auf
i5@2.27GHz mit 4GB ein s3-200k Design
mit 80% Slice Auslastung in 2 min 55 sec bis zum PROM-File generiert.
Gleiche Zeit bei PN-Flow und make-flow.
2006 habe ich für ein s3E-1000k noch deutliche Unterschiede erlebt so
etwa 5 min versus 15 min. Wobei da noch 2,3
kleine Handoptimierungen dazu kamen (z.B. LOC-Constraint für DCM) die
Optimierungen durch die Software unnötig machten.
MfG
Kennt sich jemand mit Eclipse aus? Ich habe versucht das ans Laufen zu
bekommen, (Keppler) erhalte aber die Fehlermeldung dass es keine Win32
Anwendung sei. Java ist drauf.
Duke Scarring schrieb:> Dafür gibt es passende Tools, wie ReqTracer.
Wie habe ich mir das vorzustellen?
Gehen wir mal von REQs aus, die man in einem Tool wie Doors vorliegen
hat. Wie verknüpfe ich die dynamisch mit dem Source Code?
Bislang kopiere ich einfach die REQ-Nummer dorthin.
Juergen S. schrieb:>> Dafür gibt es passende Tools, wie ReqTracer.> Wie habe ich mir das vorzustellen?> Gehen wir mal von REQs aus, die man in einem Tool wie Doors vorliegen> hat. Wie verknüpfe ich die dynamisch mit dem Source Code?> Bislang kopiere ich einfach die REQ-Nummer dorthin.
Ich kenne Doors nicht (nur Windows ;-).
Bei ReqTracer werden alle Dokumente (z.B. allg. Anforderungen,
technische Anforderungen, Schaltpläne, Quellcode) in einem Projekt
zusammengefasst. Über Tags wird dann ermittelt, welche Anforderungen
schon erfüllt sind und welche nicht. Die Tags dürften Deinen REQ-Nummern
entsprechen.
Duke
P.S.: Bisher habe ich in das Tool nur mal kurz reingeschnuppert.
Fritz Jaeger schrieb:> Gemeint ist das ein vom Projectnavigator (PN) angestossener Designflow> durch den höheren Ressourcenbedarf (Overhead)
finde ich interessant, was Du da schreibst, vor allem im Hinblick auf
das Thema RAM. Nach Deiner Auffassung sollte man also auf GUI
verzichten, wenn es geht?
Wie sieht es mit der grafischen Eingabe der FPGA / VHDL zur
automatischen Dokumentation aus? Da läuft ja noch viel mehr, als nur
etwas Projektnavigation.
HTI schrieb:> Fritz Jaeger schrieb:>> Gemeint ist das ein vom Projectnavigator (PN) angestossener Designflow>> durch den höheren Ressourcenbedarf (Overhead)>> finde ich interessant, was Du da schreibst, vor allem im Hinblick auf> das Thema RAM. Nach Deiner Auffassung sollte man also auf GUI> verzichten, wenn es geht?> Wie sieht es mit der grafischen Eingabe der FPGA / VHDL zur> automatischen Dokumentation aus? Da läuft ja noch viel mehr, als nur> etwas Projektnavigation.
Fritz Jaeger schrieb:
> Gemeint ist das ein vom Projectnavigator (PN) angestossener Designflow> durch den höheren Ressourcenbedarf (Overhead)
Hallo HTI,
das eine hat mit dem anderen wenig zu tun. Da Synthese nach Abschluß der
Codeeingabe startet, besteht keine Notwendigkeit, beide glecihzeitig
laufen zu lassen. Ideal ist es ohnehin einen Server ausschließlich für
Synthese zu betreiben und Codeeingabe auf einen anderen Rechner zu
bewerkstelligen. Da fast alle Text-Editoren
eine GUI voraussetzen (spontan fällt mir mit dem vim nur ein einziger
halbwegs auf VHDL optimierte Editor ein der auch auf einem /dev/tty
läuft) ist ein Verzicht auf eine GUI während der Sourceeinstellung eine
reichlich harte Selbstbeschränkung.
Dagegen ist nach meiner Erfahrung ein script/makefile basiertes
Designfile gegenüber dem Projektnavigator kein Verzicht sondern Gewinn.
Das man für das Aufsetzen eines scriptes die toolchain-doku gelesen und
verstanden haben muß, führt dazu dass man die tools beherrscht und nicht
umgekehrt. Ist natürlich mit mehr Lernaufwand verbunden im Vergleich zum
Trial und Error Häkchen setzen.
Aber mehr Lernaufwand - mehr Wissen
und mehr Wissen - mehr Macht (über den Computer ;-))
> Wie sieht es mit der grafischen Eingabe der FPGA / VHDL zur> automatischen Dokumentation aus?
Der HDL-Designer ist mir geläufig, meiner Erfahtung nach dokumentiert
der HDL-Designer aber keinen Code automatisch. Sondern damit wird
grafischer "Code" erstellt, der in Grenzen selbstdokumentierend ist.
Dokumentierend in dem Sinne, das sich die implementierte Funktion
ohne Programmierkenntnisse erschliesst. Auch textuell kann
selbstdokumentierter Code erstellt werden, zumal VHDL sich stark an
natursprachliches Englisch anlehnt.
Ich ziehe ein übersichliches Blockdiagramm (Visio, Inkscape, Handskizze)
dem HDL-Designer vor.
In einem Blockdiagramm kann man genau den Detailgrad unterbringen der
zur Erläuterung nötig ist. Beim (synthesefähige) HDL-Designer Code
dagegen müssen immer alle Signale etc gezeichnet werden. Und die
Erstellung ist nicht unbedingt schneller als mit dem Emacs im VHDL-Mode.
Abgesehen von dem Liniengewirr das schon genau geplant sein will damit
es verständlich bleibt.
Gruß,
> das eine hat mit dem anderen wenig zu tun. Da Synthese nach Abschluß> der Codeeingabe startet, besteht keine Notwendigkeit, beide> glecihzeitig laufen zu lassen
Was ist bei paralleler Weiterentwicklung?
> Sondern damit wird grafischer "Code" erstellt, der in Grenzen> selbstdokumentierend
Von meiner Warte aus sehe ich ein Problem darin, dass viele
FPGA-Programmierer aus der Softwareecke stammen und sich dort einen
Entwicklungsstil angeeignet haben, wie Rumpelstielzchen. Ohne irgendein
Konzept zu machen, wird drauflos gehämmert, zusammengeschrieben und
später geändert ohne Ende. Der Weg zum Ziel ist bei FPGAs aber oft viel
weiter, als bei z.B. C, weil erst einmal eine Hardware und ihre
Verschaltung definiert werden muss, bevor überhaupt irgend eine Funktion
da ist, deshalb ist schlampiges Vorgehen auf dem Sektor ungleich
problematischer und zeitraubender.
Die grafische Eingabe ist eine Methode, um den Entwickler dazu zwingen,
darüber nachzudenken, was er macht und gleichzeitig ein Weg, eine
verständliche Dokumentation der Arbeit zu erwirken. Die IDE wiederum
gibt ein standardisiertes Vorgehen vor, das von allen Entwicklern
verstanden wird. Das Sripten und makefilen verführt eher dazu, alles
eigenbrödlerisch und individuell zu machen.
> Die grafische Eingabe ist eine Methode, um den Entwickler dazu zwingen> darüber nachzudenken, was er macht und gleichzeitig ein Weg eine> verständliche Dokumentation der Arbeit zu erwirken.
Den Standpunkt hatte ich noch vor Jahren ebenfalls so vertreten.
Inzwischen sehe ich das etwas differenzierter:
Ich habe in der Vergangenheit mit verschiedenen grafischen Wwerkzeugen
(Mentor HDL Designer, Siemens Data Flow, Xilinx Schematic, Altera
Schematic, Labview FPGA, Diamond 3D (DSP+FPGA), MATLAB+Simulink)
gearbeitet und alle auferlegten mir immer wieder Beschränkungen, was die
volle Nutzung der in VDHL denkbaren und zur Umsetzung der Anforderung
nötigen Funktionen angeht. Nicht selten waren einfache Sachen garnicht
oder nur sehr umständlich zu formulieren. Das Grundproblem war immer,
dass ich erst viele Zusatzfunktionen, Methoden und Denkweisen des
Herstellers erlernen musste, um simple Dinge hinzubekommen, die dann
aber keinen wirklichen Mehrnutzen hatten. Ein grossen Problem waren die
programmtypischen Macken, Fehler, Mängel und Abstürze. Das
Enttäuschendste war, dass die Grafik, die hinterher dabei rauskam, nicht
wirklich zur besseren Übersicht beigetragen hat, weil es in einem
gewaltigen Drahtverhau mündete, siehe auch das hier:
Beitrag "Re: FPGA grafisch programmieren"
Viele FPGA Designer, die ab und an grafisch arbeiten, beschränken sich
daher darauf, die Signalverbindungen mit signal stubs zu realisieren,
was dazu führt, dass ein grosses Sheet mit einer Ansammlung an Symbolen
herauskommt, was nicht so wirklich besser ist
Ich bevorzuge daher nach wie vor ebenfall die händische Dokumentation
und zeichne einen übersichtlichen Datenfluss und/oder einige Schematics,
um die wesentlichen und wichtigen Dinge aufzuzeigen und zu planen, gehe
dabei aber spezifischer vor. Mithin sehe ich das ähnlich, wie Fritz
Jäger. Für simple Funktionen braucht es keine Grafik, während
verschachtelte Funktionen gar nicht genug Doku bekommen können. Meistens
nutze ich dazu Excel, weil ich damit die Möglichkeit habe, Timings und
Delays bei Modulen einzutragen und bei der Umplanung fortberechnen zu
lassen. Das hilft bei der Ersterstellung enorm. Dazu kann man Busse und
Signale in unterschiedlichen Darstellungen auch unterschiedlich farbig
anlegen, um den jeweiligen Aspekt zu dokumentieren, z.B. die
Zugehörigkeit zu einer bestimmten Domain oder einer Zeitebene, wie bei
pipelines. Solch ein Output ist wertig, von jedem lesbar und hochgradig
wiederverwendbar, sei es für Derivate oder neue Designs. Die Lesbarkeit
durch andere und die Druckbarkeit ist bei Excel auch besser gegeben.
Mit den mir bekannten Grafiktools ist das nicht annähernd möglich. Meist
fehlen die Farben / Farbebenen, oftmals fehlt der Platz und das Blatt
ist zu klein, die Schriften sind nicht lesbar oder skalierbar. Wenn man
es farbig haben will, geht es oft nur über umständliche
Symbolbearbeitung, wobei die Farben bei Aktualisierung des Sysbols
teilweise wieder vergessen werden. Nervig ist, dass man bei der
Neuplazierung von Bauteilen erstmal manuell Platz schaffen und Drähte
umverlegen muss, um es hinlegen zu können, obwohl ein Tool das
automatisch können sollte. Zu allem Überfluss werden dann völlig
unsinnige Verbindungen erzeugt, wenn beim Verschieben irgendetwas
ungewollt angeschlossen wird. Der grosse Denkfehler vieler tools ist,
dass aus eine grafischen Liniengruppe eine logische Verbindung erzeugt
wird, statt umgekehrt eine durch den Bediener vorgegebenen logischen
Verbindung dynamisch grafisch darzustellen.
Ein gewaltiges Problem ist die Portierung der Schematics in neue
Versionen oder indie Tools anderer Hersteller. Protokolliert man mal den
Aufwand, der dabei entsteht, so sieht man rasch, dass man mit getrennter
Doku und VHDL besser hinkommt. Ich habe mehrfach schon Analysen zu dem
Thema gemacht, z.T. auch den Firmen vorgelegt, für die ich tätig war und
die Schlussfolgerung war immer dieselbe:
***********************************************************************
Die grafische Repräsentationen von Schaltungen, deren Funktion und
Timing, sowie das ausdrückliche bildliche Dokumentieren einiger
wichtiger Aspekte ist gerade bei grösseren FPGA-Designs generell zu
empfehlen, da in den meisten Fällen von grossem- bzw. in vielen Fällen
wenigstens von mittlerem Vorteil. Die direkte grafische Programmierung
mit den existenten tools jedoch leistet viele dieser Anforderungen
nicht. Vielmehr stellen sie teils systembedingte / teils konzeptionelle
(oftmals unnötige) Hürden in den Weg, da sie nicht gut durchdacht, oft
schlecht programmiert und unvollständig sind. Damit wird die Arbeit in
den meisten Fällen unproduktiv, teils frustierend und kontraproduktiv.
Im Sinne einer flexiblen und der individuellen Anforderung angepassten
Planung und Doku ist die manuelle grafiche Representation definitiv
vorzuziehen.
***********************************************************************
An diesem Sachverhalt wird sich nicht nur deshalb nichts ändern, weil
die einschlägigen Hersteller nicht in der Lage oder Willens sind,
geradlinige Konzepte aufzubieten sondern auch deshalb, weil die
FPGA-Designs immer hetrogener werden. Quellen aus einem
herstellerabhängigen SOC-builder müssen mit Algorithmen verheiratet
werden, die ein Parser erzeugt hat, wie z.B. dem MATLAB HDL Coder. Auch
müssen C-Programme aus einem ARM-Entwicklungsumgebung dynamisch gebunden
werden.
Die andere Frage, ob man mit der Hersteller-IDE oder lieber sriptbasiert
arbeitet, sehe ich weniger kritisch. Von der einen Seite her hast Du
durchaus Recht, wenn Du sagst:
>Das Sripten und makefilen verführt eher dazu, alles eigenbrödlerisch> und individuell zu machen.
Das muss aber nicht zwingend so sein und umgekehrt, garantiert die
grafische IDE auch nicht, dass das Vorgehen ordentlicher oder
strukturierter wird. Wenn die Grafikeingabe oder die IDE-basierte
Methodik nämlich beginnt, umständlich oder hinderlich zu werden, beginnt
meistens erst der Zeitdruck und die Schlampigkeit: Mir begegnen viele
Design, die ursprünglich mal als Grafik begonnen wurden, bei denen es
aber versäumt wurde, die diesbezüglichen Vorteile auch zu nutzen. Das
Ergebnis sind gleichfarbige und gleichdicke Verbindungsdrähte, die eher
verwirren, als aufklären und anonyme Signale, die man weder im
Chip-Editor noch im Simulator wiederfindet. Das ist mehr Chaos als
Nutzen.
Spripte lassen sich genau so einchecken und dokumentieren, wie die
IDE-file, wenn nicht noch besser. Am Ende müssen die Randbedingungen der
Simulation und Synthese ohnehin in irgendeiner Weise festgehalten und
aufgelistet werden, um sie verständlich zu halten und für einen
Weiterbearbeiter nutzbar zu machen. Scripte erhöhen mitunter auch die
Portierbarkeit, so nutzen die aktuellen FPGAs von Altera und Xilinx
inzwischen beide SDCs.
Ganz ohne Grafik bzw spezifischer IDE wird es natürlich nicht gehen,
wenn man z.B. SOPC Systeme zusammenklickt. Man kann aber die Nutzung von
IDE ohne Probleme auf solche Fälle begrenzen.
Jürgen Schuhmacher schrieb:>> Die grafische Eingabe ist eine Methode, um den Entwickler dazu zwingen>> darüber nachzudenken, was er macht und gleichzeitig ein Weg eine>> verständliche Dokumentation der Arbeit zu erwirken.> Den Standpunkt hatte ich noch vor Jahren ebenfalls so vertreten.> Inzwischen sehe ich das etwas differenzierter:
Wie stellst Du dann bitte sicher, dass der Entwickler den manuellen Plan
immer konsistent hält zu dem, was er in VHDL Text eingibt?
> Mit den mir bekannten Grafiktools ist das nicht annähernd möglich. Meist> fehlen die Farben / Farbebenen, oftmals fehlt der Platz und das Blatt> ist zu klein, die Schriften sind nicht lesbar oder skalierbar.
Das gibt es die Möglichkeit, Hierarchien einzuführen und zu verwenden.
Und Farben braucht man ja nicht unbedingt.
> Nervig ist, dass man bei der Neuplazierung von Bauteilen erstmal> manuell Platz schaffen und Drähte umverlegen muss, um es hinlegen> zu können, obwohl ein Tool das automatisch können sollte.
Musst Du bei einer manuellen Darstellung aber auch.
HTI schrieb:> Wie stellst Du dann bitte sicher, dass der Entwickler den manuellen Plan> immer konsistent hält zu dem, was er in VHDL Text eingibt?
Wie stelle ich sicher, dass der viel grössere Rest der Doku konsistent
ist zum Stand der Entwicklung? Wie stelle ich sicher, dass das
Grafikdesign den Requirements entspricht? Wie stelle ich sicher, dass
das Sript das den Simulator steuert, die realen Abläufe im Feld
widerspiegelt, die als Punkteliste in der Spec stehen? Wie stelle ich
sicher, das die SW, die auf dem Softcore läuft, das tut, was in der SPEC
seht? Die wird ja auch nicht grafisch eingegeben sondern existiert gfs
nur als Prinzipablauf.
> Das gibt es die Möglichkeit, Hierarchien einzuführen und zu verwenden.
Hierarchien möchte ich dann erwenden, wenn es sinnvoll und angezeigt ist
und nicht davon abhängig machen, was auf das Bild passt. Das Tool darf
nicht durch seine Restriktionen vorgeben, wie ein Design logisch
struktiert werden muss. Ausserdem sprengt schon ein mittleres Design
das, was einem manche als Maximum so anbieten.
> Und Farben braucht man ja nicht unbedingt.
Da bin ich etwas anderer Ansicht. Mit den Farben erhöhe ich die
Erkennbarkeit von domains und Taktabhängigkeiten auf einen Blick und
erspare dem Betrachter das unnötige Suchen, wo ein Signal überall
verwendet wird. Wenn Du Dir das Bild oben mal im Original ansiehst,
wirst Du innerhalb von wenigen Sekunden sehen, welches Modul welchen
Takt verarbeitet, wo es Domainübergänge gibt und wo nicht.
http://www.96khz.org/files/2007/va-synth-spartan3-96k-video.png
Man sieht auch sofort, was VHDL Schaltung ist und was echte
FPGA-Hardware-Komponente wie PLL / Buffer ist. Mit den Farben kann ich
Wichtiges markieren und die Zusammenhänge der Daten-Ports auf einen
Blick verdeutlichen ohne dass Quelle und ihre Senken auf dem Blatt
gesucht werden müssen. Im Vergleich zur Vorgängerschaltung ohne Video
ist auf den ersten Blick zu erkennen, dass die Module anders getaktet
wurden und es folglich bei der neueren Ausgabe mehr Synchronizer geben
muss, wegen der komplexeren Domainstruktur etc.
http://www.96khz.org/files/2006/va-synth-spartan3-96k.png>> Nervig ist, dass man bei der Neuplazierung von Bauteilen erstmal>> manuell Platz schaffen und Drähte umverlegen muss, um es hinlegen>> zu können, obwohl ein Tool das automatisch können sollte.> Musst Du bei einer manuellen Darstellung aber auch.
Es geht zumindest in Excel aber einfacher. 2-3x "Zeilen einfügen" in X
und Y und die Bauteile rücken zur Seite. Bei vielen tools muss ich erst
das halbe Blatt selektieren und verschieben.
Man kanns auch übertreiben.
Im Prinzip denke ich schon, dass man soviel wie möglich in ein
Blockschaltbild packen soll, aber nicht durch die ganzen Ebenen
hindurch. Im oberen Blockbild sind IBUF zusammen mit FF und
irgendwelchen Komponenten dargestellt, wem soll das was bringen,
erschließt mir persönlich überhaupt nicht.
Ich mache alles ähnlich, nur eben mehr schematisch und wirklich nur,
dass man das Prinzip versteht. Solche Details wie FF/MUXer, und schon
gar solche spezielle Komponenten wie IBUF oder ODDR haben da meiner
Meinung nach nichts verloren (sehr wohl aber Farben für unterschiedliche
Clock-Domänen). Ist aber wohl Ansichtssache.
Sollte sich konzeptionell was ändern, dann wird das Blockschaltbild eben
nachgezogen. Passiert aber extremst selten, weil ich eben nicht ins
Detail gehe.
Grüße
Kest
Kest schrieb:> Im Prinzip denke ich schon, dass man soviel wie möglich in ein> Blockschaltbild packen soll, aber nicht durch die ganzen Ebenen> hindurch.
Das ist der physikalische Teil der Schaltung, so wie Du ihn auch mit
eimem CAD Tool eingeben würdest, wenn die VHDL-Blöcke Chips wären, bzw
es gar kein FPGA wäre. Ab diesem physikalischen Toplevel ist der Rest
dann virtuelles Logikdesign. Ein Blockschaltbild hingegen wäre z.B. das
hier:
http://www.96khz.org/images/synthesizerstructure3.gif> Im oberen Blockbild sind IBUF zusammen mit FF und> irgendwelchen Komponenten dargestellt, wem soll das was bringen,> erschließt mir persönlich überhaupt nicht.
Bezüglich der IBUFs kann man geteilter Meinung sein, weil sie mehr oder
weniger an jedem Pin existieren aber schon bei den FFs macht es Sinn, zu
unterscheiden, ob ein Design noch IOFFs in den Pins nutzt, oder nicht.
Das ist für die Betrachtung bei der Latenz von Businterfaces wichtig,
wenn nur das Logikdesign innen simuliert wird. Natürlich kannst Du die
IOFFs auch im Design verstecken und sie in all jenen Ports als existent
annehmen, wo Du per constraint welche hinkommandiert hast, aber ich
zeichne sie hin, weil es sich um reale physikalische FPGA-Elemente
handelt - im Gegensatz zu virtuellen FFs aus den rising_edge-Konstrukten
im Logikdesign, welche hin-und her geschoben und wegoptimiert werden
können.
Die ODDR sind deshalb drin, weil man Takte (hier sind es Ref-Takte) auch
halbiert über FFs ausgeben könnte. Zudem muss irgendwo die Polarität
dokumentiert sein, wegen edge/center aligned Problematik und auch die
ODDR sind physische FPGA-Resourcen. Natürlich stellt sich die Fraga, ob
man sowas hinmalen muss, aber irgendwo muss es ja niedergelegt werden,
also kann ich es auch eintragen. (Ist ja nur Copy-Paste :-)). Ansonsten
muss man eben im VHDL nachsehen, wie der Buffer an D0,D1 beschaltet ist
aber es ging ja gerade darum, ob Grafik verwendet werden soll.
Kest schrieb:> Man kanns auch übertreiben.
Ich habe es selten gesehen, daß die Dokumentation im Bereich FPGA
übertrieben wurde. Meistens ist es doch umgekehrt:
Die Leutz verrennen (um nicht zu sagen "verlieben") sich in ihre
Erzeugnisse, tippeln und basteln vor sich hin und generieren gewaltige
Textfiles, wo sie am Ende selber nicht mehr wissen, wo vorne und hinten
ist. Am Schlimmsten sind die. die es für eine Leistung oder
Qualitätsmerkmal halten, das angerichtete Chaos noch zu beherrschen.
Wehe dem, es muss einmal ein anderer ran zum Ändern, dann ist aber die
K...e am Dampfen!
Im Zweifel lasse ich eher zuviel, als zu wenig Doku machen, weil ein
paar Stunden mehr kaum etwas kosten im Vergleich zu dem, was jemandem an
Einarbeitung in unbekannten oder schlecht dokumentierten Code
bevorsteht. Da können kleinste Verständnisfehler oder -mängel schon zu
viel unnötigem Suchen und falschem Weiterbauen führen und am Ende des
Tages hat man mehr Änderungsverstrickung, als sonst was. Es kann nicht
sein, dass man erst aufwändiges reengineering betreiben muss, um die
Grundfunktionen einer Schaltung zu verstehen. Den Heinis, die immer noch
glauben, man könne sich alles aus dem Code zusammensuchen, wenn man fit
genug ist, gehört eins hinten drauf gekkloppt!
Leider ist das aber eher die Regel, als die Ausnahme.
FPGA-Vollprofi schrieb im Beitrag #3370503:
> Am Schlimmsten sind die. die es für eine Leistung oder> Qualitätsmerkmal halten, das angerichtete Chaos noch zu beherrschen.
Ok, da ist wirklich was dran. Von der Sorte habe ich einige
kennengelernt. Die hocken wie die Glucken auf dem Source Code und nur
sie haben wirklich Ahnung, wo dort wie was genau funktioniert, weil es
nirgendwo versinnbildlicht ist.
Man muss aber sagen, dass sie da in der jüngsten Zeit viel getan hat.
Siet Einführung von UML, Coding-Standards und milestone basierten
Entwicklungen sind die Softwareentwickler (und ich sehe VHDL hier
ausdrücklich im Bereich der Software!) immer mehr dazu gezwungen,
ordendlich zu arbeiten, sich Konzepte zu machen, bevor sie starten und
wenigstens ihr Machwerk zu dokumentieren.
Nach meiner Erfahrung hängt dabei alle davon ab, wie genau die jeweilige
Firma oder der Vorgesetzte hinsieht, bzw Anforderungen stellt. Oft
kommen solche Anforderungen inzwischen ja auch aus
Zertifizierungsvorschriften und Zulassungnormen, die es einzuhalten
gilt.
Meine Frage in dem Zusammenhang wäre: Gibt es sowas ähnliches wie SPICE
oder DMMI auch in der Hardwarenahen Softwareentwicklung, konkret der
VHDL-Entwicklung?
Und dann: Mit welcher IDE kann man das erstellen? Gibt es für VHDL sowas
wie einen UML-wrapper oder ein Abbild des Codes?
Wie wird die Software für ein FPGA gemacht, das noch einen Prozessor
enthält?
Softwerker schrieb:> Meine Frage in dem Zusammenhang wäre: Gibt es sowas ähnliches wie SPICE> oder DMMI auch in der Hardwarenahen Softwareentwicklung, konkret der> VHDL-Entwicklung?>> Und dann: Mit welcher IDE kann man das erstellen? Gibt es für VHDL sowas> wie einen UML-wrapper oder ein Abbild des Codes?>> Wie wird die Software für ein FPGA gemacht, das noch einen Prozessor> enthält?
da sprichst du etwas an...
Ich kenne kein gescheites System, vor allem, wenn man seine Designs auch
fuer mehrere Hersteller (es faengt schon bei verschiedenen Devices eines
Herstellers an) zur Verfuegung stellen will.
Es ist und bleibt momentan 'Handarbeit'! @work habe ich momentan viele
Designs (zum Glueck wenige die auch noch einen Soft-CPU-core verwenden),
die auf jeweils mehrere Zielplattformen laufen sollen/muessen. Der
'Code' (VHDL oder Programm) ist da immer wieder dupliziert (wir
verwenden Subversion als 'Ablage'), man muss also Aenderungen und
Bugfixes immer in allen Designs von Hand nachziehen...
Ist Schade, ist aber so, und ich hab' auch keine wirklich gute Idee wie
man das besser loesen koennte...
Aber zum Thema des Threads: Moeglichst alles zu einem Design in lesbaren
ASCII Files zu halten und nicht ueber Tools (auch noch grafisch) eines
Herstellers zu machen, halte ich fuer eine sehr gute Idee. Ein Textfile
kann ich auf einer beliebigen Plattform ohne das jeweilige Tool
installiert zu haben nach Jahren noch oeffnen/lesen und ich sehe dann,
was da gemacht wird/wurde. Deshalb verwende ich auch nach Moeglichkeit
keine herstellerspezifische Tools um z.B. einen Fifo oder ein RAM zu
beschreiben. Generisches VHDL ist da einfach besser...
Zum schnellen arbeiten mal in der GUI rumklicken ist ja ok, aber wenn es
etwas 'dauerhaftes' sein soll, dann moeglichst generisch. Und das ist
halt ein STINO ASCII-File... Um einen fremden Design zu analysieren oder
verwenden zu wollen muss es moeglich sein einfach einen Texteditor (mit
Syntaxhighlighting) anzuwerfen. Und dazu gehoeren nicht nur die Designs,
sondern auch die Toolchain zum zusammenbauen (also Toolaufrufe in
lesbarer Form).
Ist nicht das Optimum, aber im Moment das was mit den Tools moeglich
ist...
HTI schrieb:>> das eine hat mit dem anderen wenig zu tun. Da Synthese nach Abschluß>> der Codeeingabe startet, besteht keine Notwendigkeit, beide>> glecihzeitig laufen zu lassen>> Was ist bei paralleler Weiterentwicklung?>>> Sondern damit wird grafischer "Code" erstellt, der in Grenzen>> selbstdokumentierend>> Die grafische Eingabe ist eine Methode, um den Entwickler dazu zwingen,> darüber nachzudenken, was er macht und gleichzeitig ein Weg, eine> verständliche Dokumentation der Arbeit zu erwirken.
A fool with a tool is still a fool. Deutsch: Tolle Tools machen aus
einem Narren keine(n) Entwickler/-in der/die gute Designs bliefert. Zur
Sicherstellung der Code-qualität haben sich bewährt:
-Style Guides (Konventionen by der Namensvergabe, erlaubte Konstrukte,
etc)
-moderierte und vorbereitete Codereviews
-Reuse von Kompnenten aus Firmenbibliothek (Register-package, aber auch
Counter, IF zu Peripherie)
> Von meiner Warte aus sehe ich ein Problem darin, dass viele> FPGA-Programmierer aus der Softwareecke stammen und sich dort einen> Entwicklungsstil angeeignet haben, wie Rumpelstielzchen. Ohne irgendein> Konzept zu machen, wird drauflos gehämmert, zusammengeschrieben und> später geändert ohne Ende.
Meines Erachtens liegt die konzeptlose Programmierweise genau daran das
die Entwickler keine Orientierung haben, wie man das macht. Sie haben es
in der Hochschule nichtgelernt und in der Firma findet sich auch keiner
der sie dazu befähigt. Also Richtlinien an die hand geben, templates für
Dokumente zur Vefügung stellen und hand eines bestehenden Projektes
einarbeiten lassen.
Aber da bisher in der Firma nie struktiriert FPGA's gebaut worden, sind
die neuen FPGA-Entwickler überfordert und scheitern daran sich selbt
eine Orientierung vorzugeben.
MfG,
Softwerker schrieb:> Meine Frage in dem Zusammenhang wäre: Gibt es sowas ähnliches wie SPICE> oder DMMI auch in der Hardwarenahen Softwareentwicklung, konkret der> VHDL-Entwicklung?
Mit dem Kürzel DMMI kann ich und meine internetbasierten
Gedächniserweitungenen nichts anfangen. Was ist das? (Neugierig wie
immer)
Softwerker schrieb:> Und dann: Mit welcher IDE kann man das erstellen? Gibt es für VHDL sowas> wie einen UML-wrapper oder ein Abbild des Codes?
Genau genommen brauchst du keinen UML-Wrapper sondern ein Tool für
SysML, das einen Im-/Export von VHDL kann.
SysML ist aus UML entstanden, damit komplette Systeme und nicht nur
Software modeliert werden kann. Requirements und Nebenläufigkeit gehören
fix dazu. Details: https://de.wikipedia.org/wiki/SysMLhttp://www.sysml.org/
In unserer Firma wird von den Applikationssoftware Entwicklern für UML
Enterprise Architekt eingesetzt, die haben in einer grösseren Version
auch SysML und VHDL Unterstützung (Aus Mangel an Lizenz kann ich das
leider nicht testen. Und nein wir FW Entwickler nutzen kein UML, auch
keine Versionverwaltung und z. B. kein Doxygen... Man sieht von weitem
wer Elektrotechnik und wer Softwareentwicklung studiert hat).
http://www.sparxsystems.com/products/mdg/tech/sysml/index.html
Fritz Jaeger schrieb:> A fool with a tool is still a fool. Deutsch: Tolle Tools machen aus> einem Narren keine(n) Entwickler/-in der/die gute Designs bliefert.
Deine Worte in der Firma Mathworks Ohr :-)
Ich stimme vollkommen zu, wobei dies hier:
> Zur Sicherstellung der Code-qualität haben sich bewährt:> -Style Guides (Konventionen by der Namensvergabe, erlaubte Konstrukte> -moderierte und vorbereitete Codereviews> -Reuse von Kompnenten aus Firmenbibliothek (Register-package, aber auch> Counter, IF zu Peripherie)
... mehr Umsetzungsthemen sind und noch nicht die Frage klären, woher
das gute Design, also die Schaltungstruktur und das algorithmische
Konzept kommen. Die entstehen dann letztlich doch irgendwo im Kopf. Ich
finde es daher immer wieder bezaubernd zu sehen, dass diesbezüglich
einerseits angenommen wird, dass der Designer in der Lage ist, komplexe
Konzepte zu erdenken, man ihm andererseits aber unterstellt, er wäre
nicht in der Lage, diese adäquat zu formulieren und zu dokumentieren und
bräuchte dazu Zwangsmassnahmen, wie den fixen Zusammenhang zwischen
Grafik und Code.
berndl schrieb:> Und dazu gehoeren nicht nur die Designs,> sondern auch die Toolchain zum zusammenbauen (also Toolaufrufe in> lesbarer Form).
Da ist was dran. Wobei das Anschubsen der Tools mit einer tauglichen
config noch nachzuarbeiten wäre. Da gibt es noch einiges mehr: Das fängt
bei den Megawizzards an und hört bei den CoreGens auf. Oft liegt bei
unbekannten Designs nur das Ergebnis vor, nicht aber das, was dazu
geführt hat. Vor allem die Überlegung, was warum wie konfiguriert wurde,
fehlt. Anpassungen auf neue Tool-Versionen sind da erschwert bis
unmöglich.