Zur Verwendung von „BLOCK INTERCLOCKDOMAIN PATHS“

Ich basierte ein FPGA-Design auf Lattice-Referenzcode, der in der Timing-Constraints- .lpfDatei Folgendes angibt:

BLOCK INTERCLOCKDOMAIN PATHS

Die beiden Haupttaktdomänen des Designs sind 100 MHz und 125 MHz, daher erwarte ich, dass sie durch Phasenbeziehungen driften, die die domänenübergreifenden Setup- und Haltezeiten regelmäßig verletzen. Jede Taktdomäne hat entsprechend beschränkte Frequenzen und die Übertragung von Daten zwischen Domänen sieht solide aus.

Lattice selbst postet Ratschläge, die von der Verwendung in ihren FAQ abzuraten scheinen BLOCK INTERCLOCKDOMAIN PATHS:

Frage Wie kann ich Clock-Domain-Transfers blockieren, wenn ich Synchronizer-Schaltungen habe?

Antwort ... traceanalysiert alle Taktdomänenübertragungen, bei denen es die Quell- und Zieltaktdomänen in Beziehung setzen kann. Dies ist möglicherweise nicht immer erwünscht. Sie können Ihren eigenen Synchronisierer verwenden, um die Übertragung zwischen den Taktdomänen zu handhaben. In diesem Fall tracesollte der Clock-Domain-Transfer nicht analysiert werden. Dies kann auf drei Arten erfolgen:

BLOCK INTERCLOCKDOMAIN PATHSDiese Einstellung blockiert alle Taktdomänenübertragungen im Design. Wenn alle Taktdomänenübertragungen im Design von der Logik im Design gehandhabt werden, kann diese verwendet werden. Seien Sie vorsichtig mit dieser Einstellung, da sie die Analyse aller Clock-Domain-Transfers stoppt trace.

BLOCK PATH FROM CLKNET "src_clk" TO CLKNET "dst_clk"Diese Einstellung blockiert alle Clock-Domain-Transfers von src_clk zu dst_clk. Dies umfasst alle Übertragungen zwischen diesen beiden Domänen. Alle anderen Clock-Domain-Transfers werden von gemeldet und terminiert trace.

BLOCK FROM CELL "myff1*" TO CELL "myff2*"Diese Einstellung blockiert den Clock-Domain-Transfer von myff1* zu myff2*. Dies ist ein sehr spezifischer Pfad und nützlich, wenn Sie mehrere verschiedene Arten von Taktdomänenübertragungen zwischen zwei Domänen haben. Beispielsweise kann ein Design einen asynchronen FIFO und eine FF-zu-FF-Domänenübertragung zwischen denselben Domänen enthalten. Die asynchrone FIFO-Übertragung kann sicher blockiert werden, aber die FF-zu-FF-Übertragung muss zeitlich gesteuert werden.

Und:

Frage Wofür wird die Einstellung „BLOCK INTERCLOCKDOMAIN PATH“ verwendet?

Antwort Diese Einschränkung wird verwendet, um Pfade zu blockieren, die eine Datenübertragung zwischen Registern umfassen, die von unterschiedlichen Taktnetzen getaktet werden. Wenn es ohne Verständnis verwendet wird, blockiert es alle Uhrendomänen voneinander, selbst wenn sie verwandt sein sollten. Dies kann dazu führen, dass Ihre Tools die erforderliche Routing-Verzögerung zwischen verwandten Takt- und Datenpfaden nicht berechnen, und kann zu zeitweiligen Setup-and-Hold-Fehlern in Ihrem Design führen.

Verwenden Sie am besten a BLOCK CLKNETfür jeden Pfad, der nicht verwandt ist, falls Sie verwandte Uhren haben.

Ich fühle mich verpflichtet, die Catch-All-Einschränkung angesichts dieses Hinweises aufzuheben und die relevanten Zellen in meinem Synchronisierer (und ihren Pfad in der Hierarchie), die die Domänen kreuzen, explizit zu bestimmen und dann die Analyse jeder bekannten Kreuzung explizit auf Zellebene zu blockieren . Ich weiß, wo diese schließlich sein sollten - ich habe sie entworfen, aber die genauen Hierarchienamen werden eine Weile dauern, um die Timing-Berichtsverletzungen zu finden, die ich erwarte, wenn ich diese Einschränkung entferne. Dies wird wahrscheinlich einen Tag und ein paar P & R-Zyklen dauern, um sie alle zu erhalten.

Der Nettoeffekt wird wahrscheinlich genau das gleiche Design sein, das ich im Moment habe, mit einer längeren Constraint-Datei und den gleichen fast kritischen Pfaden.

Also – würdest du in den sauren Apfel beißen und den Auffangbehälter herausnehmen und bei jeder Überfahrt Beschränkungen BLOCK INTERCLOCKDOMAIN PATHSauferlegen ? BLOCK .. CELLOder ist es die Mühe nicht wert und den Catch-all zu behalten?

Antworten (1)

Was Sie tun, ist richtig. Der Schlüsselteil ist der Synchronisierer. Wenn dort nur Interclock-Domain-Netze verarbeitet werden, können Sie die Warnung ignorieren.

Ihr Plan, Einschränkungen in anderen Netzen zu entfernen, ist nicht der richtige Plan. Wenn Sie Warnungen außerhalb Ihres Synchronisierers erhalten, bedeutet dies, dass Sie an anderer Stelle eine Zeitüberschreitung haben. Sie müssen sie reparieren.

Ich glaube, ich habe noch nie eine Cross-Clock-Domain-Warnung gesehen, weil ich diese Catch-All-Einschränkung hatte. Ich werde versuchen, es zu entfernen und sehen, was kommt.