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ß
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!
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ß
> 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...
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ß
> 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 ?
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ß
>> 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
> 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.
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ß
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 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.
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
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...
Danke für den Tip, aber KEEP hab ich auch schon ausprobiert. Geht auch nicht. Ich kann die Signale trotzdem nicht mappen...
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.