The second way to create waivers is by using DRC, Methodology, or CDC
violation objects. This is the method Vivado uses in the
GUI when it sends create_waiver commands to the Tcl
Console.
Use the following syntax to create a waiver from one or more violation objects:
create_waiver -of_objects <ViolationObject(s)> -description <string> [-user <name>]
-
-descriptionis required. - If you omit the
-useroption, Vivado uses the user ID of the person running the tools.
Use the following commands to get violation objects:
-
get_cdc_violations -
get_drc_violations -
get_methodology_violationsThese commands only return results if you have already run
report_cdc,report_drc, orreport_methodology.
To retrieve violations from a specific named report, use the -name option.
Example: Waiving CDC-1 Violations in a Specific Module
report_cdc -name cdc_1
set vios [get_cdc_violations -name cdc_1 -filter {CHECK == CDC-1}]
foreach vio $vios {
if {[regexp {^top/sync_1} [get_property STARTPOINT_PIN $vio]]} {
create_waiver -of $vio -description {Safe by protocol}
}
}
This code creates a waiver for each CDC-1 violation that has a
startpoint in the module top/sync_1.
Customizing Waivers to Cover Multiple Violations
Vivado builds waivers from the objects and strings in each violation, making each waiver unique. To apply a waiver to multiple violations, follow these steps:
- Export the waiver to an external file.
- Edit the
create_waivercommand manually. - Use patterns and wildcards to generalize the single objects and strings.
For guidance on using patterns and wildcards, see Creating DRC and Methodology Waivers.
Special Handling for Some Checks
Vivado automatically converts certain strings to wildcards for specific checks, including the following:
-
UCIO-1 -
NSTD-1 -
TIMING-15 -
TIMING-16
For TIMING-15 and TIMING-16, Vivado ignores the setup and hold slack
amount. The create_waiver command replaces the
string representing slack with a wildcard. This allows the waiver to apply to the
specific object regardless of the reported slack value. Similar wildcard behavior
applies to UCIO-1 and NSTD-1.