Forum: FPGA, VHDL & Co. Signale werden in Synthese umbenannt oder entfernt


von worzel11 (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein VHDL-Projekt erstellt, welches zwei Ausgänge hat, die 
jeweils 8-bit breit sind. z.B. A_OUT(0) - A_OUT(7) und B_OUT(0) - 
B_OUT(7).
Durch das einfügen eines ILA-Cores mit dem ChipScope Core Generator 
möchte ich diese Signale abfangen.
Das Problem ist nun, dass wenn ich den Core Generator starte das Projekt 
synthitisiert wird. Das ist ja ok. Doch kann ich nun im Core 
Generator--> Net Select meine Ausgangssignale nicht mehr komplett 
abfangen. Folgende Signale sind noch vorhanden:
A_OUT(0), A_OUT(1) und A_OUT(3), das selbe für B_OUT.

Was passiert hier? Werden meine Signale einfach wegsynthetisiert, weil 
das Tool der Meinung ist, sie würden nicht gebraucht? Oder werden sie 
nur umbenannt, und wie kann ich dies verhindern?

Eine Hilfe dazu wäre toll!

Gruß

von soso (Gast)


Lesenswert?

mein Bauchgefühl würde dir zustimmen: das Synthesetool ist der Meinung 
die Signale werden nicht benötigt. Vielleicht hat es recht?

Ferndiagnosen sind natürlich schwer...
Wahrscheinlich müsstest du dein Design posten!

von worzel11 (Gast)


Lesenswert?

Hi,

Danke für die schnelle Antwort.

Das komische ist, dass die Signale ganz zusammenhangslos angezeigt oder 
nicht angezeigt werden. Wenn die Signale nicht gebraucht werden hätte 
ich erwartet, dass z.B. die 3 MSB fehlen. Das ist ja aber nicht so, da 
z.B. auch A_Out_2 fehlt! Und in der Simulation in ModelSim sieht man 
ganz deutlich, dass das Bit toggelt, also auch gebraucht wird. Würde ich 
denken...?


Ich möchte nur ungern dass gesamte Projekt posten, ist ziemlich groß....
gibts noch ne andere Möglichkeit?

Gruß

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


Lesenswert?

> Und in der Simulation in ModelSim sieht man
> ganz deutlich, dass das Bit toggelt, also auch gebraucht wird.
Die Simulation macht genau das, was in der Beschreibung steht. Die 
Synthese schaut ein wenig über den Tellerrand raus und erkennt evtl. 
Gemeinsamkeiten mit anderen Signalen und schmeißt eins davon in die 
Tonne...
Oder sie erkennt, dass dieses Signal zwar erzeugt, aber nirgends 
verwendet wird und kommt zum selben Ergebnis...

von worzel11 (Gast)


Lesenswert?

Lothar Miller schrieb:
> Die
> Synthese schaut ein wenig über den Tellerrand raus und erkennt evtl.
> Gemeinsamkeiten mit anderen Signalen und schmeißt eins davon in die
> Tonne...

Aha!
Willst du mir damit raten, auf die Synthese zu vertrauen, oder wie?
Das klingt schon logisch. Hab mir die Simulation auch nochmal 
angeschaut, und die aussortieren Signale haben alle einen 
"Doppelgänger", der noch vorhanden ist.
Doch wie kann ich mir dann erklären, dass das Ergebnis das gleiche ist. 
Der Wert eine 8-Bit langen Vectors kann doch nicht der selbe sein, wie 
den den ich jetzt heraus bekommen, mit dem 0.ten, 1.ten und 3.ten Bit?

Danke schön schonmal!

Gruß

von Michael S. (Firma: www.das-labor.org) (laborsauron)


Lesenswert?

> Und in der Simulation in ModelSim sieht man
> ganz deutlich, dass das Bit toggelt, also auch gebraucht wird.

Da würd ich als erstes mal die Sensitivity listen auf Fehler 
kontrollieren.

>die aussortieren Signale haben alle einen
>"Doppelgänger"
Na dann ist logisch, das da was wegoptimiert wird.

>mit dem 0.ten, 1.ten und 3.ten Bit....
Und welche bits vom Doppelgänger sind noch übrig ?

von worzel11 (Gast)


Lesenswert?

Michael Sauron schrieb:
>>mit dem 0.ten, 1.ten und 3.ten Bit....
> Und welche bits vom Doppelgänger sind noch übrig ?

genau diese bits (0, 1, und 3) sind noch übrig!
Also Bit 2 und 4 - 7 kann ich nicht mehr mit ChipScope analysieren oder 
auf den Logikanalyzer geben.

Die Frage ist nun, wie die Werteberechnung statt findet. Der neue 
Vektor, der ja jetzt nur noch 3 Bits hat (0, 1 und 3) kann ja nicht die 
gleiche Zahl repräsentieren, wie der ursprüngliche 8-Bit-Vektor?

Gruß

von Stefan (Gast)


Lesenswert?

>> Und welche bits vom DOPPELGÄNGER sind noch übrig ?
>genau diese bits (0, 1, und 3) sind noch übrig!
Na das liess noch mal genau und überdenke deine Antwort

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


Lesenswert?

> Die Frage ist nun, wie die Werteberechnung statt findet.
Hier an dieser Stelle wäre jetzt die Beschreibung interessant.

> Der neue Vektor, der ja jetzt nur noch 3 Bits hat (0, 1 und 3)
> kann ja nicht die gleiche Zahl repräsentieren, wie der ursprüngliche
> 8-Bit-Vektor?
Die anderen Bits gehen nicht verloren, sie werden nur anders verdrahtet.

von worzel11 (Gast)


Lesenswert?

Danke für die Tips!

Ich habe das Problem jetzt so weit im Griff, dass ich die vorhandenen 
Signale mehrfach mappen kann umd somit meinen ursprünglichen Bus 
rekonstruieren.

Gruß

von worzel11 (Gast)


Lesenswert?

Hallo zusammen,

ich habe nun ein neues Projekt gestartet, mit ähnlichem Aufbau. Das 
Problem ist das selbe. Ich möchte hier zwei Ausgänge mappen, welche 
jeweils 3bit breit sind. Und diese Signale sind auf jeden Fall nicht 
identisch (siehe ModelSim).
Es sind lediglich Signale ähnlich:
A_OUT_1 und A_OUT_3 sind invertiert zueinander, A_OUT_2 ist komplett 
anders.
B_OUT_1 und B_OUT_3 sind wiederum invertier zueinander und haben mit 
A_OUT nichts gemein. B_OUT_2 ist wieder ganz anders.

Die folgenden Signale bleiben nach der Synthese noch übrig: I_OUT_0 und 
I_OUT_1.

Von B_OUT ist gar nichts mehr da!

Gibt es nicht irgend ein Attribut, oder so, welches Xilinx verbietet 
bestimmte Signale in der Synthese umzubenennen oder zu entfernen?
Was kann das überhaupt für einen Grund haben, dass Xilinx die Signale 
wegsynthetisiert?

Ich hoffe, jemand hat einen Rat für mich!

Grüße

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


Lesenswert?

> Von B_OUT ist gar nichts mehr da!
Ohne Code kann man nur raten...
Sind das interne Signale oder werden die auf einen IO-Pin geführt?

> Was kann das überhaupt für einen Grund haben, dass Xilinx die Signale
> wegsynthetisiert?
Sie werden nicht gebraucht.

von worzel11 (Gast)


Lesenswert?

Hallo,

danke für die schnelle Antwort.

Der Code ist ziemlich umfangreich, deshalb sehr schlecht zu posten...
Diese Signale sind Ausgangssignale. Ich habe sie auch in PlanAhead auf 
die LEDs des FPGAs führen können. Soweit alles normal.

Gebraucht werden sie meiner Meinung nach auf jeden Fall. Erstens sieht 
man in ModelSim, dass sie eindeutig toggel, zweitens möchte ich damit 
ein QAM16 Konstellationsdiagramm darstellen. Un dafür brauche ich auf 
jeden Fall 2x3Bit als Ausgang.

Grüße

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


Lesenswert?

Wenn es IO-Pins sind, dann werden die Signale nicht wegoptimiert. Nur 
wird auf diese Signale wahrscheinlich irgendwo ein anderes Signal 
zugewiesen und intern dieser Name dann weiterverwendet. Probier mal das 
Attribut KEEP aus...

von worzel11 (Gast)


Lesenswert?

Danke für den Tip, aber KEEP hab ich auch schon ausprobiert. Geht auch 
nicht. Ich kann die Signale trotzdem nicht mappen...

von Christian R. (supachris)


Lesenswert?

Da muss was grundlegendes falsch sein. Signale, die auf Pins des FPGA 
geführt sind, werden nicht wegoptimiert. Höchtens bei Eingängen, die 
nicht benutzt sind. Aber Ausgänge werden immer verdrahtet. Wenn sie 
konstante Werte haben, dann sagt das ja die Synthese oder Modelsim, 
hängen sie in der Luft, gibts eine Warnung in ISE "used but never 
assigned" und sie werden standardmäßig auf 0 gezogen.

von worzel11 (Gast)


Lesenswert?

Es gibt in Xilinx ISE eine advanced-Einstellung (keep hierarchy), die 
verhindert, dass die signale wegoptimert werden. Also mappen kann ich 
sie jetzt. Das behebt jetzt zwar die Wirkung, aber nicht die Ursache.
Da werd ich mich noch einmal dahinter klemmen müssen!

Vielen Dank mal!

Grüße

von Duke Scarring (Gast)


Lesenswert?

Alternativ kannst Du Chipscope auch instanziieren. Da sparst Du Dir das 
rumgehampel mit dem ILA-Core.

Man muß halt nur im Quelltext alle Signale, die man beobachten will, an 
eine Stelle bringen. Das geht am Besten über einen Debug-record im 
Toplevel.

Duke

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