Forum: FPGA, VHDL & Co. ISE-Projekte vergleichen zum Fehlerfinden


von Jens Langecker (Gast)


Lesenswert?

Hallo,

ich hab hier ein Spartan3-Projekt, bei dem 6 RAM-Bänke angesteuert 
werden. Das Projekt ist nicht von mir entwickelt worden und ich kann 
weite Teile des VHDL-Codes auch nicht nachvollziehen (aber das ist ein 
anderes Thema).
Das Problem ist nun, daß ich einen if-Zweig mit einer Zeile Code 
eingefügt habe. Da das steuerende Feature für den if-zweig noch nicht 
implementiert ist, ist die Bedinung (PORT Eingang des VHDL-Moduls) hart 
auf '0' verdrahtet, dürfte also theortisch keine funktionale Auswirkung 
haben. Trotzdem führt die Änderung dazu, daß eine der 
RAM-Bank-Ansteuerungen nicht mehr korrekt funktioniert. Ich vermute 
unsauberes Timing, weiß aber nicht, wo ich suchen soll.

Nun hab ich zwei Projektstände erstellt, einmal ohne die Änderung (alles 
geht) und einmal mit Änderung (RAM-Bank-Fehler), und nun würde ich gerne 
die Unterschiede untersuchen. Allerdings weiß nicht, an welchen Stellen 
ich diesbzgl. suchen soll.
In beiden Fällen werden keine Timing-Verletzungen angezeigt (was aber 
nichts heißen soll, weil wahrscheinlich Timing constraints fehlen).

von Jens Langecker (Gast)


Lesenswert?

Ach ja: Die Timing Reports (.twx) hab ich als erstes verglichen, aber 
die sind bis auf den Zeitstempel identisch.

von Duke Scarring (Gast)


Lesenswert?

Ich lasse mir beim Synthetisieren alle Ausgaben in ein Logfile schreiben 
(xst, ngdbuild, map, par, bitgen). Diese Logfiles lassen sich ganz gut 
mit einem Diff-Viewer betrachten. Vor allem bei kleineren Änderungen 
kann man so nachschauen, wie sie sich auswirken.

Vielleicht wäre das auch was für Dich?

Duke

von Jens Langecker (Gast)


Lesenswert?

Ja, so wollt ich das machen, aber ich weiß nicht so genau, in welchem 
Logfile/Report ich suchen soll.
Die Tatsache, daß die Timing-Reports identisch sind, werte ich als 
Hinweis, daß irgendein Timing Constaints fehlt und es daher Zufall ist, 
ob das erzeugte Bitfile fehlerfrei funktioniert oder nicht.

von Lehrmeister (Gast)


Lesenswert?

Jens Langecker schrieb:
> Das Problem ist nun, daß ich einen if-Zweig mit einer Zeile Code
> eingefügt habe. Da das steuerende Feature für den if-zweig noch nicht
> implementiert ist, ist die Bedinung (PORT Eingang des VHDL-Moduls) hart
> auf '0' verdrahtet, dürfte also theortisch keine funktionale Auswirkung
> haben. Trotzdem führt die Änderung dazu, daß eine der
> RAM-Bank-Ansteuerungen nicht mehr korrekt funktioniert. Ich vermute
> unsauberes Timing, weiß aber nicht, wo ich suchen soll.

Setz eine Simulation auf, alles andere ist Kaffesatzleserei.

Gruß,

von Duke Scarring (Gast)


Lesenswert?

Lehrmeister schrieb:
> Setz eine Simulation auf, alles andere ist Kaffesatzleserei.
Die hilft aber nicht bei fehlenden oder fehlerhaften Timing-Constraints.

Jens Langecker schrieb:
> ich weiß nicht so genau, in welchem
> Logfile/Report ich suchen soll.
Bei ISE 13.3 findest Du die reports in den folgenden (Text-)Dateien:
1
xst    -> *.syr
2
build  -> *.bld
3
map    -> *.mrp
4
par    -> *.par
5
bitgen -> *.bgn

Duke

von Lehrmeister (Gast)


Lesenswert?

Duke Scarring schrieb:
> Lehrmeister schrieb:
>> Setz eine Simulation auf, alles andere ist Kaffesatzleserei.
> Die hilft aber nicht bei fehlenden oder fehlerhaften Timing-Constraints.

1.) weisst Du wegen der nicht durchgeführten Simulation nicht, ob es 
wirklich ein problem mit dem timing ist. Erst wenn die behavorial Simu 
mit den testcase passt, aber die realität nicht kann man in richtung 
timing schlussfolgern.

2.) Klar kann eine Simulation auch Timing-fehler aufzeigen. Ganau dafür 
wurde VITAL und Post Place-Route Simu (backannotierte netzliste) 
erfunden.

von Holger (Gast)


Lesenswert?

Jens Langecker schrieb:
> ich hab hier ein Spartan3-Projekt, bei dem 6 RAM-Bänke angesteuert
>
> werden. Das Projekt ist nicht von mir entwickelt worden und ich kann
>
> weite Teile des VHDL-Codes auch nicht nachvollziehen (aber das ist ein
>
> anderes Thema).
VHDL-Codes nachvollziehen ist super wichtig.
Besonders wenn man am HDL Design aufbohren ist.
Du must da auch HDL Code Analyse Tools dafür haben,
um da den Faden zu verfolgen.
z.B Code Patata oder Sigasi.

Bei mir ist das auch nicht einfach einen Code zu warten
den ich nicht so richtig kenne.
Aber aus Erfahrung habe ich mit den Analyse Tools den HDL Code
fractorieren u. siplifizieren können.

Hier ist der Link:
Beitrag "Code Patata VHDL VERILOG EDITOR"


Vielleicht wäre das HDL Code Analyse
Tool Kit eine Option  für Dich?

Gruss Holger.

von Jens Langecker (Gast)


Lesenswert?

Hallo,

inzwischen mußte ich feststellen, daß die RAM-Probleme gar nichts mit 
den unterschiedlichen Bitfiles zu tun hatten, sondern mit der 
Umgebungstemperatur ;-O
Verdammt, ich dachte, ich hätte da einen brauchenbaren Ansatzpunkt 
gefunden!

Danke für Eure Hilfe!

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.