Forum: FPGA, VHDL & Co. Interpretation einer Fehlerausgabe


von Stefan H. (stefanhanke)


Angehängte Dateien:

Lesenswert?

Hallo,

folgende Fehler treten bei einer Timingsimulation auf:
1
# ** Warning: /X_FF SETUP   X  VIOLATION ON I WITH RESPECT TO CLK;
2
#   Expected := 0.34 ns; Observed := 0.166 ns; At : 4790.066 ns
3
#    Time: 4790066 ps  Iteration: 1  Instance: /tb_top_2_vhd/uut/the_sdr_automata_sdr_wrapper_inst_sdram_ctrl_dqin_10
4
# ** Warning: /X_FF SETUP   X  VIOLATION ON I WITH RESPECT TO CLK;
5
#   Expected := 0.34 ns; Observed := 0.166 ns; At : 4790.066 ns
6
#    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

von Falk (Gast)


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

von Stefan H. (stefanhanke)


Angehängte Dateien:

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

von Falk (Gast)


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

von Stefan H. (stefanhanke)


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

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.