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).
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
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.
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ß,
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:
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.
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.
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!