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:
- Create waivers at the top level or scope them to a specific hierarchical module.
- Use
read_xdcorsourceto import waivers into your design. You can include them in any XDC file or Tcl script in both Project and Non-Project modes. - The tool automatically saves waivers inside design checkpoints and restores them when checkpoints are reloaded.
- Use
write_xdcorwrite_waiversto 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.
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.
-
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.