Forum: FPGA, VHDL & Co. PhysDesignRules:372 - Gated clock-Problem


von engineer_on_tour (Gast)


Lesenswert?

Hallo zusammen,

ich bekommen bei der bit-file-Erstellung in der ISE ein Problem mit 
meinem VHDL-Code (für Spartan 6).

Die Warnung: PhysDesignRules:372 - Gated clock.Clock net 
top_s_SM_VideoImageWidth is sourced by a combinatorial pin. This is not 
good design practice. Use the CE pin to control the loading of data into 
the flip-flop.

erscheint. Diese würde ich gerne verstehen und wenn möglich beseitigen. 
Dabei ist anzumerken, dass mein Code die gewünschte Funktion erfüllt. 
Dennoch schreibe ich lieber warnungsfreien Code oder verstehe ich die 
Warnung zumindest.

Ich habe eine StateMachine, die in den Zuständen n-1 eine Variable mit 
'0' beschreibt. Im Zustand n wird die Variable mit '1' beschrieben.

Im nächsten Schritt weise ich bei setzten der Variable 
(i_SM_VideoImageWidth) Daten einem Vector zu:

process(i_SM_VideoImageWidth)
begin
  if rising_edge(i_SM_VideoImageWidth) then
    int_VideoImageWidth <= i_SM_VideoData;
  end if;
end process;


Kann mir jemand die Warnung erklären und mir sagen, ob und wie ich sie 
beseitigen kann?

Vielen Dank für eure Hilfe!


p.s.: Wenn weitere Angaben benötigt werden meldet euch einfach.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

engineer_on_tour schrieb:
> rising_edge(i_SM_VideoImageWidth)
In einem gut wartbaren System gibt es nur 1 Takt. Und der kommt nicht 
irgendwoher aus dem Design, sondern von einem Taktpin oder einem 
Taktmanager. Und der heißt dann auch nicht irgendwie, sondern hat ein 
"clk" oder ein "clock" im Namen.

> eine Variable
Warum ist keines deiner beiden Signale i_SM_VideoImageWidth und 
int_VideoImageWidth eine Variable?

> Dabei ist anzumerken, dass mein Code die gewünschte Funktion erfüllt.
Heute noch. Aber warte mal ab, wenn du das FPGA wechselst. Manchmal 
reicht auch ein Die-Shrink oder eine neue Charge aus...

> Dennoch schreibe ich lieber warnungsfreien Code oder verstehe ich
> die Warnung zumindest.
Diese Warnung gehört beseitigt. Für mich ist das ein Fehler...

> Kann mir jemand die Warnung erklären und mir sagen, ob und wie ich sie
> beseitigen kann?
Die Warnung ist selbsterklärend.
Du musst deine Flankenerkennung von i_SM_VideoImageWidth ändern (wenn 
prinzipiell eine nötig ist, was ich sehr bezweifle).

: Bearbeitet durch Moderator
von engineer_on_tour (Gast)


Lesenswert?

Lothar Miller schrieb:
> In einem gut wartbaren System gibt es nur 1 Takt. Und der kommt nicht
> irgendwoher aus dem Design, sondern von einem Taktpin oder einem
> Taktmanager. Und der heißt dann auch nicht irgendwie, sondern hat ein
> "clk" oder ein "clock" im Namen.

In meinem Fall nutze ich dieses Signal nur dazu, einen FlipFlop mit 
einem Steuersignal zu versorgen. Denn ich möchte Daten Speichern, wenn 
die Variable/Signal 'i_SM_VideoImageWidth' auf '1' geht. Diese steigende 
Flanke ist der einzige Zeitpunkt, an dem die Daten von 'i_SM_VideoData' 
sinnvoll sind.

Daher möchte ich die Daten von 'i_SM_VideoData' zu diesem Zeitpunkt 
speichern.

Wenn es dafür eine bessere Methode gibt werde ich diese natürlich sofort 
nutzen.

von Falk B. (falk)


Lesenswert?


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Diese steigende Flanke (von i_SM_VideoImageWidth)
> ist der einzige Zeitpunkt,
> an dem die Daten von 'i_SM_VideoData' sinnvoll sind.
Und wo wird dieses Signal i_SM_VideoImageWidth erzeugt? Im FPGA? 
Synchron zu welchem Takt?

von engineer_on_tour (Gast)


Lesenswert?

Habe das Problem glaube ich halbwegs verstanden und anderweitig gelöst.

Vielen Dank für eure Rückmeldungen!

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.