Ich habe Zweifel, was die richtige SDC-Einschränkung für das CDC-Modul sein sollte, dh Zwei-Flop-Synchronisierer. zwischen " dat
Vorbeifahren bis aclk
Vorbeifahren bdat1
" bclk
Hinweis: aclk
und bclk
sind nicht gleich, auch Frage was wäre wenn auch gleich?
Ist es ein falscher Pfad?
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]
Da sein Quelltakt aclk
und sein Zieltakt ist bclk
, adat
sollte 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 adat
und 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, adat
wird automatisch ein falscher Pfad angezeigt. Ich gehe davon aus ACLK
und BCLK
sind 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_FFS
ist das erste Flip-Flop (das metastabile) und FF2
ist 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.Bits
indem die Dateieigenschaft SCOPED_TO_REF
auf gesetzt wird sync_Bits_Xilinx
.
ASYNC_REG
ist auch eine Verilog-Eigenschaft (*ASYNC_REG="true"*)
, die Sie direkt in den Verilog-Code schreiben können.
Wouter van Ooijen
Prakash Darji
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.Paebbels
Prakash Darji
Martin Zabel
srst_ni
unddrst_ni
? Es scheint nichts mit dem Design auf dem Bild zu tun zu haben?Prakash Darji