Forum: FPGA, VHDL & Co. Xilinx EDK: Mit ChipScope IN meine Custom IP "schauen"


von Andy N. (jtani)


Lesenswert?

Hallo,
ich würde mir gerne die Signale IN meiner Custom-IP per Chipscope 
anschauen (EDK 14.2).
Ich verwende Chipscope erst seit kurzer Zeit (bisher habe immer alles 
auf Modulebene simuliert --> also mit VHDL Testbench und/oder mit 
High-Levelmodultests im Microblaze, meistens auf der Console...).
Mit der BFM-Simulation stehe ich (noch) etwas auf Kriegsfuß :-)

Das Debuggen der AUSGÄNGE meiner Custom-IP funktioniert mit ChipScope 
bereits sehr gut.
Ich kann auch Trigger auf die Schreib- und Lesevorgänge des AXI-Busses 
setzen. So weiß ich, wann der Microblaze welche Daten an bestimmte 
Adressen schreibt, oder liest.
Nun hätte ich halt gerne überprüft, was mit den geschriebenen Daten in 
der Custom-IP passiert. Bzw. was dort dann ausgelöst wird.

Ist das mit ChipScope möglich?

Viele Grüße,

Andreas

von Marius W. (mw1987)


Lesenswert?

Klar geht das mit Chipscope. Einfach mit dem Core-Generator ein 
Chipscope ILA und ICON erzeugen und passend in deinem Modul verdrahten.

Gruß
Marius

von Andy N. (jtani)


Lesenswert?

Marius Wensing schrieb:
> Klar geht das mit Chipscope. Einfach mit dem Core-Generator ein
> Chipscope ILA und ICON erzeugen und passend in deinem Modul verdrahten.
>
> Gruß
> Marius

Hallo Marius,
vielen Dank für Deine Antwort.
Leider habe ich wahrscheinlich den Workflow noch nicht so ganz 
verstanden.

Ich schreibe mal, was ich gemacht habe:
1. Custom Board mit EDK erstellt
2. Für dieses Custom Board eine Custom IP erstellt (z.B. eine blinkende 
LED, deren Ausgabefrequenz einstellbar ist)
3. Chipscope_icon zum EDK-Projekt hinzugefügt
4. Im EDK Menü "Debug-->Debug Configuration" einen AXI-Monitor und einen 
ILA-Monitor konfiguriert

--> nun kann ich (wie gesagt) den AXI-Bus und auch die I/Os der 
Custom-IP mit dem Chipscope debuggen

Nun möchte ich aber IN die Custom-IP schauen.
Ich habe aber (trotz ausführlicher Suche) nicht gefunden, wo/wie ich die 
Chipscope ILA und ICON für meine Custom-IP erzeugen kann.
Muss ich den Chipscope Core inserter nehmen?
Für die Custom-IP habe ich mir das ISE-Projekt vom EDK mit erzeugen 
lassen. Hier habe ich auch mal ein Chipscopeprojekt mit eingefügt. Aber 
wie passt das dann mit dem EDK zusammen.
Ich bin etwas ratlos :-(((

Gibt es vielleicht ein Tutorial konkret für das EDK und einer Custom-IP?
Ich habe keines gefunden.
Die beziehen sich entweder auf PlanAhead (was ich nicht verwende).
Oder Auf ein ISE-Projekt (ich habe aber ein EDK-Projekt).
Oder es wird nur der z.B. AXI-Bus im EDK-Projekt gedebuggt - so weit bin 
ich aber auch schon...

Es wäre schön, wenn jemand einen kleinen Tip für mich hätte. Danke.

Viele Grüße,

Andreas

von Christian R. (supachris)


Lesenswert?

Du kannst in ISE einfach zwei IP-Cores generieren, einmal ILA und einmal 
ICON. Die bindest du ganz normal dann über Instanziierung IN dein 
Custum-Core ein, also direkt im Quelltext. Und dann alles erzeugen 
lassen.

von Andy N. (jtani)


Lesenswert?

Hallo Christian,
danke für Deine Antwort!

Ich stehe etwas auf dem Schlauch - oder der Leitung...:
Ich habe mit dem Core Generator im ISE den ICON und den ILA Core 
erstellt und in meiner Custon IP eingebunden.
Dort führt "Check Syntax" zu keinem Fehler. Gut.
Wenn ich im EDK nun ein "generate Bitstream" ausführe, dann kommt 
folgende Fehlermeldung:
1
ERROR:NgdBuild:604 - logical block
2
   'jt_timer_0/jt_timer_0/USER_LOGIC_I/mein_jt_modul_timer/i_icon' with type
3
   'Chipscope_ICON' could not be resolved. A pin name misspelling can cause
4
   this, a missing edif or ngc file, case mismatch between the block name and
5
   the edif or ngc file name, or the misspelling of a type name. Symbol
6
   'Chipscope_ICON' is not supported in target 'spartan6'.
7
ERROR:NgdBuild:604 - logical block
8
   'jt_timer_0/jt_timer_0/USER_LOGIC_I/mein_jt_modul_timer/i_Chipscope_ILA' with
9
   type 'Chipscope_ILA' could not be resolved. A pin name misspelling can cause
10
   this, a missing edif or ngc file, case mismatch between the block name and
11
   the edif or ngc file name, or the misspelling of a type name. Symbol
12
   'Chipscope_ILA' is not supported in target 'spartan6'.

Wie es aussieht muss ich wohl die zu den zwei Chipscope-Cores gehörenden 
Dateien im PAO-File einbinden UND anschließend die IP neu ins EDK 
importieren.
Ist das wirklich der richtige/einfachste Weg?
--> Ich habe viel auf Xilinx zum Thema gelesen. Dort wird (soweit ich 
das verstehe) beworben, dass man ja "nur" den Chipscope in seine IP 
einbinden muss - und wenn man Ihn nicht braucht, dann muss man ihn "nur" 
auskommentieren.
Wenn man dies aber an zig Stellen machen muss UND vielleicht sogar noch 
explizit die IP neu importieren muss, damit das EDK auch ja mitbekommt, 
dass sich was geändert hat, dann hat Xilinx hier mal wieder NICHT an die 
Userfreundlichkeit bzw. sinnvolle Nutzbarkeit gedacht.

Oder wo ist mein Fehler?

Viele Grüße,

Andreas

von Christian R. (supachris)


Lesenswert?

Naja, du musst natürlich im PAO File die ngc Files angeben, also die 
vor-sythetisierten netzlisten. Die werden ja als Black Box eingebunden. 
Alternativ gibts ja immer (zumindest bei ISE Projekten) den Weg über den 
ChipScope Inserter. Ob das bei EDK Projekten auch geht, weiß ich nicht. 
Bei ISE Projekten geht es ja wirklich mit nur einer Zeile 
auskommentieren, bzw. über einen Generic noch einfacher. Ich benutze 
eigentlich immer die direkte Instanziierung, da hab ich mehr Kontrolle. 
Und ChipScope ist zum Debuggen eigentlich ja eh der allerletzte 
Notnagel, das sollte man keinesfalls wie einen Debugger im µC ansehen, 
denn jedes Signal an ChipScope verändert das gesamte Design, schließlich 
ist ChipScope keine dedizierte Hardware.

von Andy N. (jtani)


Lesenswert?

Hallo Christian,
vielen Dank für Deine Antwort.
Ich habe es nun endlich (nach über zwei Tagen!) hinbekommen.
Man muss die ngc-Dateien allerdings in die BBD-Datei eintragen.

Ich habe dann aber die tollsten Fehlermeldungen von EDK bekommen.
Lösung: Alle bereits generierten Dateien löschen (siehe 
http://forums.xilinx.com/t5/Implementation/NgdBuild-76-translate-error/td-p/118160 
)
In meinem Fall musste ich sogar den ICON und ILA Core komplett löschen 
und wieder neu anlegen. Warum dies so ist, wissen nur die 
Xilinx-Götter...

Manchmal machen mich die Xilinx-Jungs einfach wahnsinnig grrrrr

Du hast natürlich Recht: Chipscope soll nicht die standard-Debugmethode 
meiner Wahl werden. Ich denke aber, dass es schon bequemer ist, den 
Chipscope-Core zu integrieren, als einen Logic-Analyser mit z.B. 20 
Leitungen an der Elektronik anzuschließen.
IMMER wird das natürlich nicht vermeidbar sein...

Viele Grüße,

Andreas

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.