Creating CDC Waivers - 2025.2 English - UG906

Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906)

Document ID
UG906
Release Date
2025-12-10
Version
2025.2 English

CDC waivers are simpler to define because each CDC violation references only two objects: a source pin or port and a destination pin or port. Use the -from and -to options to specify the source and destination pins or ports. Do not use -string or -objects with CDC waivers.

Important: CDC waivers are based only on the source and destination pins. They do not consider the source and destination clocks. Creating a waiver from Vivado or CDC violations with the same pins for different clock pairs triggers a warning message.
WARNING: [Vivado_Tcl 4-935] Waiver ID 'CDC-7' is a duplicate and will not be added again.

Example: CDC-1 Waiver Between Two Pins

The following command creates a CDC-1 waiver between the source pin U_CORE/U00_TOP/sr_reg[3]/C and the destination pin U_CORE/U10/ar_reg[3]/CE.

create_waiver -id {CDC-1} -description "CDC violations" \
-from [get_pins {U_CORE/U00_TOP/sr_reg[3]/C}] \
-to [get_pins {U_CORE/U10/ar_reg[3]/CE}]

If you omit the -from or -to option, Vivado treats the missing option as a wildcard. The following two commands are equivalent and waive all CDC-1 violations to the endpoint pin U_CORE/U10/ar_reg[3]/CE, regardless of the startpoint:

create_waiver -id {CDC-1} -description "CDC violations" \
-from {*PIN} \
-to [get_pins {U_CORE/U10/ar_reg[3]/CE}]
create_waiver -id {CDC-1} -description "CDC violations" \
-to [get_pins {U_CORE/U10/ar_reg[3]/CE}]