Generating and Waiving Design Checks - 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

The waiver mechanism allows you to waive CDC, DRC, and Methodology violations in your design. After you waive a violation, it no longer appears in the results of the report_cdc, report_drc, and report_methodology commands.

Waived DRCs are excluded from mandatory checks that run before implementation steps such as:

  • opt_design
  • place_design
  • phys_opt_design
  • route_design
  • write_bitstream

Use the following instructions to create and apply waivers:

  1. Create waivers at the top level or scope them to a specific hierarchical module.
  2. Use read_xdc or source to import waivers into your design. You can include them in any XDC file or Tcl script in both Project and Non-Project modes.
  3. The tool automatically saves waivers inside design checkpoints and restores them when checkpoints are reloaded.
  4. Use write_xdc or write_waivers to export waivers.

Vivado records the following metadata for each waiver:

  • User who created it
  • Date and time of creation
  • Short description

Review and validate all waivers to ensure they remain appropriate and relevant to the current design state.

Waivers are first-class objects that you can create, query, report on, and delete. They reference other first-class objects returned by Vivado get_* commands, such as pins, cells, nets, Pblocks, and sites.

Make sure the referenced objects exist in the design before you create the waiver. If the design objects do not exist at the time of waiver creation, the waiver does not apply to them.

Important: Create waivers on a post-synthesized design. Avoid creating waivers on post-implemented designs because the referenced objects might not exist in the post-synthesis netlist. Invalid waivers are discarded if applied at the wrong stage to non-existing objects.

The waiver mechanism supports replication and deletion of netlist objects.

  • When an object involved in a waiver is replicated, Vivado automatically adds the replicated object to the waiver.
  • When a referenced object is deleted, Vivado removes it from the waiver.
  • If the deletion leaves the waiver with no valid references, Vivado removes it from the in-memory design and does not save it in future checkpoints.

This behavior also applies to timing constraints and clock objects. If a clock is deleted through logic optimization or by removing timing constraints using reset_timing, Vivado deletes any waiver that references the clock. That waiver is not saved in future checkpoints.

Note: The following commands do not update waiver references:
  • rename_net
  • rename_cell
  • rename_port
  • rename_pin

If you rename a referenced object, the waiver becomes invalid because it still points to the original name.

Note: You cannot waive Custom Design Rule Checks. For more information, refer to Creating Custom Design Rules Checks (DRCs) in the Vivado Design Suite User Guide: Using Tcl Scripting (UG894).