mikrocontroller.net

Forum: FPGA, VHDL & Co. Interpretation einer Fehlerausgabe


Autor: Stefan Hanke (stefanhanke)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

folgende Fehler treten bei einer Timingsimulation auf:
# ** Warning: /X_FF SETUP   X  VIOLATION ON I WITH RESPECT TO CLK;
#   Expected := 0.34 ns; Observed := 0.166 ns; At : 4790.066 ns
#    Time: 4790066 ps  Iteration: 1  Instance: /tb_top_2_vhd/uut/the_sdr_automata_sdr_wrapper_inst_sdram_ctrl_dqin_10
# ** Warning: /X_FF SETUP   X  VIOLATION ON I WITH RESPECT TO CLK;
#   Expected := 0.34 ns; Observed := 0.166 ns; At : 4790.066 ns
#    Time: 4790066 ps  Iteration: 1  Instance: /tb_top_2_vhd/uut/the_sdr_automata_sdr_wrapper_inst_sdram_ctrl_dqin_9

Soweit dachte ich, sei alles klar. Es gibt zwei FFs, an denen jeweils 
der Eingang I zu frueh wechselt. Also hab ich mir das Timing der 
entsprechenden Signale genauer angeschaut. Zu den genannten Zeiten kann 
ich die Fehler allerdings nicht nachvollziehen. Ausserdem: Warum wird 
"I" auf X gezogen?! Ich hätte erwartet, dass nur "O" auf X gezogen 
wird...

Was ist der Unterschied zwischen Setup "High" und "Low" Violations?
"High" = von 0 nach 1?!

 -- stefan

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan Hanke

>Soweit dachte ich, sei alles klar. Es gibt zwei FFs, an denen jeweils
>der Eingang I zu frueh wechselt. Also hab ich mir das Timing der

Kaum, eher zu spät.

>entsprechenden Signale genauer angeschaut. Zu den genannten Zeiten kann
>ich die Fehler allerdings nicht nachvollziehen. Ausserdem: Warum wird
>"I" auf X gezogen?! Ich hätte erwartet, dass nur "O" auf X gezogen
>wird...

Deine Testbench stimmt nicht. Werdenalle Register durch Reset oder 
Zuweisung auf einen definierten Wert gesetzt?

>Was ist der Unterschied zwischen Setup "High" und "Low" Violations?

Wo steht das?

MfG
Falk

Autor: Stefan Hanke (stefanhanke)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Falk wrote:
> Kaum, eher zu spät.
Das sehe ich auch so.
Aber warum widersprechen sich dann Waveform und Testausgabe?

> Deine Testbench stimmt nicht. Werdenalle Register durch Reset oder
> Zuweisung auf einen definierten Wert gesetzt?
Die Testbench? Warum denn das?

Die entsprechenden Signale wurden tatsächlich nicht initial gesetzt. Die 
Instanz "sdram_ctrl" ist ein nicht von mir erstellter Controller, der 
einen Reset will. Tja, dummerweise hat der den Reset nur weitergereicht, 
anstatt seine internen Signale zu setzehn. Ich hatte mit dem 
(nicht-dokumentierten) Teil bisher nur Schwierigkeiten... :-/

Die Input-Signale sind am Anfang auf U, obwohl sie im Code jetzt gesetzt 
werden. Selbst, wenn die dann sofort auf U gezogen würden, würde ich 
erwarten, wenigstens ein kurzen Aufblitzen der 0 zu sehen.

>>Was ist der Unterschied zwischen Setup "High" und "Low" Violations?
> Wo steht das?
Nirgendwo. Aber ab und an heisst es nicht "SETUP X", sondern eben "SETUP 
High Violation...".

 -- stefan

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan Hanke

>> Deine Testbench stimmt nicht. Werdenalle Register durch Reset oder
>> Zuweisung auf einen definierten Wert gesetzt?
>Die Testbench? Warum denn das?

Deine Testbench muss ALLE Eingangssignale des zu testenden Moduls 
definiert zuweisen.

>Die entsprechenden Signale wurden tatsächlich nicht initial gesetzt. Die
>Instanz "sdram_ctrl" ist ein nicht von mir erstellter Controller, der
>einen Reset will. Tja, dummerweise hat der den Reset nur weitergereicht,

Gibst du ihm auch einen Reset?

>anstatt seine internen Signale zu setzehn. Ich hatte mit dem

Das wäre ein massiver Fehler. Kaum zu glauben.

>(nicht-dokumentierten) Teil bisher nur Schwierigkeiten... :-/

>Die Input-Signale sind am Anfang auf U, obwohl sie im Code jetzt gesetzt
>werden. Selbst, wenn die dann sofort auf U gezogen würden, würde ich
>erwarten, wenigstens ein kurzen Aufblitzen der 0 zu sehen.

Nix, da, da ist was faul. Mit deiner Testbench.

>Nirgendwo. Aber ab und an heisst es nicht "SETUP X", sondern eben "SETUP
>High Violation...".

Ohne komplete Fehlermeldung plus die Umstände die dazu führten kann man 
nur Räselraten.

MfG
Falk

Autor: Stefan Hanke (stefanhanke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk wrote:
> Deine Testbench muss ALLE Eingangssignale des zu testenden Moduls
> definiert zuweisen.
Ich habe das so ausgelegt, dass die TB einfach einen Startschuss gibt, 
und dann intern ein Automat die Steuerung der weiteren Komponenten 
übernimmt.

> Gibst du ihm auch einen Reset?
Ja.

> Das wäre ein massiver Fehler. Kaum zu glauben.
Ich weiss aber, dass genau dieser Controller ohne meine Modifikationen 
schon funktioniert hat.

> Ohne komplete Fehlermeldung plus die Umstände die dazu führten kann man
> nur Räselraten.
Ich bin auch grad am Rätselraten. :) Aber ich habe mir gerade ein paar 
Sourcen geholt, die schonmal auf dem Board liefen. Eventuell finde ich 
damit meinen Fehler. Ich werde mich dann nochmal melden (wird wohl 
morgen werden).

 -- stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.