I have doubt, What should be proper SDC constraint for CDC module, i.e., two flop synchronizer.
between "dat
driving by aclk
to bdat1
driving by bclk
"
Note: aclk
and bclk
are not the same, also question for what if same too?
Is it false path?
Following is SDC constraints file I have used,
# 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]
Best Answer
Since its source clock is
aclk
and target clock isbclk
,adat
should be the only false path here. Other paths are valid and don't require any special constraint.The false path can be defined to the data input pin of the second register (the one between
adat
andbdat1
). I don't know how your tool treats the register names, but I used Synopsys' naming convention in the following example.There is a second way to define this false path. If the clocks are defined asynchronous to each other,
adat
will be false path automatically. I assumeACLK
andBCLK
are previously defined clocks.