Das hier wurde mir heute zugesendet. Bezieht sich auf die
Matlab-Simulink-Xilinx-Systemgenerator-toolchain. Ist ganz interessant
für die, die sich mit dem Gedanken tragen, FPGAs mit dem Xilinx-System
Generator und dem Xilinx Blockset grafisch zu programmieren:
Auszug:
*******
... Änderungen und Hinzufügen von Bauteile erfolgen durch viel
umständliche Malerei, die VHDL-Generation dauert auch bei minimalen
Design bis zu 30min und ziehen die gesamte Entwicklung in die Länge.
Ein Grundproblem des scharfen Zusammenhangs zwischen Grafik und
Realisation besteht darin, daß alle Dinge peinlichst genau spezifiziert
werden müssen, um komplett zu funktionieren. Damit ist es
a) nicht möglich, ein Design mal laufen zu lassen, während man es an
einem anderen Teil weiterbaut,
b) ein Zwischendesign zu liefern
Diese auf den ersten Blick "zum ordentlichen Arbeiten" zwingende
Methodik, führt daher oft zu mehr Nachteilen, als Vorteilen: Sie
auferlegt mehr Aufwand, verhindert oder erschwert paralleles Arbeiten
und effektives Dokumentieren und man unterliegt zudem der
"Eingabedenkweise" der Softwareersteller, die in nicht wenigen Fällen
kompliziert, teilweise unakzeptabel simplizifiert und oftmals einfach
unausgereift daher kommt.
Grafische Tools haben genell Schwächen, die nicht ausdrücklich auf ein
konkretes System beschränkt sind. Sie erschweren generell das team work.
Grafische Sourcefiles lassen sind schwer bis garnicht gleichzeitg
bearbeiten. Damit wird z.B. auch ein konsistentes handling von Derivate
durch / mit Kollegen schwieriger. Sie erschweren auch generell die
Versionsverwaltung. Grafische Sourcefiles sind schwerer bis garnicht
automatisch zu versionieren und im Zuge von Quervergleichen auf
Änderungen hin untersuchbar. Konkret in Matlab Simulink fehlt eine
Derivateverwaltung völlig.
Es ist Allerdings auch unverkennbar, daß die Schwächen konkret in der
M-S-X-S-chain besonders ausgeprägt sind und zutage treten - dies vor
allem, weil die vielen Anfängerfehler und etablierten Vorgehensweisen
von solchen Tools inkosistent wiederverwendet wurden.
Hinzu kommt, daß einige Komponenten regelrecht schlampig programmiert
sind und von anfängerhafter Denkweise - sowohl in konzeptioneller als
auch realisationstechnischer Hinsicht zeugen. Es gibt im Markt eine
Reihe von grafischen Designtools im Bereich 3D, EDA und Konstruktion,
die vor Augen führen, daß es möglich ist, Signale effektiv und
einleuchtend darzustellen, Drehungen, Resize und Plazierung von
Komponenten geschickt zu managen, Linien so zu zeichen, daß sie sich
nicht überlagern und auch keine komischen Figuren machen, sowie Scroll-
und Cursorffunktion zu etablieren, die ihren Sinn effektiv erfüllen:
Informatin über Details zu liefern! Dort hätte man sich einiges
Abschauen können. Man fragt sich, welches Erfahrungsspektrum die
Entwickler mitbringen, die an der Software herumdoktern und ob sie
jemals mit ihrem System arbeiten. Ich habe in meiner fast 20jährigen
industriellen Tätigkeit vieles an Software gesehen und die Erfahrung
gemacht, daß selbst viele unerfahrene Studenten mit JAVA oder MS-DOS
bedienerfreundlicheres hingestellt haben.
Generel bleibt das Problem eines zusätzlichen Tools in der chain mit
allen möglichen - für den user undurchschaubaren bugs, die im konkreten
Fall der M-S-X-S-chain nicht wenige sind!
Ohweh - Lass stecken, das Teil!
Ich quäle mich auch gerade mit dem Zeug herum, weil die halbe Firma mit
MATLAB arbeitet und angblich kein VHDL kann, oder können will. Deshalb
wollen sie alles aus MATLAB heraus generieren und aufgrund der komplexen
Verhältnisse des environments, in dem die Produkte funktionieren müssen,
auch gleich alles mit MATLAB simulieren. Jetzt hat jeder noch einige
MATLAB-Lizenzen bekommen, Simulinklizenzen ohnehin und vor allem
VHDL-Coder. Kosten um die 60.000 jährlich zusätzlich, weil man für jeden
Mist eine neue Matlab-Toolbox braucht.
Den ganzen Tag wirft jetzt irgendeiner mit VHDL-Codes nur so um sich,
die er mal schnell hingenudelt hat, die aber Synthese überhaupt nicht
verarbeiten kann, weil allesmögliche fehlt und es kein frame dafür gibt.
Also wird der ganze FPGA als dummie im Xilinx Frame nachgebildet. Das
sieht zwar megacool aus, dauert aber 5mal so lange, wie ein einfache
VHDL-Code. Da wäre es sogar noch zweckmäßiger, Xilinx Blocksymbole in
der ISE zu nehmen.
Was mich am meisten stört und in der Aufstellung total fehlt:
Der Systemgenerator erzeugt reine Xilinx Primitiven, statt nativem VHDL
Code. Der Code ist dann weder optimiert, noch portierbar. Er bläht aber
gewaltig auf und jede Bitbreitenänderung führt sofort zur Instanziierung
eines anderen Addierers oder Subtrahierers, was eine Neugeneration des
kompletten Codes nach sich zieht. In VHDL täte sich oft nur ein Modul
ändern.
Das dumme an dem tool ist, daß er alle VHDL-Files in EIN einziges
reinstopf und die Änderungen so stark von einander abhängig sind, daß
man weite Teile der Implementierung wiederholen lassen muss - also nix
von wegen inkrementalem design.
Besonders ärgerlich sind die viele komischen Signalnamen, die er
generiert: Die ändern sich und man hat immer andere Signale, die man im
ChipScop suchen muss. Die Namen der Komponenten ändern sich überdies:
Gibt Chaos im ModelSim, im ChipsScope und auf der Platte, weil er bei
jeder VHDL-Synthese immer wieder neue Corenamen produziert, die alten
aber nicht löscht. Ich habe es geschafft aufgrund von 7 Änderungen
insgesamt 6 verschiedene Altversionen eines Multipliers zu erzeugen. In
VHDL wären es nur 3 Änderungen gewesen und der Code wäre bei c=a*c
geblieben.
Im Grunde ist das tool vollkommen hirnrissig, weil es die eigentliche
Übersetzung von Mathe in VHDL nicht leistet. Das einzige, was annährend
Sinn macht, ist der VHDL-Generator. Aber der produziert auch nichts
anderes als Ketten von Komponenten, die dem Xilinx-Core-Gen entstammen
und mit etwas mathematischem Verstand kann man das auch selber machen:
VCOs, NCOs, Mischer, Filter, CIR, IIF - all das gibt es als Core fertig
und ready to use.
Was der Generator nicht leistet, ist das Timing und die Anbindung nach
Aussen. Da ist trotzdem das gleiche Knowhow gefragt. Das kehrt Xilinx
und Mathworks nur halt unter den Teppich, wenn sie Demos zeigen und
Präsentationen abhalten. Ich habe den Eindruck, daß sich sowas auch nur
dort durchsetzt, wo viele Spielkinder rumsitzen, die nicht auf Termin
arbeiten müssen, aber gern bunte Bildchen malen.
Da hat es die Menschheit endlich geschafft von der grafischen Eingabe
hin zur Texteingabe zu kommen und dann wollen manche das Rad wieder
zurückdrehen.
Ich kann z.B. nicht verstehen warum die Leute gerne Simulink verwenden.
Warum nicht einfach m-Files schreiben?
Ich z.B. kann auch nicht verstehen warum die Leute Labview verwenden?
Warum schreiben die Leute ihre Testprogramme nicht in einer gescheiten
Sprache (z.B. C++ mit Qt)?
Wie der Threaderöffner schon gesagt hat klappt eigentlich bei allen
grafischen Systemen die Versionsverwaltung nicht und Arbeiten im Team
genauso wenig.
>Da hat es die Menschheit endlich geschafft von der grafischen>Eingabe hin zur Texteingabe zu kommen
Klingt etwas sarkastisch, oder?
>Warum nicht einfach m-Files schreiben?
Soweit mir bekannt, kann man das in Simulink, indem man MATLAB-Blöcke
einbindet.
>Ich z.B. kann auch nicht verstehen warum die Leute Labview verwenden?
Weil Grafiken nun mal ansprechender und übersichtlicher sind. Für einige
zumindest.
>Warum schreiben die Leute ihre Testprogramme nicht in einer>gescheiten Sprache (z.B. C++ mit Qt)?
Weil sie es nicht können. Viele Studenten schrubbeln sich mal schnell
was in Labview zusammen und behalten diesen stil im Arbeitsleben bei.
Qt braucht man überdies nicht einmal. Es reicht wxWidgets, um schnell
und effektiv GUIs zu machen, die in der Lage sind, schnellen Code zu
produzieren, der zudem noch direkt auf MAC, Linux und Unix portierbar
ist. Das ist dann wirklich schnell. Labview schafft ja nicht einmal
einen sauberen und stotterfreien RS232-stream.
>Ich habe den Eindruck, daß sich sowas auch nur dort durchsetzt,>wo viele Spielkinder rumsitzen, die nicht auf Termin arbeiten müssen,>aber gern bunte Bildchen malen.
Siehe Labview-Argumentation!
Ein Punkt wird aber übersehen: Der Systemgenerator baut ganze Systeme
zusammen, inkluse embedded Code und Microprozessor und das geht in VHDl
nicht mal so eben. Auch die Hardware-CoSimulation leistet die Umgebung
recht effektiv.
Eigentlich sind Grafiken in der Darstellung und der Übersichtlichkeit
reinem Text überlegen, weil als Merker nicht nur eine rein abstrakte
Selle Sprache und Darstellungschicht verwendet wird, sondern das Hirn
auch sein Bildverarbeitungszentrum nutzen kann, um sich etwas zu merken.
Das geht soweit, daß die Schachspielerin Susan Polgar sich ganze Partien
und Stände rein "grafisch" merkt und die nächsten optimalen Züge wie in
einem Film abruft, statt diese jeweils zu überdenken.
Von daher sind Grafiken als Designmanager von der Idee her nicht
schlecht, besonders für die, die nicht so abstrakt denken und memorieren
können. Das Problem ist nur, wenn man vor lauter Strichen schnell nichts
mehr sieht, die Dateneingabe träge und langsam ist und alles immer
zweidimensional angelegt wird. Es gibt keine dritte oder vierte
Dimension, die das Zeitverhalten darstellt, Querverknüpfungen über
Zeitebenen hinweg möglich macht, wie es nötig wäre.
Die Theorie der grafischen EDA ist leider immer noch an der
bottom-up-Struktur festgemacht wird, wo Bauteile verbaut werden, wie in
elektronischen Schaltungen. Deshalb gibt es Symbole, die man erst
herstellen muss, um sie dann zu verbinden. Man muss sozusagen von oben
herunter die Lösung aus dem Kopf in die Symbole hineindenken, um dann
von unten her wieder alles aufzubauen. Eine Planungsunterstützung
exisitert nicht.
Seit vielen Jahren setzt sich immer mehr die Top-Down-Methode durch,
weil die Schaltungen immer komplexer werden und umstrukturiert werden
müssen. Auch der Entwurfprozess ist nicht mehr so einfach und
naheliegend. Da bieten die Tools wenig Unterstützung. Nötig wäre es z.B.
daß man Flussdiagramme mathematisch beschreibt, so wie es mit Formeln
geht und diese dann im Ablauf dargestellt werden. Auch die
Zustandsübergänge mit x(t) = a(t-1) and b(t-1) müssten so zu formulieren
sein, weil man nur auf diese Weise die pipelines effektiv beschreiben
kann. Die entstehenden Ketten müssten dargestellt werden.
Was dringend notwendig ist, ist die Formulierung physikalischer Größen
und Zusammenhänge über Differentiale, Wertebereiche und
Definitionsbereiche. Erst dann kann mit den Aussteuerungen der Vektoren
gerechnet und diese zielführend dimensioniert werden. Ein Programm wie
MATLAB müsste dazu eigentlich in der Lage sein, daher halte ich es für
paradox, daß ein mathematisches Programm wie dieses zum Formulieren
mathematischer Werte nicht Integer oder Real, sondern Verktoren nutzt,
die dann manuell berechnet und konfiguriert werden müssen, statt sie
automatisch zu berechnen.
Solange das nicht geht, sind solche Tools nichts anderes, als
Grafikbaukästen zum Zusammenbasteln von Elektronik, wo jeder Strich den
man zieht, der potenziellen Änderung am nächten Tag im Wege steht.
Änderungen müssen parametrisch vorgegeben werden, so wie es mit generics
und generate in VHDL schon möglich ist. Damit hat man Strukturen, die
sich automatisch nach einer einfachen Vorschrift anpassen können.
Es ist daher einfach so, daß typische VHDL-Beschreibungen des Verhaltens
einfacher, klarer und menschennäher sind, als Grafiken mit vielen
Strichen, wie z.B. state machines, wo man die Logikfunktion erst
durchsimulieren muss, statt die Sachverhalte direkt abzulesen.
> Ein Punkt wird aber übersehen: Der Systemgenerator baut ganze> Systeme zusammen, inkluse embedded Code und Microprozessor und> das geht in VHDl nicht mal so eben.
Das mag stimmen, sofern die tool chain stimmt und fehlerfrei läuft.
Wehe, wenn nicht.
> Auch die Hardware-CoSimulation leistet die Umgebung recht effektiv.
Das stimmt, wenngleich ich einschränken muss, daß es schon ein weiter
Weg ist, jedesmal Änderungen komplett reinzusynthetisieren, um es in der
Hardware laufen lassen zu können. Da ist es besser, man verzichtet auf
die Cosim, macht gleich eine Synthese und schaut es sich in der Realität
an.
Ich verwende seit Jahren die schematische Eingabe bei Altera Quartus und
fand's bisher immer genuegend. Dazu ist zu sagen, dass meine Designs
unter dem Aspekt der Komplexitaet eher von der einfachen Art waren, und
Team Arbeit nicht noetig war. Zustandsmaschinen sind mit der
schematischen Eingabe eher unpraktisch.
Grundproblem.
Es fehlen dem VHDl-Standard bereits standardisierte synthetisierbare
Baugruppen und ein Tool diese Baugruppen zu konfigurieren.
Sicher gibt es ein paar IP-Cores von X und Y doch die ist kein Standard.
Im Vergleich hat die Sprache C mehre Abstarktionsebenen. Das ist von C -
C++.
Das ist das eine was fehlt. Der Anfang ist
1
record
.
Damit kann man Busse schaffen. Und muss nicht jedes signal einzeln
verdrahten.
Als Zweites fehlen die Libs, die für jeden C-Compiler mittlerweile
selbstverständlich sind.
Stdio oder math oder stl oder boost.
So etwas fehlt einfach.
Auf der electronica wollte mir einer einen UART IP-core für 750Euro
verkaufen. Wie man einen UART in VHDL schreibt, hatten wir schon im
mehreren Threads beschrieben. Sicher der FIFO im UART ist nich ganz
trivial, doch wenn für jeden Pups 750Euro verlangt wird, dann kann jeder
wieder alles selber schreiben und es fehlt an der Zeit und ganz
optimiert ist es auch nicht.
Opencores hat eine wilde Sammlung und man kann vielen Code, nur für
offene Projekte nutzen, wegen der Lizenz.
Das beschrieben Loch füllt die Graphische Programierung. Da gibt es
schon fertige Komponenten. Die Probleme kommen dann später, wie meine
Vorredner es schon erfasst haben.
>Das beschrieben Loch füllt die Graphische Programierung.
Wie das?
Ich habe mir mal Matlab vorführen lassen und deren Blöcke haben keine
anderen Komponenten an Board, wie die Xilinx-Cores selber. Bei dem
Altera-DPS-builder ist es dasselbe. Es sind nur Ersatzblöcke für die
Cores, nicht Neues. Zusätzlich dürfte da nur noch ein Modell
hinerliegen, mit dem Matlab einfach er simulieren kann, ohne einen
VHDL-Simulator auf Bitebene nutzen zu müssen.
Das Tool wird genau dann mächtig, wenn von Wissenschaftlern Modelle als
Input kommen, die sowohl in Matlab erstellt, als auch in Matlab getestet
wurden. In dem Moment kann man super mit den Blöcken die Modelle
nachbilden und gleichzeitig laufen lassen und so im Matlab Einflüsse von
Busbreiten, Auflösungen usw. zu bestimmen...
Zu diesem Moment entsteht ein toller Workflow. Wenn ich den simulierten
und verifizierten Modellaufbau dann implementieren will, muss ich ihn
meistens nur noch in HDL nachbilden. In dem Moment stehen aber schon
alle Fixed-Point Busbreiten fest und wurden simuliert (z.B. Fixed Point
Toolbox).
Ich denke nicht, dass der DSP-Builder Workflow geeignet ist, ganze FPGA
zu füllen, sondern nur einzelne DSP-Strukturen gegen vorhandenen
Matlab-Code zu testen und einsatzfertig zu machen (parametrisieren).
Viele Grüße!
>Das Tool wird genau dann mächtig, wenn von Wissenschaftlern Modelle als>Input kommen,
Gegen die Simulation von Verhalten spricht ja nichts, wobei ich es in
Einzelfällen - besonders bei typischen Signalverarbeitungsketten -
vorziehe, mit ModelSIM zu arbeiten, weil man auch dort Realmodelle
erstellen kann, die mit real-Variablen arbeiten und die Simulation um
Faktoren schneller läuft, als mit MATLAB.
Die Frage ist, wie man von einem in MATLAB/Simulink erstellten Modell,
z.B. mit dem Signal Processing Blockset zu einer Schaltung, einem VHDL
oder einem C-Code gelangt.
>und so im Matlab Einflüsse von Busbreiten, Auflösungen>usw. zu bestimmen...
Das z.B. halte ich für den falschen Ansatz. So muss man sich Auflösungen
und Busbreiten überlegen, sie implementieren und es per Simulation
ausprobieren, anstatt sich das ausrechnen zu lassen. Ich kann unter
Zuhilfenahme von Dynamik=Wertebereich und Präsision ja direkt den
Headroom und die Auflösung (zusammen wäre das ja die Vektorbreite)
bestimmen. Warum kann das MATLAB nicht auch?
Im Grunde ist es überhaupt an keiner Stelle nötig, daß sich der
Entwickler, wenn er denn schon rein mathematisch modelliert, Gedanken
über Auflösungen machen muss. Es reicht, das einmal von vorne oder von
Hinten als requirement ins System zu stecken.
>Zu diesem Moment entsteht ein toller Workflow.
Sagen wir, es entstünde dann einer :-)
Woran ich mich am meisten störe, ist die Inkonsequenz und Inkonsistenz
der bisherigen Blöcke sowie der Umstand, dass das Ergebnis der
Überlegungen oben, was Auflösung und Breiten anbelangt, an vielen
Stellen im Design eingestellt und damit festgelegt werden soll und muss.
Wenn man dann vorne ändert, muss man mittendrin wieder alles ändern.
Da bin ich ja mit nativem VHDL besser dran, weil ich die Busbreiten von
einander abhängig machen kann und dann durch einfaches Hochdrehen eines
generics ganz vorne den Rest auch bekomme. In VDHL reicht es ja sogar,
von vorne her sehr großzügig mit der Auflösung umzugehen, um dann hinten
die benötigten Bits herauszuholen, während die Synthese alles Unnötige
weghackt.
> Wenn ich den simulierten und verifizierten Modellaufbau dann>implementieren will, muss ich ihn meistens nur noch in HDL nachbilden.
"nur noch"???
Das ist ja doch die crux, daß dann nochmal (gewaltiger) Aufwand
entsteht, man sich um jeden Krümel kümmern muss, statt einen
Automatismus zu haben. Es bleibt so sowieso die Übersetzung in eine
Schaltung, die aus Analogteilen, Digitalteilen und Software besteht. Da
sollte man meinen, dass das, was an digitaler Signalverarbeitung
automatisiert erzeugbar ist, auch automatisert erzeugt wird. Das ist
aber nicht der Fall.
Da ist noch viel zu tun :-)
die grafische programmierung ist für die meisten menschen viel besser
vorstellbar als das programmieren mit quellcode. man sieht sofort
funktionen und signalwege. der weg von der idee zur realissierung,
ersteinmal im modell, geht um einiges schneller, als wenn man es
programmieren würde. natürlich vorausgesetzt man kennt ein wenig den
funktionsumfang seines blocksets. die erstellte funktionalität kann man
dann auch direkt simulieren und weiss obs funktioniert, oder halt nicht.
wenn man das modell nach bestimmten richtlinien erstellt, also dass es
kompatibel zum Code Generator ist, dann kann man daraus sehr schnell
auch sehr komplexen code erzeugen lassen. dieser code ist, mit dem
richtigen code generator, auch les- und nachvollziehbar. es lässt sich
so auch hardwareunabhängiger generischer VHDL oder Verilog Code
erzeugen. z.B. durch den HDL Coder von Mathworks.
sicherlich ist der generierte Code nicht so optimiert, als wenn ihn ein
versierter Entwickler erstellt hätte, aber man kann den generierten HDL
Code untersuchen und sich aus den erzeugten ergebnissen durchaus
modellierungsrichtlinen, zum optimaleren modellieren, ableiten.
alles in allem würde ich sagen, dadurch dass man in der
Funktionsentwicklung nicht mehr so stark im kopf zwischen der erdachten
Funktionalität und der realisierung hin und herspringen muss, kann man
die idee deutlich schneller auf den FPGA bringen als in der
herkömmlichen entwicklung.
Juergen S. schrieb:>>und so im Matlab Einflüsse von Busbreiten, Auflösungen>>usw. zu bestimmen...> Das z.B. halte ich für den falschen Ansatz. So muss man sich Auflösungen> und Busbreiten überlegen, sie implementieren und es per Simulation> ausprobieren, anstatt sich das ausrechnen zu lassen.
Mich würde brennend interessieren wie du das machst (mit welchem Tool?)
Viele Grüße!
>Interessante Auswertung! Welche Alternativen gäbe es, bzw ist das bei>Altera ähnlich unausgereift?
Ich werden aller Voraussicht mit dem DSP Toollit von Altera arbeiten.
Das ist das pendant von Xilinx. Erfahrungen habe ich damit noch nicht,
wäre aber an einem Austausch interessiert!
Oliver Wachter schrieb:>>durch den HDL Coder von Mathworks> Hat jemand dazu Erfahrungen, die er übersichtlich posten könnte?
Was meinst Du mit "übersichtlich posten"?
Der HDL-Coder funktioniert, soweit ich es sehe. Er serviert Dir eine
fertige HDL, die direkt synthesefähig ist.
FPGA-Vollprofi schrieb im Beitrag #3370469:
> Oliver Wachter schrieb:> Der HDL-Coder funktioniert, soweit ich es sehe.
Was meinst Du mit "soweit ich sehe"?
> Er serviert Dir eine> fertige HDL, die direkt synthesefähig ist.
Man muss also nur das FPGA drum stricken? Done?
Ulrich schrieb:> Viele Studenten schrubbeln sich mal schnell> was in Labview zusammen
Eben. Man kann sehr schnell zu Ergebnissen kommen. Großes Pro für
Labview und oft wichtiger als das Mehr an Möglichkeiten aber auch Mehr
an Komplexität/Aufwand in einer konventionellen Programmiersprache!
Upps, ich sehe gerade, ich bin noch eine Antwort schuldig:
Atze vom Bau schrieb:> Mich würde brennend interessieren wie du das machst (mit welchem Tool?)
Mit Excel! Die Berechnungen von Bitbreiten, Auflösungen, Vor- und
Nachkommastellen bei fixed point und Integer, sowie vor allem die
zwischendurch erreichten Bereichsgrenzen sind immer wieder dieselben und
lassen sich prima als Excel-Blöckchen einsetzen. Man kann mit Excel auch
fertigen Code per Textstring definieren. Um z.B. einen lokalen Überlauf
zu formulieren, kann man sich die funktionell vorgebenen Grenzen
ausrechnen und in den Code schreiben lassen - bzw die sich einstellenden
Grenzen nutzen, um die Bitbreiten anzupassen. Das ist flexibler und
durchsichtiger, als mit MATLAB, weil man ein grafisch sauber
formuliertes tableau hat, statt einem MATLAB sript und einen
Text-output.
Der Code lässt sich damit auch optimieren und zwar in einer Weise, die
MATLAB nicht automatisch kann, bzw unterstützt:
Ein schönes Beispiel, das ich immer wieder gerne bringe, ist die signed
Multiplikation bei der durch die Limitierung des negativen Operanden auf
-(n-2) gleich zwei bits beim Ergebnis wegfallen und die Zuweisung zum
nächsten Vektor nicht dazu führt, dass die Synthese einem am Ende lauter
offene und unbelegte Bits präsentiert, bei denen man nicht weiß, ob es
stimmt, oder nicht. Durch das Excel ist die Rechnerei auch sehr gut
dokumentiert und man kann Beispiele durchrechnen lassen und sie mit
ModelSIM vergleichen.
Das Excel ist universell, veraltet nicht und kann von jedem verwendet
werden. Der Code kommt dann einfach als Textbaustein raus. Ich benutze
das auch für Parametersynthesen, um Abläufe zu definieren, z.B. für
C-Testprogramme oder FSMs in FPGAs. Beispiel dazu hier:
http://www.96khz.org/htm/virtualpldorgan07spartan3e.htm