Hallo zusammen!
Ich bin relativ neu in der FPGA Welt und stehe momentan vor einem
konkreten Problem...oder gar mehreren Problemen :-)
Zur Verfügung steht mir das Xilinx Spartan 3A Starter Kit und ISE 14.6.
Ich möchte eine Art "Dummy-Logik" in Form von miteinander verschalteten
(N)OR, (N)AND, XOR-Gattern usw. Gattern auf dem FPGA realisieren.
Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen".
Meine erste Frage hierbei:
Wie realisiere ich so eine Dummy-Logik am einfachsten in VHDL? Klar, ich
schreibe mir für jedes Gatter ein entsprechendes Modell und instanziiere
das anschließend in einer weiteren VHDL Datei inkl. port mapping...aber
das könnte doch etwas arf aufwändig werden, den FPGA damit zu "füllen"
:-)
(Übrigens: ich kann mich doch auf diese grundlegenden, nicht getakteten
Gatter beschränken, oder? Ich meine, ich muss dafür nicht zwingend
getaktete FlipFlops einsetzen, nicht wahr?)
Ich gehe mal davon aus, dass mir ISE 14.6 die Möglichkeit gibt, die
Anzahl der verwendeten Gatter anzeigen zu lassen? Also mit anderen
Worten: den "Füllgrad" des Spartan 3A Chips. Kann mir hierzu jemand was
sagen?
Wie ihr seht, stehe ich noch ziemlich am Anfang, von daher nehmt es mir
nicht übel, wenn ich hier irgendwelchen Schmarrn aufgeschrieben habe.
Ich gelobe Besserung!
Besten Dank für eure Hilfe im Voraus!
Grüße
Kai
Arbeite dich in VHDL ein. In VHDL gibt es z.B. Methoden
wie GENERATE, damit lassen sich dann baumartige/listenartige
Konstrukte aus Komponenten aufbauen.
Sowas habe ich mal selbst mal gemacht um probehalber das
FPGA vollzuschreiben. Eine Listenstruktur wird gut in ein
FPGA gemappt, eine 2-dim Struktur (z.B. zwei Eingänge von
2 Komponenten, 2 Ausgänge an 2 Komponenten) wird ebenfalls
gut gemappt. Damit kriegt man jedes FPGA voll.
Hallo Sigi,
der Hinweis auf GENERATE ist schon mal sehr gut! Danke!
Könntest du mir noch ein wenig genauer beschreiben, was du mit der 2-dim
Struktur meinst? Ich bin mir nicht sicher, ob ich dein erwähntes
Beispiel richtig verstanden habe.
Peter Falk schrieb:> Zur Verfügung steht mir das Xilinx Spartan 3A Starter Kit und ISE 14.6.> Ich möchte eine Art "Dummy-Logik" in Form von miteinander verschalteten> (N)OR, (N)AND, XOR-Gattern usw. Gattern auf dem FPGA realisieren.>> Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen".> Meine erste Frage hierbei:> Wie realisiere ich so eine Dummy-Logik am einfachsten in VHDL? Klar, ich> schreibe mir für jedes Gatter ein entsprechendes Modell und instanziiere> das anschließend in einer weiteren VHDL Datei inkl. port mapping...aber> das könnte doch etwas arf aufwändig werden, den FPGA damit zu "füllen"> :-)> Ich gehe mal davon aus, dass mir ISE 14.6 die Möglichkeit gibt, die> Anzahl der verwendeten Gatter anzeigen zu lassen? Also mit anderen> Worten: den "Füllgrad" des Spartan 3A Chips. Kann mir hierzu jemand was> sagen?
Die Auslastung des FPGA's steht im Map report und im Place und route
report. Der wird nicht in gattern sondern in Slices gemessen. Zum füllen
schue dir mal die generate anweisung an.
Beispiel Großes shiftregister:
Hallo Fpga Kuechle,
wooow, Danke für das wirklich sehr ausführliche Beispiel...ich äh...muss
das erstmal verstehen :-)
Könnte ich anstatt der Basis-Gatter auch einfach Volladdierer nehmen?
Der VHDL Code eines Volladdierers ist für mich zu diesem Zeitpunkt etwas
einfacher zu verstehen als der des oben genannten shiftregisters (so
froh ich auch darüber bin, dass du das freundlicherweise hier gepostet
hast).
Peter Falk schrieb:> Hallo Fpga Kuechle,>> wooow, Danke für das wirklich sehr ausführliche Beispiel...ich äh...muss> das erstmal verstehen :-)
Danke, danke hat ich noch in der Schublade, wurde mal gebraucht um die
Entwärmung eines Virtex zu testen.
> Könnte ich anstatt der Basis-Gatter auch einfach Volladdierer nehmen?
Im Prinzip ja, counter wäre auch eine Möglichkeit, einfach einen langen
std_logic_vector definiieren (zb. 9999 downto 0) und immer eins
addieren.
MfG,
Wenn ich irgendwann soweit bin, sowas in der Schublade zu haben, dann
klope ich mir auf die Schulter und mache mir ein Bier auf :-)
Die Implementierung eines Counters mit dem von dir vorgeschlagenen
std_logic_vector würde schon reichen (um den FPGA zu füllen)? Verstehe
an dieser Stelle aber noch nicht ganz, warum es nötig wäre immer 1 zu
addieren?
Diese Addition würde ich in meiner naiven Vorstellung eher in einen
process einer Testbench packen und nicht in den Code des Counters an
sich...? (denn der soll ja nur rein "statisch" in den FPGA geladen
werden und es sich dort gemütlich machen :-) )
Hallo Falk,
habe mir den Code angeschaut und den Artikel dazu gelesen. Nehme mal an,
dass du den Link hier gepostet hast, um die dort beschriebene
Implementierung als gutes Beispiel fürs "FPGA-füllen" nutzen zu können?
:-)
Schaue ich mir diesen Codeschnipsel an
-- BUFG (Global Clock buffer), a Virtex primitive
component BUFG
port ( I : in std_logic;
O : out std_logic);
so macht mir der Hinweis im Kommentar "a Virtex primitive" ein wenig
Sorgen, denn ich habe nur einen Spartan 3A. Ist das an dieser Stelle
unerheblich?
Hi Falk,
habe noch einen kleinen Nachtrag zum VHDL Code im besagten Link:
Nachdem ich im ISE ein neues Projekt erzeugt und beide VHDL Codes in je
eine separate Datei kopiert habe, erzeugt der Check Syntax Befehl leider
ein paar Fehlermeldungen:
Undefined symbol 'drive_ar'.
Undefined symbol 'dout_ar'.
Formal data of row with no default value must be associated with an
actual value.
No sensitivity list and no wait in the process
Undefined symbol 'cnt'.
Eigentlich bin ich davon ausgegangen, dass der Sourcecode fehlerfrei
vorliegt (und tue es nach wie vor), von daher vermute ich den Fehler
jetzt einfach mal bei mir.
Das row Modul habe ich zu dem Projekt mit dem power Modul korrekt
hinzugefügt. Hast du eine Idee woran das liegen könnte?
Darüber hinaus werden die Komponenten CLKDLL, BUFG, IBUFG und SRL16
anscheinend angemeckert, da es sich laut Kommentar um Virtex primitives
handelt...also kann ich den Code für eine Implementierung auf einem
Spartan 3A wohl vergessen? :-(
@Fpga Kuechle:
Ich habe den Code des shiftregisters mal in die ISE gepackt und versucht
das Alles in den FPGA zu laden. Leider schlägt der Syntaxcheck fehl.
Offenbar hat er mit dem SRLC32E ein Problem, da genau das rot markiert
wird.
Starte ich den Syntaxcheck, wirft er zwei Fehlermeldungen raus:
-- synthesis translate_on
port map (
clk => clk,
d => srl_chain_q(i),
Fehler: parse error, unexpected PORT, expecting OPENPAR or TICK or
LSQBRACK
und noch
-- synthesis translate_on
port map (
c => clk,
d => ff_chain_q(i),
Fehler: parse error, unexpected PORT, expecting OPENPAR or TICK or
LSQBRACK
Weißt du vielleicht Rat?
@ Peter Falk (widlarizer) alias Columbo
>Implementierung als gutes Beispiel fürs "FPGA-füllen" nutzen zu können?>:-)
sicher.
>so macht mir der Hinweis im Kommentar "a Virtex primitive" ein wenig>Sorgen, denn ich habe nur einen Spartan 3A. Ist das an dieser Stelle>unerheblich?
Den gibt es auch als Spartan3A Version.
>ein paar Fehlermeldungen:>Undefined symbol 'drive_ar'.>Undefined symbol 'dout_ar'.>Formal data of row with no default value must be associated with an>actual value.>No sensitivity list and no wait in the process>Undefined symbol 'cnt'.
Mann muss ZWEI Dateien anlegen, in die 2. Kommt die entity row.
>Eigentlich bin ich davon ausgegangen, dass der Sourcecode fehlerfrei>vorliegt
Ist er auch.
>Das row Modul habe ich zu dem Projekt mit dem power Modul korrekt>hinzugefügt. Hast du eine Idee woran das liegen könnte?
Hmm?
>Darüber hinaus werden die Komponenten CLKDLL, BUFG, IBUFG und SRL16>anscheinend angemeckert, da es sich laut Kommentar um Virtex primitives>handelt...also kann ich den Code für eine Implementierung auf einem>Spartan 3A wohl vergessen? :-(
Man muss in der Doku vom Spartan3 nachschauen, wie die Dinger dort
heißen. Ähnlich, aber anders.
Peter Falk schrieb:> Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen".
Hatte mir sowas auch schon gebastelt, mit dem Ziel möglichst viele
Flip-Flops zu toggeln (Test der Speisung). Das war am Schluss eine
Pipeline aus sehr breiten Registern.
Eine Lektion die ich damals gelernt habe:
Der Synthesizer ist recht schlau, der merkt sofort wenn deine Logik nur
rumsitzt und nichts nützliches (= Das Ergebnis wird verwendet) tut. Dann
ist dein Füllgrad immer 0% :-)
Also darauf achten, dass deine Dummy-Logik am Schluss ein Ergebnis auf
FPGA Pins ausgibt, sonst wird sie wegoptimiert.
Hmpf, das "Problem" sind eni paar zerschossene Zeilen im Quelltext, da
ist die Wiki(de)formatierung schuld. Siehe Anhang, kompiliert problemos
durch.
Auch mit S3A.
>Ich habe den Code des shiftregisters mal in die ISE gepackt und versucht>das Alles in den FPGA zu laden. Leider schlägt der Syntaxcheck fehl.>Offenbar hat er mit dem SRLC32E ein Problem, da genau das rot markiert>wird.
Da fehlt das semicolon nach der schliessenden Klammer der generic map.
Das synthese tool sollt die generic map eigentlich garnicht sehen,
deshalb ist da ein synthesis off/on drum. Dein synthesetool ignoriert
aber diese als kommentare getarnten Compile-schalter. Am besten du
löschts den block
zwischen -- synthesis translate_off und -- synthesis translate_on samt
den beiden Zeilen -- synthesis translate_off und -- synthesis
translate_on.
MfG,
Hallo zusammen,
bitte entschuldigt, dass ich bislang auf eure Vorschläge nicht reagiert
habe. Bin noch im Büro und kann das leider erst am späten Nachmittag
ausprobieren :-(
Sorry! Werde dann auf eure Postings einzeln antworten.
Hallo Leute,
bin leider erst heute dazu gekommen einen erneuten Versuch zu starten.
Zunächst einmal zum shiftregister. Nach den Anmerkungen von Leonard
Lebewohl sieht der Code wie folgt aus:
Der Syntaxcheck funktioniert leider noch nicht einwandfrei. Anscheinend
bereiten die port map Anweisungen noch Probleme, in beiden Fällen kommt
als Fehlermeldung:
parse error, unexpected PORT, expecting OPENPAR or TICK or LSQBRACK
:-(
EDIT:
Was mir noch auffällt, ist dass das SRLC32E in der Anweisung
1
useUNISIM.VComponents.SRLC32E;
vom Syntaxhighlighting rot markiert wird. Ist das "normal"? Habe ich so
bisher noch nicht gesehen...genau das gleiche passiert in der ff_delay:
Hallo Falk,
Danke für das Korrigieren des Codes. Dieses Mal fluppte der Syntaxcheck
anstandslos. Habe das FPGA Board im Moment nicht an dem Rechner, brenne
aber darauf den Code in den FPGA zu laden :-)
@Christoph:
Oh, das ist ein nützlicher Hinweis, vielen Dank! Würde es dir was
ausmachen, mir den Quellcode hier aufzulisten, den du damals für dieses
Vorhaben benutzt hast?
Ich würde das gerne bei mir testen.
Sooo, grad eben wollte ich über "Implement Design" meinem Ziel ein
Stückchen näher kommen, doch offenbar gibt es momentan noch ein kleines
Lizenzproblem. In der Konsole kam folgende Fehlermeldung auf (Auszug):
**********************************************************************
ERROR:Security:9c - No 'ISE' nor 'WebPack' feature version 2013.06 was
available
for part 'xc3s700a'.
----------------------------------------------------------------------
Cannot connect to license server system.
The license server manager (lmgrd) has not been started yet,
the wrong port@host or license file is being used, or the
port or hostname in the license file has been changed.
Feature: WebPack
Server name: localhost
License path:
C:/license.dat;C:/.Xilinx\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/
core_lic
enses\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/core_licenses\Xilinx
Free.lic
;C:\Xilinx\14.6\ISE_DS\EDK/data/core_licenses\Xilinx.lic;@localhost;
FLEXnet Licensing error:-15,570
For further information, refer to the FLEXnet Licensing documentation,
available at "www.flexerasoftware.com".Invalid host.
The hostid of this system does not match the hostid
specified in the license file.
Feature: ISE
Hostid: 000c29c2b75f
License path:
C:/license.dat;C:/.Xilinx\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/
core_lic
enses\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/core_licenses\Xilinx
Free.lic
;C:\Xilinx\14.6\ISE_DS\EDK/data/core_licenses\Xilinx.lic;@localhost;
FLEXnet Licensing error:-9,57
For further information, refer to the FLEXnet Licensing documentation,
available at "www.flexerasoftware.com".
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR:Map:258 - A problem was encountered attempting to get the license
for this
architecture.
Design Summary
--------------
Number of errors : 1
Number of warnings : 0
Process "Map" failed
**********************************************************************
Anscheinend gibt es ein Problem mit dem Lizenzserver bzw. mit der
Verbindung von meinem Rechner dorthin. Weiß jemand wie man das
hinkriegen kann? Ich nutze ISE 14.6 unter Win XP per VMWare unter Mac OS
X.
Danke!
Hallo Christian,
ja das habe ich, genau das ist ja auch das, was mich so stutzig macht
:-(
Kann man das im Nachhinein noch überprüfen, um sich zu vergewissern, ob
alles mit dem Einbinden des Lizenzfiles geklappt hat?
Alles klar. Dann probiere ich das nachher mal aus. Also einfach die ISE
starten und dort den Lizenzmanager suchen, richtig? Ich habe das
Lizenzfile nämlich während der Installation einmal eingebunden und das
wars dann auch schon. Habe mich danach nicht mehr weiter darum
gekümmert.
So, habe jetzt mal einen Blick in den License Configuration Manager
geworfen. Beim Feature "Implementation" ist nur das Feld unter "Host Id
Matches" auf rot und beinhaltet ein "No". Liegt das eventuell daran?
Jo, dann passt die Lizenz nicht zum Rechner. Du musst beim Generieren
der Lizenz die Host ID oder MAC Adresse der Maschine angeben, auf der
das installiert ist.
Christoph Z. schrieb:> Eine Lektion die ich damals gelernt habe:> Der Synthesizer ist recht schlau, der merkt sofort wenn deine Logik nur> rumsitzt und nichts nützliches (= Das Ergebnis wird verwendet) tut.>> Also darauf achten, dass deine Dummy-Logik am Schluss ein Ergebnis auf> FPGA Pins ausgibt, sonst wird sie wegoptimiert.
Und dann kommt noch dazu, dass die Synthese auch merken (kann), dass du
eigentlich nichts Snnvolles tust, und dann zwar das "richtige" Ergebnis
ausgibt, aber dazu das Meiste wegoptimiert. Das ist z.B. bei dem
Ringoszillator iom
http://embdev.net/topic/ring-oscillator-timing-simulation#3391429 der
Fall.
Hallo zusammen,
nach einer etwas längeren Zeit melde ich mich mal wieder. In der
Zwischenzeit konnte ich das Problem mit der falschen MAC Adresse beheben
und kann mich nun den angenehmen Dingen des Lebens widmen ;-)
@Christoph:
Hmmm, das ist für mich natürlich nicht so schön, da meine Dummy-Logik
von der Synthese dann wahrscheinlich ins digitale Nirvana befördert wird
:-(
Kann man diese Problematik denn tatsächlich umgehen, indem die Outputs
der Schaltung an einige PINs des FPGA angeschlossen werden?
Peter Falk schrieb:> Kann man diese Problematik denn tatsächlich umgehen, indem die Outputs> der Schaltung an einige PINs des FPGA angeschlossen werden?
Ja. Der Synthesizer meint dann, du brauchst diese Outputs. Er weiss ja
nicht, dass du an den Pins nichts anhängst :-)
Okay :-) Dann werde ich das mal ausprobieren. Ist es vollkommen egal, an
welche Pins des FPGA die Ausgänge der Schaltung angeschlossen werden?
Eigentlich müsste dann der geschickte Einsatz des GENERATE Befehls in
Kombination mit dem Anschluss der Schaltung an entsprechende Pins des
FPGAs zum gewünschten Ziel führen, den Chip gut zu füllen, richtig? :-)
Peter Falk schrieb:> Okay :-) Dann werde ich das mal ausprobieren. Ist es vollkommen egal, an> welche Pins des FPGA die Ausgänge der Schaltung angeschlossen werden?
Nein, nicht vollkommen egal. Dazu schaut man in den Schaltplan und sucht
sich Pins raus, an denen was dranhängt, was nicht kaputt gehen kann. Es
bieten sich an: LEDs, Adressbusse zu Speicherchips oder Pinheader an
denen nichts angeschlossen ist.
Was zu Zerstörung führen kann: Wenn Leitungen zu Tastern, Schaltern,
Taktquellen oder bidirektionellen Datenleitungen verwendet werden.
Duke
LEDs und Pinheader klingen schon mal sehr gut, Danke! Ich hoffe, dass
das alles so hinhauen wird.
Soweit ich das bislang mitbekommen habe, ist der Spartan 3A partiell &
dynamisch rekonfigurierbar, richtig? Hat jemand von euch dieses Feature
für ein konkretes Projekt getestet?
Hallo zusammen,
bevor ich einen neuen Thread eröffne, hänge ich mein aktuelles Problem
mal hier rein.
Ich habe 4x4 (4 Eingänge & 4 Ausgänge) Substitution-Box (Element aus der
Kryptographie) aus relativ simplen Gattern gebaut. Für die einzelnen
Gatter habe ich Behavioral-Modelle geschrieben und jeweils in einem
eigenen Projekt abgespeichert.
Für die S-Box selbst habe ich die Komponenten in einer
Strukturbeschreibung instanziiert und anschließend den Syntaxcheck
gestartet. Leider kommen dann etliche Fehlermeldungen und zwar folgender
Art:
ERROR:HDLParsers:3281 - "C:/Xilinx/Workspace/Sbox_struct/sBox.vhd" Line
50. Behavioral is not an architecture body for Inverter in library work.
Das dazugehörige Codeschnipsel dazu:
1
begin
2
-- All inverters
3
INV1:entitywork.Inverter(Behavioral)
4
PORTMAP(D,S1);
Und hier nochmal der Inverter:
1
entityInverteris
2
PORT(
3
in1:instd_logic;
4
out1:outstd_logic);
5
endInverter;
6
7
architectureBehavioralofInverteris
8
9
begin
10
out1<=notin1;
11
12
endBehavioral;
Aus der Fehlermeldung entnehme ich, dass es ein Problem mit der
Bezeichnung der architecture des Inverters gibt...aber warum?
Bitte um Hilfe!
Peter Falk schrieb:> bevor ich einen neuen Thread eröffne, hänge ich mein aktuelles Problem> mal hier rein.
Warum machst Du nicht einen neuen Thread auf? Was hat Dein Problem mit
dem Spartan 3A zu tun? Du hast ein VHDL-Problem.
> Für die einzelnen> Gatter habe ich Behavioral-Modelle geschrieben und jeweils in einem> eigenen Projekt abgespeichert.
Warum? Man muß nicht jedes Gatter in ein eigenes Projekt stecken. Da
wird man ja nie fertig und hinterher wird wieder behauptet VHDL sei
geschwätzig...
> Das dazugehörige Codeschnipsel dazu
Mein Schnipsel würde so aussehen:
1
begin
2
-- All inverters
3
S1<=notS1;
Peter Falk schrieb:> ERROR:HDLParsers:3281 - "C:/Xilinx/Workspace/Sbox_struct/sBox.vhd" Line> 50. Behavioral is not an architecture body for Inverter in library work.> Aus der Fehlermeldung entnehme ich, dass es ein Problem mit der> Bezeichnung der architecture des Inverters gibt...aber warum?
Ist den die Datei mit dem Inverter schon kompiliert worden?
Ist die Datei mit dem Inverter in diesem Projekt enthalten?
Duke
Hi,
im Grunde genommen hätte ich tatsächlich einen neuen Thread aufmachen
können. Wollte im Grunde genommen nur nicht das Forum "vollspammen",
aber nun ja...nächstes Mal mache ich es anders :-)
Ich dachte mir, dass ich einige Gatter in eigene Projekte stecke, damit
ich diese in anderen Projekten einfach und schnell per
Komponenteninstanziierung wiederverwenden kann. Das war eigentlich der
Hintergedanke bei der ganzen Sache.
Die Datei mit dem Inverter wurde einwandfrei kompiliert...sie ist aber
nicht in diesem Projekt enthalten, sondern befindet sich in einem
eigenständigen Projekt. Ich ging bisher davon aus, dass das Tool die im
Quellcode referenzierte entity selbstständig findet, da sich alle
Projekte in der "library" befinden?
Zumindest hat das bei kleineren Projekte (multiples Logikgatter
bestehend aus mehreren Invertern, NAND2, OR2, usw. -Gattern) anstandslos
funktioniert.
Peter Falk schrieb:> Ich dachte mir, dass ich einige Gatter in eigene Projekte stecke, damit> ich diese in anderen Projekten einfach und schnell per> Komponenteninstanziierung wiederverwenden kann. Das war eigentlich der> Hintergedanke bei der ganzen Sache.
Prinzipiell ist Deine Idee gut.
Aber wegen ein paar Gattern, Registern, einem Addierer oder
Multiplizierer lohnt sich dieser Aufwand nicht. Die sind schnell
hingeschrieben. Auch für Zähler, Multiplexer oder Schieberegister würde
ich keine eigene Datei mehr anfangen.
Sinnvoll ist das m.E. nur bei Blöcken, die man tatsächlich irgendwann
mal wieder braucht und die ein gewisse Komplexheit besitzen: FIFO,
Filter, Logarithmierer, Dividierer u.ä.
Allerdings muß man meist auch beträchtlichen Aufwand betreiben um so
einen Block allgemein verwendbar zu machen.
> Ich ging bisher davon aus, dass das Tool die im> Quellcode referenzierte entity selbstständig findet, da sich alle> Projekte in der "library" befinden?
In jedem Projekt gibt es die Library work. Aber zwischen den Projekten
kennen sich die Librarys nicht. Es ist allerdings möglich, eine Datei in
mehreren Projekten zu verwenden. Sie muß dann jeweils hinzugefügt
werden.
Duke
Gut, dann werde ich es in Zukunft so machen, bin ja auch für jeden
Hinweis dankbar! Mittlerweile habe ich das Problem dadurch gelöst, indem
ich die entsprechenden VHDL Dateien im ISE über "Add Source" hinzugefügt
habe. Was DANN aber ärgerlich ist, dass man auch zu der hinzugefügten
Datei wiederrum weitere Dateien hinzufügen muss :-( Hätte das von Anfang
an anders aufziehen sollen, Mist!
Ich bin jetzt allerdings auf ein anderes Problem gestoßen, dafür mache
ich jetzt aber wirklich ein neues Thema auf :-)