SDC-Einschränkungen für Zwei-Flop-Synchronisierer

Ich habe Zweifel, was die richtige SDC-Einschränkung für das CDC-Modul sein sollte, dh Zwei-Flop-Synchronisierer. zwischen " datVorbeifahren bis aclkVorbeifahren bdat1" bclkHinweis: aclkund bclksind nicht gleich, auch Frage was wäre wenn auch gleich?

Ist es ein falscher Pfad?

Geben Sie hier die Bildbeschreibung ein

Es folgt eine SDC-Einschränkungsdatei, die ich verwendet habe.

# Input ports
# -----------------------------------------------------------------------------
set_input_delay $ACLK_IN_DELAY  -clock $SCLK [get_ports dat ]  

set_input_delay $V_CLK_1_IN_DELAY     -clock $V_CLK_1    [get_ports srst_ni]  
set_input_delay $V_CLK_1_IN_DELAY     -clock $V_CLK_1    [get_ports drst_ni]  

# Output ports
# -----------------------------------------------------------------------------
set_output_delay $BCLK_OUT_DELAY  -clock $DCLK [get_ports bdat2] 
Was ist Ihre Vermutung und warum? (Wir geben keine einfachen Antworten auf Fragen, die nach Hausaufgaben riechen und keine Anstrengung zeigen.)
@Wouter: Es ist keine Hausarbeit, ich arbeite mit dem Spyglass-Tool zum Bereinigen des CDC-Regelsatzes, ich habe dieses Modul und wie Sie sehen können, wird dieses Modul verwendet, um Metastabilität zu verhindern. Ich beobachte den Fehler data loss on same or fast to slow clock domain crossing, also denke ich, dass er möglicherweise einen falschen Pfad enthält, sodass auf diesem Pfad keine Zeitprüfungen durchgeführt werden. Wenn es Standardbeschränkungen für diese Art von Kreuzung gibt, möchte ich wissen, sonst nichts.
Wenn Sie keine Timing-Einschränkungen eingerichtet haben, kann es keine Timing-Ignorierungen oder falschen Pfade geben. Kann Ihr Tool einen Uhr-Interaktionsbericht generieren?
@Martin Zabel: Ja klar!
Was sind die Ports srst_niund drst_ni? Es scheint nichts mit dem Design auf dem Bild zu tun zu haben?
ja, es ist vereinfachtes Diagramm so ausgeschlossen, aber tatsächliche RTL verwendet, die zurückgesetzt werden.

Antworten (2)

Da sein Quelltakt aclkund sein Zieltakt ist bclk, adatsollte hier der einzige falsche Pfad sein. Andere Pfade sind gültig und erfordern keine besondere Einschränkung.

Der falsche Pfad kann zum Dateneingangspin des zweiten Registers (dem zwischen adatund bdat1) definiert werden. Ich weiß nicht, wie Ihr Tool die Registernamen behandelt, aber ich habe im folgenden Beispiel die Namenskonvention von Synopsys verwendet.

set_false_path -to bdat1_reg/D

Es gibt eine zweite Möglichkeit, diesen falschen Pfad zu definieren. Wenn die Uhren asynchron zueinander definiert sind, adatwird automatisch ein falscher Pfad angezeigt. Ich gehe davon aus ACLKund BCLKsind zuvor definierte Takte.

set_clock_groups -asynchronous -group ACLK -group BCLK

Zwei Flip-Flop-Synchronisationen können mit den folgenden XDC-Leitungen eingeschränkt werden. XDC ist eine Xilinx-Variante für die allgemein bekannten Synopsis Design Constraint-Dateien (SDC).

set_property ASYNC_REG true [get_cells -regexp {gen\[\d+\]\.Sync/FF2}]
set_property ASYNC_REG true [get_cells -regexp {gen\[\d+\]\.Sync/FF1_METASTABILITY_FFS}]
set_false_path -from [all_clocks] -to [get_pins -regexp {gen\[\d+\]\.Sync/FF1_METASTABILITY_FFS/D}]

Quelle: sync_Bits_Xilinx.xdc

FF1_METASTABILITY_FFSist das erste Flip-Flop (das metastabile) und FF2ist das zweite Flip-Flop.


Eine generische 2-FF-Synchronizer-Implementierung finden Sie in unserer PoC-Bibliothek als PoC.misc.sync.Bits, sowie zwei herstelleroptimierte Implementierungen für Xilinx und Altera . Der obige XDC-Code wird relativ auf alle Instanzen von angewendet, PoC.misc.sync.Bitsindem die Dateieigenschaft SCOPED_TO_REFauf gesetzt wird sync_Bits_Xilinx.

Ich denke, die von Ihnen angegebenen Einschränkungen gelten für XDC, nicht für SDC. Wenn ich also eine CDC-Analyse für einen Zwei-Flop-Synchronizer auf einer Nicht-Xillinx-Plattform wie dem Spyglass von Atrenta durchführe, wie soll ich sie einschränken?
ASYNC_REG ist auch eine Verilog-Eigenschaft (*ASYNC_REG="true"*), die Sie direkt in den Verilog-Code schreiben können.