Timevision Constraints Userguide
Timevision Constraints Userguide
2 Preface
2.1 Related Documentation
TimeVision User Guide
TimeVision MultiMode Coverage User Guide
TimeVision Hierarchical User Guide
TimeVision CDC User Guide
Convention Description
tv_shell> A TimeVision prompt.
Tv_shell> current_scenario
$ A UNIX shell prompt.
$ tv_shell -help
Courier The courier font indicates a command, command option or argument that
you would literally enter.
tv_shell> read_verilog top.v
This is a command (read_verilog) and has a command argu-
ment with a value top.v.
<Courier> If the command argument is displayed between angle brackets it indicates a
user defined input for which you must supply a name or value.
tv_shell> read_verilog <input_file>
You must supply a name or value for <input_file> such as
shown below:
tv_shell> read_verilog top.v
[] Square brackets indicate optional arguments.
tv_shell> write_waiver [-quiet] <file_name>
The above [-quiet] argument is optional.
[|] Vertical bars within the square brackets indicate a set of possible choices of
which one must be specified
tv_shell> check_sdc_rule [-rule value | -all]
In the above example, one of -rule, or -all must be specified.
{} Braces must be entered literally.
tv_shell> for_each_in_collection iter [get U1/*] {
<command1> <command2> }
In the above example the braces {} must be placed around the sequence of
commands.
... Indicates that you can repeat the previous argument. If three dots are
used with brackets ( [<argument>]... ), you can specify zero or more
arguments. If the three dots are used without brackets (<argument> ...),
you must specify at least one argument.
Convention Description
... Indicates that you can repeat the previous argument. If three dots
are used with brackets ( [<argument>]... ), you can specify zero or
more arguments. If the three dots are used without brackets
(<argument> ...), you must specify at least one argument.
. Indicates an omission in an example of output or input.
.
.
\ Indicates a continuation of a command line.
3 Constraints Verification
3.1 Introduction
A typical SoC design has very complex timing constraints, having from 10’s to 100’s of clocks with
varying relationships. Determining the relationship of each clock pair is an N2 problem and the odds of
getting them all correct is highly unlikely. Adding to this complexity the issue of design respin where
the constraints are reused but functionality has changed, IP coming from multiple sources, and the
entire constraints verification process becomes a very tedious task.
Using Timevision, designers can easily verify constraints whether in tcl or SDC format, at the RTL or gate
level. After loading the design and all timing constraints, the command “check_constraints” is
run to identify and report all missing or incorrect constraints. This command allocates every violation
into one of several categories. Each category has several rules representing a specific type of violation.
The designer is provided with a summary of all rules pass/fail status and the number of violation. If any
rule fails, a complete list of violating objects is reported for that rule. If neccassary, the designer can
then use the Timevision command “debug_rule” for any reported violation to dump the details of
why that object violates the rule. After debug /analysis the designer can either fix the design or
constraints such that the object does not violation anymore. Or, use the “set_waiver” command to
waive any given violating object. In addition to waiving particular objects, any rule can also be
completely turned-off (inactived). Moreover, each rule is assigned a “severity” level: Fatal, Error,
Warning, or Info. The most serious rules typically have a severity type of “Fatal”. Command
“check_constraints” returns a 0 (FAIL) if there are any violations in any rule with a severity
level of “Fatal”. Otherwise, “check_constraints” returns a 1 (PASS). This PASS / FAIL status
represented by a return value of 1 / 0 respectively allows design teams to run
“check_constraints” in automated batch flows before going into signoff STA to makes sure that
there are no timing issues.
Here is the use model and typical work flow for “check_constraints”
Loading a design is done like any other design (beginning at “Chapter 3 – Getting Started” of the
Timevision User Guide).
The basic flow is:
1. Load and link the design (RTL or gate/netlist with .lib files)
2. Load constraints, update the timing graph, and infer each clock pair relationship:
a. load the SDC or Tcl timing constraints
b. build_timing
c. infer_clock_relations
4. Source Tcl waivers file with “set_waiver” commands from previous runs. This step is
optional, and only relevant after constraint verification has been run previously, the designer
has analyzed the results, and decided to “waive” violations associated with any rules.
read_libs <libraries>
read_verilog <top>.v
# Inactive rules: do not care about these, never run and report
set_rule -inactive -rule CLK-INC002 ;
set_rule -inactive -rule CLK-OBJ001 ;
## run "check_constraints"
## Reports are generated in <directory> specified by –directory
## check_constraints_flag returns 0 (FAIL) or 1 (PASS):
set rdir tv_cons_reports
set veri_results [check_constraints -directory $rdir_mm -verbose]
Run “check_constraints”, get either a PASS or FAIL
Look at summary and detailed reports in directory
specified by the –directpory flag
There are rules in Timevision relating to objects where the user, optionally, desires to know if the
violation occurred on an intentional cell/manually instantiated cell or a synthesized cell. Timevison
accommodates this by providing variables which controls the reporting. The variable are:
The value for these variables can be an explicit list or a list of regular expressions. The default
behavior is that if the variables are not set then every cell is considered to be intentional.
Below are examples of the variables and how it impacts the rules from the list above.
Example 1:
Set as intentional cells any cell with instance name that matches regular expression {.*or.*}
set design_intentional_cell_names {.*or.*}
Violation Report:
#********************************************************
#* *
#* report_rule *
#* -rule {CLK-DAT* } *
#* -info *
#* *
#* Design : top *
#********************************************************
Category Rule Severity Status Object_1 Object_2
-----------------------------------------------------------
Sdc.Clock CLK-DATA01 Warning FAIL clk2 or2/A2
Sdc.Clock CLK-DATA02 Error FAIL clk1 i5/a1
clk1 i12/a1
Explaination of report:
Note that rule CLK-DATA01 is violated because the “design_intentional_cell_names” variable is set
to “{.*or.*}”, and since cell “or2” violates the rule it is reported in CLK-DATA01, all other violation
where the cell instance name does not match are reported under rule CLK-DATA02. These cells are
considered synthesized.
Example 2:
Set as intentional cells any library cell with ref_name that matches regular expression {MUX2.*}
settings Build/IntentionalLibraryCells {MUX2.*}
Violation Report:
#********************************************************
#* *
#* report_rule *
#* -fail *
#* -rule {CLK-RCN* CLK-PCN* } *
#* *
#* Design : top *
#********************************************************
Category Rule Severity Status Object_1 Object_2
-----------------------------------------------------------
Sdc.Clock CLK-RCN001 Warning FAIL clk1 u_g0c/Z
Explaination of report:
The rule CLK-RCN001 is violated because cell “u_g0c” is a mux and matches the regular
expression for library cell name, which is confirmed with the ref_name attribute. Note there are
no CLK-RCN002 violations because all violations are on muxes.
There is a rule in Timevision relatings to clock cell objects where the user, optionally, desires to know
if there are undesirable cells in the clock path. Timevison accommodates this by providing variables
which controls the reporting. The variable are:
The value for these variables can be an explicit list or a list of regular expressions. The default
behavior is that if the variables are not set then every cell is considered to be intentional.
Below is an example of the variables and how it impacts the rule above.
Example :
Set as intentional clock cells any library cell with ref_name that matches regular expression
{.*MUX.*}
Violation Report:
#********************************************************
#* *
#* report_rule *
#* -rule {CLK-OBJ001 } *
#* -info *
#* *
#* Design : top *
#********************************************************
Category Rule Severity Status Object_1 Object_2 Object_3
----------------------------------------------------------------------
Sdc.Clock CLK-OBJ001 Warning FAIL clk1 i4 GTV_AND2
clk1 i5 GTV_AND2
clk1 i6 GTV_INV
clk1 or_ck_mux OR2_X1
Explaination of report:
Since the only celltype specified as intentional in the clock path is “{.*MUX.*}” all other cells violate
rule CLK-OBJ001 and are considered unintentional.
During early constraint development phase constraints like timing exceptions changes regularly making it
difficult to set a waiver and use it in subsequent runs. If the objects in the exception changes the waiver
becomes invalid. If the user so desires to not see these violations in subsequent runs, even if the exceptions
changes then the exception need to be auto-waived. In order to know which rules to generate waivers a run
without auto-waiver must be run first. Once the rules are violated then the user can setup auto-waiver.
Timevision has the ability to auto-generate waiver while reading the constraints. This feature is unique to
Timevision so the syntax to enable auto-waiver is parsed as a comment to other tools. Auto-waiver is
enabled and disabled with the following syntax:
# tv waive_on <rule(s)>
# tv waive_off
Any constraint between “waive_on” and “waive_off” will be auto-waived for the specified rules and message
“WVR-010” is issued in the shell and the logfile.
Example SDC:
# tv waive_on PPFP-001
set_false_path -from [get_pins f4/CK] -to [get_pins f5/D]
set_false_path -to [get_pins f4/D] -from [get_pins f5/CK]
# tv waive_off
The waivers can be written toa file and used in subsequent runs when auto-waiver is removed from the
constraints file.
As described in section 2.0 above, command “check_constraints” write out all reports in the
directory specified by the “-directory” flag. The following reports are generated:
Sdc.Readme
Brief description of the reports and sub-directories created by “check_constraints”
Sdc.Qor_Fatal.rpt
This is a summary report of rules with severity level “Fatal” - they are the most serious violations.
January 2015 19 Ausdia, Inc © 2015
TimeVision Constraints User Guide
“check_constraints” returns 0 (FAIL) if any of these rules violate. Otherwise 1 (PASS) is
returned
Sdc.Qor_Fails.rpt
This is a summary report of *all* Sdc rules that were run, and fail due to violations
Sdc.Qor_All.rpt
This is a summary report of *all* rules whether active, inactive, both PASS and FAIL
These directories have a report corresponding to each rule. The user first looks at the summary in one
of the “Qor” tables above, and can go to the detailed report for any rule in that table to see the list of
all violating objects associated with that rule.
Waived Failures:
W# Port Current Clock
----------------------------------
W0 dsp_pb_i[14] phyRefClk
----------------------------------
Applicable Waivers:
# Waiver W0
set_waiver -rule IOC-INC001 -obj1 dsp_pb_i[14] -obj2 phyRefClk -author "hollis" -date "07/07/14" -reason "None"
Notice in the above table, each rule has a “severity” level assigned to it. The severity level for any rule
can be changed using the “set_rule -severity” command as described in Section 2.0 above.
Description:
This rule identifies all ports and macro pins in the designs which should have a “create_clock”
defined on them, but no such “create_clock” definition exists in the current constraints. In order
to reduce noise, Timevision assigns a “score” to all reported ports and macro pins. A score of 100
means that Timevision is 100% sure the object being reported should be a “create_clock” source, and a
score less than 100 means it may be a “create_clock” source.
Design in figure 3.4.1 below shows missing clocks reported under rule CLK-MIS001
Figure 3.4.1
_
D Q
clk1 B1 Q
Missing create_clock
Missing create_clock _
D Q
clk2 FF1
Q
clk3
Missing create_clock
In the above design, ports “clk1”, “clk2”, and “clk3” do not have a “create_clock” defined on them
the register clock pins are not getting a clock.
Therefore, “check_constraints” will report these three ports under rule CLK-INC001.
Reports:
Sdc.Clock/CLK-MIS001.rpt :
# Rule: CLK-MIS001
# Severity: Fatal
# ==============================
#
# Design : mSoc
# CLK-MIS001
# Missing potential primary clock source
#
A# Certain Missing Primary Clock Source
-------------------------------------------------
A0 clk1
A1 clk2
A2 clk3
-------------------------------------------------
Debug
Source the scripts from the scriptWare directory in Timevision install directory then the following command can be
executed.
Waivers
Any reported violation can be waived using the “set_waiver” command.
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver –rule CLK-MIS001 –id A2 -reason “will select clk3”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-MIS001 -obj1 clk2 -author "hollis" -date "07/10/14" -reason "will select clk3"
Description:
This rule identifies all pins in the designs which should have a “create_generated_clock”
defined on them, but no such “create_generated_clock” definition exists in the current
constraints. In order to reduce noise, Timevision assigns a “score” to each reported pin. A score of 100
means that Timevision is 100% sure the object reported should be a
“create_generated_clock” source, and a score less than 100 means it may be a
“create_generated_clock” source.
Figure 3.4.2
_ _
D Q D Q
create_clock -name CLK3 FF1 FF3
Q Q
CLK3
Missing create_generated_clock
AOUT
In the above design, a “create_clock” is defined on port “clk3”. The “Q” pin of “FF1” drives the clock
pin of “FF3”, which would require a generated clock to be defined on pin “FF1/Q”. Also, the port “clk3”
dirves output port “AOUT” through a buffer, requiring a generated clock to be defined on output port
“AOUT”.
Reports:
Sdc.Clock/CLK-MIS002.rpt :
# Rule: CLK-MIS002
# Severity: Fatal
# ==============================
#
# Design : mSoc
# CLK-MIS002
# Certain Missing generated clock source
#
A# Certain Missing Generated Clock Source
---------------------------------------------
A0 FF1/Q
A1 AOUT
---------------------------------------------
Debug
Source the scripts from the scriptWare directory in Timevision install directory then the following command can be
executed.
#############################################################################################
## Missing Clock source: { FF1/Q }
#############################################################################################
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-MIS002 –id A1
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-MIS002 -obj1 AOUT -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all ports and macro pins in the designs which should have a “create_clock” defined
on them, but no such “create_clock” definition exists in the current constraints. These primary clock
sources have a score less than 100% because the logic path is ambiguous, however, they still reach leaf
clock pins.
Figure 3.4.3
In the above design, ports “CLK2” and “SEL” goes through an AND gate to the clock pin of a flop, and is
reported as potentially missing primary clocks. The AND gates adds some ambiguity in determining for
certain if these are clock sources forcing, Timevision to reduce the score of the missing clocks.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-MIS003 Warning 2 0 Sdc.Clock/CLK-MIS003.rpt Possibly missing primary clock source
Sdc.Clock/CLK-MIS003.rpt :
# Rule: CLK-MIS003
# Severity: Warning
# ==============================
#
# Design : top
# CLK-MIS003
# Possibly missing primary clock source
#
---------------------------------------------
A0 CLK2
A1 SEL
---------------------------------------------
Debug
Source the scripts from the scriptWare directory in Timevision install directory then the following command can be
executed.
tv_shell> justify_missing_clock -s [get_ports SEL]
#********************************************************
#* *
#* justify_missing_clock -s { SEL } *
#* *
#* Design : top *
#* *
#********************************************************
#############################################################################################
## Missing Clock source: { SEL }
#############################################################################################
Waivers
Any reported violation can be waived using the “set_waiver” command.
January 2015 30 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-MIS003 –id A1 –reason “not a clock”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-MIS003 -obj1 SEL -author "hollis" -date "07/10/14" -reason "not a clock"
Description:
This rule identifies all pins in the designs which should have a “create_generated_clock”
defined on them, but no such “create_generated_clock” definition exists in the current
constraints. These generated clock sources have a score less than 100% because the logic path is
ambiguous, however, they still reach leaf clock pins and can be traced to a master clock.
Figure 3.4.4
Possibly missing
create_clock -name CLK2
create_generated_clock
_
D
_
CLK2 D Q Q
G0 FF2 FF4
SEL
Q Q
G1
In the above design, FF2/Q is a potential missing generated clock because the is a path to a clock pin
through AND gate G1, and a path to a master clock through AND gate G0. The AND gates adds some
ambiguity in determining for certain if FF2/Q is a generated clock source, forcing Timevision to reduce
the score of the potentially missing generated clock.
Reports:
MM.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-MIS004 Warning 1 0 Sdc.Clock/CLK-MIS004.rpt Possibly missing generated clock source
January 2015 31 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Sdc.Clock/CLK-MIS004.rpt :
# Rule: CLK-MIS004
# Severity: Warning
# ==============================
#
# Design : top
# CLK-MIS004
# Possibly missing generated clock source
#
---------------------------------------------
A0 FF2/Q
---------------------------------------------
Debug
Source the scripts from the scriptWare directory in Timevision install directory then the following command can be
executed.
############################################################################################
## Missing Clock source: { FF2/Q }
############################################################################################
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
Example:
set_waiver -rule CLK-MIS004 –id A0
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-MIS004 -obj1 FF2/Q -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_clock” defined on output ports. Often times, clocks go out of the
block or chip and a clock definition is required at output ports. However, these should be defined as
“create_generated_clock” with some master source, and not a “create_clock”.
Design in figure 3.5.1 below shows timing points reported under rule CLK-INC001
Figure 5.1.1
_
D Q
FF1
clk2 Q OUT2
In the above designs, output ports OUT1 and OUT2 incorrectly have create_clocks defined on them.
Therefore, “check_constraints” will report these ports under rule CLK-INC001.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC001 Error 2 0 Sdc.Clock/CLK-INC001.rpt create_clock defined on output port
Sdc.Clock/CLK-INC001.rpt :
# Rule: CLK-INC001
# Severity: Error
# ==============================
#
# Design : top
January 2015 33 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# CLK-INC001
# create_clock defined on output port
#
A# Port Clock Clock ID Blocked Clocks
-----------------------------------------------------------------
A0 OUT1 CLK_OUT1 1 { }
A1 OUT2 CLK_OUT2 0 { }
-----------------------------------------------------------------
Debug
Get the “source” attribute of the clock and then confirm it is an output port.
tv_shell> get_attribute [get_clocks CLK_OUT1] source
{"OUT1"}
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-INC001 -obj1 CLK_OUT1 -obj2 OUT1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_clock” defined at combinational cell pins (for example buffer or mux
pins). Often times clocks needs to be defined at combination cell pins for a variety of reasons – such as
CTS balancing or STA analysis. However, these should be defined as “create_generated_clock”
with some master source, and not a “create_clock”.
Design in figure 3.5.2 below shows timing points reported under rule CLK-INC002.
clk1
M1
clk2
create_clock -name MCLK [get_pins M1/Z]
In the above design, the create_clock defined on the output of the mux is reported as a warning.
Therefore, “check_constraints” will report this pin under rule CLK-INC002.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC002 Warning 1 0 Sdc.Clock/CLK-INC002.rpt create_clock defined on combinational cell pin
Sdc.Clock/CLK-INC002.rpt :
# Rule: CLK-INC002
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC002
# create_clock defined on combinational cell pin
#
A# Pin Clock Clock ID Blocked Clocks
---------------------------------------------
A0 M1/Z MCLK 0 { }
---------------------------------------------
Debug
Use the source of the clock and then confirm cell type.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC002 –id A0 –reason “Ok for now”
write_waiver top.waivers.tcl
Description:
This rule identifies identical “create_clock” defined at multiple pins or ports.
Design in figure 3.5.3 below shows timing points reported under rule CLK-INC003.
Figure 3.5.3
clk1
clk2
In the above design, the create_clock “CLK” is defined on two different ports.
Therefore, “check_constraints” will report these ports under rule CLK-INC003.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC003 Warning 1 0 Sdc.Clock/CLK-INC003.rpt create_clock/generated_clock defined on multiple points
Sdc.Clock/CLK-INC003.rpt :
# Rule: CLK-INC003
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC003
# create_clock/generated_clock defined on multiple points
#
A# Clock Clock ID Create/Generated Objects
--------------------------------------------------------------------
A0 CLK 1 create_clock {clk1 clk2 }
---------------------------------------------------------------------
Debug
Get the “app_clocks” attribute on the ports/pins to confirm the same clock is defined on multiple
ports/pins
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC003 –id A0 –reason “Ok for now”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC002 -obj1 CLK -author "hollis" -date "07/10/14" -reason "Ok for now"
Description:
This rule identifies all “create_generated_clock” defined at input ports. Since an input port is a
primary clock source, any clocks on it should be defined as a “create_clock”. The only exception is
when BOTH, a “create_clock” and “create_generated_clock” are defined on the same
port. And the –source of the “create_generated_clock” is the same port on which a
“create_clock” is also defined.
Design in figure 3.5.4 below shows timing points reported under rule CLK-INC004.
Figure 3.5.4
clk1
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC004 Error 1 0 Sdc.Clock/CLK-INC004.rpt create_generated_clock defined on input ports with no master
Sdc.Clock/CLK-INC004.rpt :
# Rule: CLK-INC004
Debug
1) Get the “printable” attribute of the clock to see if it was defined with a master clock.
2) Note that the –source is the same as the port the generated clock is defined. Check to see if
another clock is defined on the port by checking the “clocks” attribute
3) Note that the only clock defined on the port is the generated clock, so the generated clock has no
master.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC004 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "Ok for now"
Description:
This rule identifies all “create_generated_clocks” for which the specified –source pin/port
January 2015 38 Ausdia, Inc © 2015
TimeVision Constraints User Guide
has NO clock defined on it, and NO clock reaching it. Hence, it is reported as a “dead” generated clock.
Design in figure 3.5.5 below shows timing points reported under rule CLK-INC005.
Figure 3.5.5
_ _
D Q D Q
FF1
clk1 Q Q
No clock defined
_
D Q
create_generated_clock -source [get_ports clk1]
[get_pins FF1/Q]
Q
In the above design, the create_generated_clock is defined on pin FF1/Q but the source point has no
master clock defined on it.
Therefore, “check_constraints” will report these ports under rule CLK-INC005.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC005 Warning 1 0 Sdc.Clock/CLK-INC005.rpt Generated clock with no master clock (dead clock)
Sdc.Clock/CLK-INC005.rpt :
# Rule: CLK-INC005
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC005
# Generated clock with no master clock (dead clock)
#
A# Generated Clock Clock ID Source
---------------------------------------------------
A0 gclk1 1 clk1
----------------------------------------------------
Debug
1) Get the “printable” attribute of the clock to see if it was defined with a master clock.
2) Note that the –source is a port that has no clock defined. Confirm that no clock is defined on the
port by checking the “clocks” attribute
3) Note that no clock is defined on the port, so the generated clock has no master and is considered
dead.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC005 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” for which no –master_clock is defined,
and –source pin/port has multiple clocks of different periods on it. In this case, it is ambiguous which
clock on the –source is the actual master clock, and this may result in incorrect STA analysis. By
default, most tools would assume the first clock defined in the constraints file on the –source
pin/port as the master clock, and that may or may not be the correct assumption. Hence, it is critical
for the user to specify the “-master_clock” in such cases.
Design in figure 3.5.6 below shows timing points reported under rule CLK-INC006.
Figure 3.5.6
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC006 Fatal 1 0 Sdc.Clock/CLK-INC006.rpt Generated clock with ambiguous master clocks of different
periods
Sdc.Clock/CLK-INC006.rpt :
# Rule: CLK-INC006
# Severity: Fatal
# ==============================
#
# Design : top
# CLK-INC006
# Generated clock with ambiguous master clocks of different periods
#
Debug
1) Get the “printable” attribute of the clock to confirm that it was defined without
“-master”
2) Indeed the generated clock is defined without “-master_clock”. Now trace the path from the
master clocks source to the clock pin of generated clock source to confirm the master clocks reaches
the generated clock source.
tv_shell > trace_path -from [get_ports clk1] -to FF1/CP
3) Both master clocks reaches the clock pin of the generated clock source so either clock could be used,
however, it is recommended to define a generated clock for all master clocks, or use the faster of
the master clock options when redefining the generated clock “-master_clock”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC006 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC006 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” for which no –master_clock is defined,
and –source pin/port has multiple clocks of identical periods on it. In this case, it is ambiguous which
clock on the –source is the actual master clock, and this may result in incorrect STA analysis. By
default, most tools would assume the first clock defined in the constraints file on the –source
pin/port as the master clock, and that may or may not be the correct assumption. Hence, it is critical
for the user to specify the “-master_clock” in such cases.
Design in figure 3.5.7 below shows timing points reported under rule CLK-INC007.
Figure 3.5.7
Reports:
Sdc.Clock/CLK-INC007.rpt :
# Rule: CLK-INC007
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC007
# Generated clock with ambiguous master clocks of different periods
#
2) Indeed the generated clock is defined without “-master_clock”. Now trace the path from the
master clocks source to the clock pin of generated clock source to confirm the master clocks reaches
the generated clock source.
tv_shell > trace_path -from [get_ports clk1] -to FF1/CP
3) Both master clocks reaches the clock pin of the generated clock source so either clock could be used,
however, it is recommended to define a generated clock for all master clocks, or use the faster of
the master clock options when redefining the generated clock “-master_clock”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
January 2015 43 Ausdia, Inc © 2015
TimeVision Constraints User Guide
set_waiver -rule CLK-INC007 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC007 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” for which no –master_clock is defined,
and –source pin/port has multiple clocks of identical periods on it. In this case, it is ambiguous which
clock on the –source is the actual master clock, and this may result in incorrect STA analysis. By
default, most tools would assume the first clock defined in the constraints file on the –source
pin/port as the master clock, and that may or may not be the correct assumption. Hence, it is critical
for the user to specify the “-master_clock” in such cases.
Design in figure 3.5.8 below shows timing points reported under rule CLK-INC008.
Figure 3.5.8
clk1
create_clock -name CLK1
[get_ports clk1]
_ _
D Q D Q
FF1
clk2 Q Q
In the above design, the create_generated_clock is defined on pin FF1/Q but there is no path from
source point where the master clock is defined.
Therefore, “check_constraints” will report these ports under rule CLK-INC008.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC008 Error 1 0 Sdc.Clock/CLK-INC008.rpt -master_clock not present at -source object (no path from -
master_clock, no path
from -source)
Debug
1) Get the “printable” attribute of clock to determine the “-source” and “-master_clock”.
2) Trace the path from “-source” and “-master” to confirm that neither has a path to the clock pin of
the generated clock source.
3) No path returned, confirming that the generated clock is not defined relative to a legitimate
“-source” or a legitimate “-master_clock”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC008 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC008 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” for which no –master_clock is defined,
and –source pin/port has multiple clocks of identical periods on it. In this case, it is ambiguous which
clock on the –source is the actual master clock, and this may result in incorrect STA analysis. By
default, most tools would assume the first clock defined in the constraints file on the –source
pin/port as the master clock, and that may or may not be the correct assumption. Hence, it is critical
for the user to specify the “-master_clock” in such cases.
Design in figure 3.5.9 below shows timing points reported under rule CLK-INC009.
Figure 3.5.9
clk1
In the above design, the create_generated_clock is defined on pin FF1/Q but there is no path from
master clock point but there is a path from the source point.
Therefore, “check_constraints” will report these ports under rule CLK-INC009.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC009 Error 21 0 Sdc.Clock/CLK-INC009.rpt -master_clock not present at -source object (no path from -
master_clock, path
from -source)
Sdc.Clock/CLK-INC009.rpt :
# Rule: CLK-INC009
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC009
# -master_clock not present at -source object (no path from -master_clock, path from -source)
#
Debug
1) Get the “printable” attribute of the clock to determine the “-source” and “-master_clock”.
2) Get the “source” attribute of “-master” clock “CLK1” to confirm that it does not exist on the
“-source” object of the create_generated_clock command.
3) The “-master_clock” is not defined on the “-source” object. Trace the path from the “-master_clock”
to the clock pin of the generated clock source to confirm there is not path.
4) No path exist from the “-master_clock” to the clock pin of the generated clock source. Now confirm
that a path does exist from the “-source” object to the clock pin of the generated clock source by
tracing the path.
5) Now that the path from “-source” to the clock pin of the generated clock source is confirmed, the
constraint should be fixed by changing the “-master” to the clock defined on the “-source” object.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC009 –id A0 –reason “None”
write_waiver top.waivers.tcl
Description:
This rule identifies all “create_generated_clock” which have both “–source” and
“–master_clock” defined, however, “-master_clock” is not present at the “–source”
pin/port. There is a logic path from “–master_clock” to the generated clock, but there is NO logic
path from “–source" to the generated clock.
Design in figure 3.5.10 below shows timing points reported under rule CLK-INC010.
Figure 3.5.10
clk1
In the above design, the create_generated_clock is defined on pin FF1/Q but there is a path from
master clock point but there is no path from the source point.
Therefore, “check_constraints” will report these ports under rule CLK-INC010.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC010 Error 1 0 Sdc.Clock/CLK-INC010.rpt -master_clock not present at -source object (path from -
master_clock, no path
from -source)
Sdc.Clock/CLK-INC010.rpt :
# Rule: CLK-INC010
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC010
January 2015 48 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# -master_clock not present at -source object (path from -master_clock, no path from -source)
#
Debug
1) Get the “printable” attribute of the clock to determine the “-source” and “-master”.
2) Get the “clock” attribute of “-source” object “clk1” to confirm that the “-master” clock does not exist
on the “-source” object of the create_generated_clock command.
3) The “-master” clock is not defined on the “-source” object. Trace the path from the “-master” clock
to the clock pin of the generated clock source to confirm there is a path.
4) Now that the path from “-master” clock to the clock pin of the generated clock source is confirmed,
the constraint should be fixed by changing the “-source” to the object where the “-master” is defined.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC010 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC010 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” which have both “–source” and
“–master_clock” defined, however, “-master_clock” is not present at the “–source”
pin/port. There is a logic path from “–master_clock” to the generated clock, but there is NO logic
path from “–source" to the generated clock.
Design in figure 3.5.11 below shows timing points reported under rule CLK-INC011.
Figure 3.5.11
In the above design, the create_generated_clock is defined on pin FF1/Q but there is a path for the
master clock point is different than the path from the source point.
Therefore, “check_constraints” will report these ports under rule CLK-INC011.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-INC011 Error 2 0 Sdc.Clock/CLK-INC011.rpt -master_clock not present at -source object (path from -
master_clock, path from
-source)
Sdc.Clock/CLK-INC011.rpt :
# Rule: CLK-INC011
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC011
# -master_clock not present at -source object (path from -master_clock, path from -source)
#
2) Get the “source” attribute of the generated clock “-master” clock to confirm that the “-master” clock
is not defined on the “-source” object.
3) The source of the “-master” clock is different from the “-source” object in the constraint, confirming
that the “-master” clock is not defined on the “-source” object, however, this violation reports that
there are paths from both the “-source” object and the “-master” clock. Confirm the paths by tracing
from both objects to the clock pin of the generated clock source.
4) Both paths exist so the designer must decide which object is the correct source and master of the
generated clock.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC011 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC011 -obj1 gclk1 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
January 2015 51 Ausdia, Inc © 2015
TimeVision Constraints User Guide
3.5.12 Rule CLK-INC012
- create_generated_clock has no logic path from -source object (path exist from other clock
sources)
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has no path to the
“–source” object, however, Timevision identified other potential masters that has logic path to the
“create_generated_clock” that should be considered as master clock.
Design in figure 3.5.12 below shows timing points reported under rule CLK-INC012.
Figure 3.5.12
clk1
In the above design, the create_generated_clock is defined on pin FF1/Q but there is no path from the
source point but a path exist to another clock.
Therefore, “check_constraints” will report these ports under rule CLK-INC012.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC012.rpt :
# Rule: CLK-INC012
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC012
# create_generated_clock has no logic path from -source object (path exist from other clock sources)
#
Debug
1) Get the “printable” attribute of clock “gclk” to determine the “-source” and “-master”.
2) Trace the path from the “-source” object to the clock pin of the generated clock source to confirm
the path does not exist.
3) No path is returned, confirming the path does not exist. Now do “all_fanin” to see if a path exist to
another master clock.
4) The path does exist. Now confirm a clock is defined on object to “clk2”.
5) A clock does exist so the designer should make change the source to “clk2” and the master to
“CLK2”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC012 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC012 -obj1 gclk -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has no path to the
“–source” object or any other master clock.
Design in figure 3.5.13 below shows timing points reported under rule CLK-INC013.
Figure 3.5.13
clk1
Q
In the above design, the create_generated_clock is defined on pin FF1/Q but there is no path from the
source point and no path exist to another clock.
Therefore, “check_constraints” will report these ports under rule CLK-INC013.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC013.rpt :
# Rule: CLK-INC013
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC013
# create_generated_clock has no logic path from -source object (path do not exist from other clock sources)
#
2) Trace the path from the “-source” object to the clock pin of the generated clock source to confirm
the path does not exist.
3) No path is returned, confirming the path does not exist. Now do “all_fanin” to see if a path exist to
another master clock.
5) A clock does not exist so the designer should create a clock on “clk2” and make it the master of the
generated clock.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC013 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC013 -obj1 gclk -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has no path to the
defined master clock due to the master clock propagation being blocked by an intermediate clock
defined between the generated clock and its master clock source.
January 2015 55 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Design in figure 3.5.14 below shows timing points reported under rule CLK-INC014.
Figure 3.5.14
_ _
D Q D Q
FF1 FF2
clk1 B1 B2 Q Q
create_clock -name CLK1
[get_ports clk1]
create_generated_clock -name gen_CLK1 create_generated_clock -name gen_CLK2
-source [get_ports clk1] B1/Z -source [get_ports clk1] FF1/Q
In the above design, the create_generated_clock is defined on pin FF1/Q and has port clk1 as its source
point but intermediate clock gen_CLK1 blocks propagation to the master clock source.
Therefore, “check_constraints” will report these ports under rule CLK-INC014.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC014.rpt :
# Rule: CLK-INC014
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC014
# Intermediate clock is defined between a generated clock and its master source clock
#
Debug
1) Get the “printable” attribute of clock “gen_CLK2” to determine the “-source” or “-master”.
2) Trace the path from the “-source” object to the clock pin of the generated clock source.
tv_shell [97] >trace_path -from [get_ports clk1] -to [get_pins FF1/CP] -hier
Point Type Flags
---------------------------------
clk1 (port) cs
B1/I BUFFD1 ~
B1/Z BUFFD1 cs~
January 2015 56 Ausdia, Inc © 2015
TimeVision Constraints User Guide
FF1/CP SDFCNQD1 ~
3) Note that in the “Flags” column there are two “cs” flags, which indicates clock sources. The second
clock source is defined between the generated clock source pin and it’s specified “-source” object
“clk1”. To fix this violation pin “B1Z“ should be defined as the “-source” object.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC014 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC014 -obj1 gen_CLK2 -obj2 clk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has been defined
on a “down-stream” logic pin and has only one possible master, however, it should be define “up-
stream”, on the output pin of a register.
Design in figure 3.5.15 below shows timing points reported under rule CLK-INC015.
Figure 3.5.15
_
D
_
Q D Q
FF1
clk1 Q B1 Q
create_clock -name CLK1 [get_ports clk1]
In the above design, the create_generated_clock is defined on pin B1/Z and has port clk1 as its source
point. Port clk1 has a single clock defined on it but it should be defined up stream on pin FF1/Q.
Therefore, “check_constraints” will report these ports under rule CLK-INC015.
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC015.rpt :
# Rule: CLK-INC015
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC015
# Downstream generated clocks with a single source
#
Debug
1) Get the “printable” attribute of clock “gclk1” to determine the “-source” or “-master”.
2) TimeVision reported an implied application point “FF1/CK”. Trace a path from the implied
application point through the current application point to confirm a path exist to leaf clock pins.
3) Since the path only has a buffer between the generated clock source and the recommended
generated clock source, it would be prudent to define the generated clock on the register output pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
top.waivers.tcl
set set_waiver -rule CLK-INC015 -obj1 gclk1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has been defined on a
“down-stream” logic pin and has multiple possible sources, however, it should be define “up-stream”,
on the output pin of a register.
Design in figure 3.5.16 below shows timing points reported under rule CLK-INC016.
Figure 3.5.16
_
D Q
FF1 _
D Q
Q FF3
M1 Q
D
_
Q A
A1 Z
B
FF2 create_generated_clock -name gclk \
-master CLK1 -source [get_pins A1/A] \
clk1 Q [get_pins M1/Z]
create_clock -name CLK1
[get_ports clk1]
In the above design, the create_generated_clock is defined on pin M1/Z and has pin A1/A as its source
point. However, A1/B is also a potential source point, but, two generated clocks should be created,
one with clk1 as the source on FF1/Q, and the other with clk2 as the source on FF2/Q. Therefore,
“check_constraints” will report these ports under rule CLK-INC016.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC016.rpt :
# Rule: CLK-INC016
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC016
# Downstream generated clocks with multiple sources
January 2015 59 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
Debug
1) Get the “printable” attribute of clock “gclk1” to determine the “-source” or “-master”.
2) TimeVision reported two implied application points “FF1/CK, FF2/CK”. Trace a path from the implied
application points through the current application point to confirm a path exist to leaf clock pins.
3) Both registers have a path to the generated clock source. To resolve this violation a generated clock
should be defined on the output pins of both registers instead of the output pin of the mux.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC016 –id A0 –reason “None”
January 2015 60 Ausdia, Inc © 2015
TimeVision Constraints User Guide
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC016 -obj1 gclk -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all pins in the designs where a “create_generated_clock” has been defined
such that its unateness conflicts with the unateness of its master clock.
Design in figure 3.5.17 below shows timing points reported under rule CLK-INC017.
Figure 3.5.17 _
D Q
clk1 I1 FF1
create_clock -name CLK1 M1 Q
[get_ports clk1]
clk2 B1
create_generated_clock -master CLK1
create_clock -name CLK2
-source [get_ports clk1] [get_pins M1/Z]
[get_ports clk2]
In the above design, the create_generated_clock is defined on pin M1/Z but its unateness is
incompatible with the unateness of its master. To be correct the command needs -invert.
Therefore, “check_constraints” will report these ports under rule CLK-INC017.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC017.rpt :
# Rule: CLK-INC017
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC017
# create_generated_clock unateness incompatible w.r.t. its master clock
#
2) The generated clock is not defined as “-invert” relative to its master. Trace the path to determine if
an inversion actually occurs.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC017 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC017 -obj1 gclk1 -obj2 clk1 -obj3 {\ Positive\ } -obj4 {\ Negative\ } -author "hollis" \
-date "07/11/14" -reason "None"
Description:
This rule identifies all “create_clock” or “create_generated_clock” defined on application
points that are constant either by “set_case_analysis”, or a constant is propagated to the
application point.
Design in figure 3.5.18 below shows timing points reported under rule CLK-INC018.
Figure 3.5.18
_
D Q
FF1
clk1 Q
create_clock -name CLK1 [get_ports clk1]
set_case_analysis 0 [get_ports clk1]
In the above design, the create_clock is defined on port clk1 but a set_case_analysis is also defined on
the port.
Therefore, “check_constraints” will report these ports under rule CLK-INC018.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC018.rpt :
# Rule: CLK-INC018
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC018
# application point of clock is a constant
#
Debug
Get the “constant_value” attribute of the source of the clock to confirm it is constant.
Trace the constant of the application point to determine the origin of the constant.
In the case of “CLKL1” Timevision reports the constant is from a “Case Analysis” in the constraints file.
Realistically, this rule should never be waived. However, a waiver example is below.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC018 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC018 -obj1 CLK1 -obj2 clk1 -obj3 0 -author "hollis" -date "07/11/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” where the source is constant either by
“set_case_analysis”, or a constant is propagated to the application point.
Design in figure 3.5.19 below shows timing points reported under rule CLK-INC019.
Figure 3.5.19
_
set_case_analysis 0 [get_pins B1/I] D Q
clk1 B1 Q
create_clock -name CLK1
[get_ports clk1] create_generated_clock -source [get_pins B1/I]
[get_pins B1/Z]
In the above design, the create_clock is defined on port clk1 but a set_case_analysis is also defined on
the port.
Therefore, “check_constraints” will report these ports under rule CLK-INC019.
Reports:
Sdc.Qor_Fails.rpt:
Trace the constant of the application point to determine the origin of the constant.
In the case of “gclk1” Timevision reports the constant is from a “Case Analysis” in the constraints file.
Realistically, this rule should never be waived. However, a waiver example is below.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC019 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC019 -obj1 gclk1 -obj2 B1/I -obj3 0 -author "hollis" -date "07/11/14" -reason "None"
Description:
This rule identifies all “create_clocks” and “create_generated_clock” whose
January 2015 65 Ausdia, Inc © 2015
TimeVision Constraints User Guide
propagation overlap with “set_case_analysis”.
Design in figure 3.5.20 below shows timing points reported under rule CLK-INC020.
Figure 3.5.20
_
set_case_analysis 0 [get_pins B1/I] D Q
clk1 B1 Q
create_clock -name CLK1 [get_ports clk1]
In the above design, the create_clock is defined on port clk1 and a set_case_analysis is defined on the
pin B1/I and the propagation to the clock pin of the flop overlaps.
Therefore, “check_constraints” will report these ports under rule CLK-INC020.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC020.rpt :
# Rule: CLK-INC020
# Severity: Warning
# ==============================
#
# Design : top
# CLK-INC020
# clock propagation overlaps with user-applied case analysis
#
Debug
Trace the path from the clock source to see if it is disabled.
Pin B1/A is disabled so the clock propagation stops. Trace the constant to determine its source.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC020 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC020 -obj1 CLK1 -obj2 B1/I -obj3 0 -author "hollis" -date "07/11/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” where the source point and the application
point are the same.
Design in figure 3.5.21 below shows timing points reported under rule CLK-INC021.
Figure 3.5.21
_
D Q
clk1 B1 Q
create_clock -name CLK1 [get_ports clk1]
create_generated_clock -source [get_pins B1/Z] [get_pins B1/Z]
In the above design, the create_generated_clock is defined on pin B1/Z and it list B1/Z as the source
point.
Therefore, “check_constraints” will report these ports under rule CLK-INC021.
Reports:
Sdc.Qor_Fails.rpt:
Sdc.Clock/CLK-INC021.rpt :
# Rule: CLK-INC021
# Severity: Error
# ==============================
#
# Design : top
# CLK-INC021
# generated_clock lists -source and application point at same location.
#
A# Clock Clock ID Source/App Point
----------------------------------------
A0 gclk1 2 B1/Z
----------------------------------------
Debug
Get the printable attribute of the generated clock to see if the application point and source points are
the same.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-INC021 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set set_waiver -rule CLK-INC021 -obj1 gclk1 -obj2 B1/Z -author "hollis" -date "07/11/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” defined on “Q” pins or sequential cells output
pins and is “-divide_by 1” or “combinational”.
Design in figure 3.6.1 below shows timing points reported under rule CLK-WAV001
Figure 3.6.1
_ _
D Q D Q
FF1
clk1 Q Q
create_clock -name CLK1 [get_ports clk1]
In the above designs, FF1/Q has a generated clock with “-divide_by 1”, which is not possible.
Therefore, “check_constraints” will report these ports under rule CLK-WAV001.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV001 Error 1 0 Sdc.Clock/CLK-WAV001.rpt div-1 or combinational clock on a sequential Q pin
Sdc.Clock/CLK-WAV001.rpt :
# Rule: CLK-WAV001
# Severity: Error
# ==============================
#
# Design : top
# CLK-WAV001
# div-1 or combinational clock on a sequential Q pin
#
Debug
Get the “printable” attribute of the generated clock to see how it is defined.
Note the generated clock is defined on the “Q” pin of a flop as “divide_by 1”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-WAV001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-WAV001 -obj1 gclk -obj2 FF1/Q -obj3 {-divide_by\ 1} -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “divide_by 1” or “combinational” “create_generated_clock” defined on
combinational logic cells pins but no clock reaches the pin.
Design in figure 3.6.2 below shows timing points reported under rule CLK-WAV002
Figure 3.6.2
create_clock -name CLK1
[get_ports clk1] _
D Q
clk1 FF1
M1 Q
clk2
create_generated_clock -source [get_ports clk1]
create_clock -name CLK2
-divide_by 1 [get_pins M1/Z]
[get_ports clk2]
set_case_analysis 1
[get_pins M1/SEL]
In the above designs, M1/Z has a generated clock with “-divide_by 1”, however no clock reaches the
pin because the mux select pin selects “I1” but the source is port “clk1”.
Therefore, “check_constraints” will report these ports under rule CLK-WAV002.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV002 Error 1 0 Sdc.Clock/CLK-WAV002.rpt div-1 or combinational clock on a combinational gate when
no clock reaches pin
Sdc.Clock/CLK-WAV002.rpt :
# Rule: CLK-WAV002
# Severity: Error
Debug
Get the “prop_clocks” attribute of the generated clock application point to see if any clocks propagate
to the pin.
Only one clock propagates to the pin, “CLK2”. The generated clock is defined with port “clk1” as the
source. Check the name of the clock defined on port “clk1”.
It was confirmed previously that only “CLK2” propagate to the generated clock application point so we
must determine why the master clock is not propagating. Check the select pin of the mux to see if it
has a constant value.
The mux select pin has a constant value of “1” indicating the “I1” pin is selected. Now trace the path to
see of port “clk1” is connected to the “I1” pin of the mux.
No path is returned so the master clock of the mux pin where the master clock of the generated clock is
connected is not selected to propagate through the mux
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-WAV002 –id A0 –reason “None”
January 2015 71 Ausdia, Inc © 2015
TimeVision Constraints User Guide
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-WAV002 -obj1 gclk -obj2 M1/Z -obj3 {-divide_by\ 1} -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” defined on combinational cells with a divide
by “N” where “N>1”, however, the master clock reaches the application point.
Design in figure 3.6.3 below shows timing points reported under rule CLK-WAV003
Figure 3.6.3
create_clock -name CLK1
[get_ports clk1] _
D Q
clk1 FF1
M1 Q
clk2
create_generated_clock -source [get_ports clk1]
create_clock -name CLK2
-divide_by 3 [get_pins M1/Z]
[get_ports clk2]
In the above designs, M1/Z has a generated clock with “-divide_by 3” defined, however the master
clock reaches the pin directly.
Therefore, “check_constraints” will report these ports under rule CLK-WAV003.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV003 Error 1 0 Sdc.Clock/CLK-WAV003.rpt div-N clock on combinational gate when master clock reaches
the application point directly.
Sdc.Clock/CLK-WAV003.rpt :
# Rule: CLK-WAV003
# Severity: Error
# ==============================
#
# Design : top
# CLK-WAV003
# div-N clock on combinational gate when master clock reaches the application point directly.
#
Indeed, one of the clocks propagating to the pin is the master clock of generated clock “gclk”. The
generated clock is defined with port “clk1” as the source. Check the name of the clock defined on port
“clk1”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-WAV003 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-WAV003 -obj1 gclk -obj2 M1/Z -obj3 {-divide_by\ 3} -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” defined on ICG cells with a divide by “N”
where “N>2”, and downstream consist of both positive and negative unate elements.
Design in figure 3.6.4 below shows timing points reported under rule CLK-WAV004
_
D Q
FF1
clk1 CK Q CLK Q
ICG1
create_clock -name CLK1 [get_ports clk1]
create_generated_clock -source [get_ports clk1] \
_
D Q
-divide_by 3 [get_pins ICG1/Q]
FF2
CLKN Q
In the above designs, ICG1/Q has a generated clock with “-divide_by 3” defined, the down stream cells
have both positive and negative unateness.
Therefore, “check_constraints” will report these ports under rule CLK-WAV004.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV004 Error 2 0 Sdc.Clock/CLK-WAV004.rpt div-N clock, N>2, on ICG when downstream contains both
negative & positive
elements.
Sdc.Clock/CLK-WAV004.rpt :
# Rule: CLK-WAV004
# Severity: Error
# ==============================
#
# Design : top
# CLK-WAV004
# div-N clock, N>2, on ICG when downstream contains both negative & positive elements.
#
Debug
It is necessary to find the leaf clock pins which create the positive and negative scenario. Source the
utilities script from the install directory:
Now execute the proc to return the clocks, the leaf clock pins, and the unateness.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-WAV004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-WAV004 -obj1 gclk -obj2 ICG1/Q -obj3 {-divide_by\ 3} -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies all “create_generated_clock” defined on ICG cells with a divide by “N”
where “N>1”.
Design in figure 3.6.5 below shows timing points reported under rule CLK-WAV005
Figure 3.6.5
_
D Q
FF1
CLK-WAV005
clk1 CK
ICG1
Q B1 CLK Q
create_clock -name CLK1 [get_ports clk1]
create_generated_clock -source [get_ports clk1] \
-divide_by 2 [get_pins ICG1/Q]
In the above designs, ICG1/Q has a generated clock with “-divide_by 2” defined, the down stream cells
have both positive and negative unateness.
January 2015 75 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Therefore, “check_constraints” will report these ports under rule CLK-WAV005.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV005 Error 1 0 Sdc.Clock/CLK-WAV005.rpt div-N clock, N>1, on Integrated clock gating latch.
Sdc.Clock/CLK-WAV005.rpt :
# Rule: CLK-WAV005
# Severity: Error
# ==============================
#
# Design : top
# CLK-WAV005
# div-N clock, N>2, on ICG elements.
#
Debug
It is necessary to find the leaf clock pins which create the positive and negative scenario. Source the
utilities script from the install directory:
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-WAV005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-WAV005 -obj1 gclk -obj2 ICG1/Q -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies pins, where a correct but an incomplete set of “create_generated_clock”
definitions exist. Multiple master clocks reach these “create_generated_clock” points, but the
“create_generated_clock” is only defined w.r.t. a partial set of master clocks reaching these
points and the fastest clock does not have a generated clock defined.
Design in figure 3.7.1 below shows timing points reported under rule CLK-IGC001
Figure 3.7.1
create_clock -name CLK1 -period 2.7 [get_ports clk1]
_
D Q
clk1 FF1
M Q
clk2
In the above designs, M/Z has only one generated clock defined, however, multiple master clocks reach
the generated clock application point, and the generated clock that is defined is not with respect to the
fastest master clock.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-IGC001 Fatal 1 0 Sdc.Clock/CLK-IGC001.rpt Incomplete generated clock w.r.t. fastest incident clock
Sdc.Clock/CLK-IGC001.rpt :
# Rule: CLK-IGC001
# Severity: Fatal
# ==============================
#
# Design : top
# CLK-IGC001
# Incomplete generated clock w.r.t. fastest incident clock
#
2) Two clocks are propagated to the clock pin of the register. Now get the “clocks” attribute of
pin“FF1/Q” to determine all clocks on the pin.
3) Only one master clock has a generated clock defined, so another generated clock need to be defined
relative to the other master clock. Now get the periods of the master clocks to see if the fastest one
has a generated clock.
4) The generated clock is defined relative to master clock CLK2, which is not the fastest master clock.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-IGC001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-IGC001 -obj1 M/Z -obj2 CLK1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies pins, where a correct but an incomplete set of “create_generated_clock”
definitions exist. Multiple master clocks reach these “create_generated_clock” points, but the
“create_generated_clock” is only defined w.r.t. a partial set of master clocks reaching these
points, however, the fastest clock has a generated clock defined.
Figure 3.7.2
In the above designs, M/Z has only one generated clock defined, however, multiple master clocks reach
the generated clock application point, but the generated clock that is defined is with respect to the
fastest master clock.
Therefore, “check_constraints” will report these ports under rule CLK-IGC002.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-WAV002 Error 1 0 Sdc.Clock/CLK-WAV002.rpt div-1 or combinational clock on a combinational gate when no
clock reaches pin
Sdc.Clock/CLK-IGC002.rpt :
# Rule: CLK-IGC002
# Severity: Warning
# ==============================
#
# Design : top
# CLK-IGC002
# Incomplete generated clock w.r.t. non-critical incident clock
#
A# App Point Clock
-----------------------
A0 M/Z CLK2
-----------------------
Debug
1) Get the “clocks” attribute of pin“FF1/CP” to determine all clocks propagated to the clock pin.
2) Two clocks are propagated to the clock pin of the register. Now get the “clocks” attribute of
pin“FF1/Q” to determine all clocks on the pin.
3) Only one master clock has a generated clock defined, so another generated clock need to be defined
relative to the other master clock. Now get the periods of the master clocks to see if the fastest one
has a generated clock.
4) The generated clock is defined relative to master clock CLK1, which is the fastest master clock.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-IGC002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-IGC002 -obj1 M/Z -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule works in conjunction with the settings “Build/IntentionalCells”, which can be a regular
expression list of design intended cell names considered synthesized, and design intentional. Any
“Build/IntentionalCells” defined and violated reconvergence, will be reported under rule CLK-RCN001.
Any cells not listed in “Build/IntentionalCells”, and violates reconvergence will be reported in rule CLK-
RCN002. If “Build/IntentionalCells” is not set then all cells are considered intentional and reported
under rule CLK-RCN001.
Design in figure 3.8.1 below shows timing points reported under rule CLK- RCN001
Figure 3.8.1
_
D Q
M1 Q
clk1 MB1 MB2
In the above designs, MB1, MB2, M1, all match the partial name “M.*” and thus M1 would violate
reconvergence rule CLK-RCN001.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-RCN002 Error 1 0 Sdc.Clock/CLK-RCN002.rpt Reconvergent clock path through synthesized logic
Sdc.Clock/CLK-RCN001.rpt :
# Rule: CLK-RCN001
# Severity: Warning
# ==============================
#
# Design : top
# CLK-RCN001
# Reconvergent clock path
#
A# Clock Reconvergent Point
--------------------------------
A0 CLK1 M1/Z
--------------------------------
Debug
1) Trace the path from the source of the clock which has the Reconvergence to the reported
reconvergent pin, with the option “max_path” set to at least 2.
tv_shell > trace_path -from [get_clocks CLK1] -to [get_pins M1/Z] -max_path 2
Point Type Flags
-------------------------------
clk1 (port) cs
M1/I0 CKMUX2D0 ~
M1/Z CKMUX2D0 ~
2) In this case the paths converge at the output of a mux, to resolve this violation a “set_case_analysis”
should be applied to the select pin of the mux.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-RCN001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-RCN001 -obj1 M1/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule works in conjunction with the variable “design_intentional_cell_names”, which can be a
regular expression list of design intended cell names. Any “design_intentional_cell_names” defined
and violated reconvergence, will be reported under rule CLK-RCN001. Any cells not listed in
“design_intentional_cell_names”, and violates reconvergence will be reported in rule CLK-RCN002.
Design in figure 3.8.2 below shows timing points reported under rule CLK- RCN002
M1 Q BF1
In the above designs, BUF1, BUF2, and M1 does not match the partial name “BF.*” and thus M1 would
violate reconvergence rule CLK-RCN002.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-RCN002 Error 1 0 Sdc.Clock/CLK-RCN002.rpt Reconvergent clock path through synthesized logic
Sdc.Clock/CLK-RCN002.rpt :
# Rule: CLK-RCN002
# Severity: Error
# ==============================
#
# Design : top
# CLK-RCN002
# Reconvergent clock path through synthesized logic
#
Debug
1) Trace the path from the source of the clock which has the Reconvergence to the reported
reconvergent pin, with the option “max_path” set to at least 2.
tv_shell > trace_path -from [get_clocks CLK1] -to [get_pins M1/Z] -max_path 2
Point Type Flags
-------------------------------
clk1 (port) cs
M1/I0 CKMUX2D0 ~
M1/Z CKMUX2D0 ~
2) In this case the paths converge at the output of a mux, to resolve this violation a “set_case_analysis”
should be applied to the select pin of the mux.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-RCN002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-RCN002 -obj1 M1/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule works in conjunction with the settings “Build/IntentionalCells”, which can be a regular
expression list of design intended cell names considered synthesized, and design intentional. Any
“Build/IntentionalCells” defined and violated phase-reconvergence, will be reported under rule CLK-
PCN001. Any cells not listed in “Build/IntentionalCells”, and violates phase-reconvergence will be
reported in rule CLK-PCN002. If “Build/IntentionalCells” is not set then all cells are considered
intentional and reported under rule CLK-PCN001.
Design in figure 3.8.3 below shows timing points reported under rule CLK- PCN001
M2 Q
clk1 MB1 MB2
In the above designs, MB1, MB2, M1, all match the partial name “M.*” and thus M1 would violate
phase-reconvergence rule CLK-PCN001.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-PCN001 Error 1 0 Sdc.Clock/CLK-PCN001.rpt Phase-reconvergent clock path
Sdc.Clock/CLK-PCN001.rpt :
# Rule: CLK-PCN001
# Severity: Error
# ==============================
#
# Design : top
# CLK-PCN001
# Phase-reconvergent clock path
#
Debug
1) Trace the path from the source of the clock which has the Phase Reconvergence to the reported
reconvergent pin, with the option “max_path” set to at least 2 and “-clock_phase” set to the clock in
violation.
tv_shell > trace_path -from [get_clocks CLK1] -to [get_pins M2/Z] -max_path 2 -clock_phase CLK1
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-PCN001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-PCN001 -obj1 M2/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule works in conjunction with the variable “design_intentional_cell_names”, which can be a
regular expression list of design intended cell names. Any “design_intentional_cell_names” defined
and violated phase-reconvergence, will be reported under rule CLK-PCN001. Any cells not listed in
“design_intentional_cell_names”, and violates phase-reconvergence will be reported in rule
CLK-PCN002.
Design in figure 3.8.4 below shows timing points reported under rule CLK- PCN002
M2
Q BF2
In the above designs, BUF1, INV2, and M2 does not match the partial name “BF.*” and thus M2 would
violate phase-reconvergence rule CLK-PCN002.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-PCN002 Error 1 0 Sdc.Clock/CLK-PCN002.rpt Phase-reconvergent clock path through synthesized logic
Sdc.Clock/CLK-PCN002.rpt :
# Rule: CLK-PCN002
# Severity: Error
# ==============================
#
# Design : top
# CLK-PCN002
# Phase-reconvergent clock path through synthesized logic
#
A# Clock Reconvergent Point
--------------------------------
A0 CLK1 M2/Z
--------------------------------
Debug
1) Trace the path from the source of the clock which has the Phase Reconvergence to the reported
reconvergent pin, with the option “max_path” set to at least 2 and “-clock_phase” set to the clock in
violation.
tv_shell > trace_path -from [get_clocks CLK1] -to [get_pins M2/Z] -max_path 2 -clock_phase CLK1
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-PCN002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-PCN002 -obj1 M2/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “create_clock” which blocks the propagation of other clocks beyond its
application point.
Design in figure 3.9.1 below shows timing points reported under rule CLK- BLK001
Figure 3.9.1
_
create_clock -name clka [get_pins B1/I] D Q
clk1 B1 Q
create_clock -name CLK1 [get_ports clk1]
create_clock -name clkb [get_pins B1/Z]
In the above designs, the create_clock defined on port clk1 is blocked by the create_clock defined at
the input of the buffer at “B1/I” and the create_clock defined on the buffer input “B1/I” is blocked but
the create_clock defined on the output of the buffer at “B1/Z”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-BLK001 Error 2 0 Sdc.Clock/CLK-BLK001.rpt create_clock blocks clock propagation
Sdc.Clock/CLK-BLK001.rpt :
# Rule: CLK-BLK001
# Severity: Error
# ==============================
#
# Design : top
# CLK-BLK001
# create_clock blocks clock propagation
#
Debug
1) Get the “printable” attribute of the blocking clock “clka” to confirm it is a “create_clock”.
2) Clock “clka” is a “create_clock”. Now trace the path from the blocked clock “CLK1” to the blocking
clock “clka” to confirm the blocking path.
tv_shell > trace_path -from [get_clocks CLK1] -to [get_clocks clka]
3) Clock “clka” is a “create_clock” defined on pin “B1/Z” blocking all other clock propagation from that
point forward.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
top.waivers.tcl
set_waiver -rule CLK-BLK001 -obj1 clka -obj2 CLK1 -obj3 B1/A -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “create_generated_clock” which blocks the propagation of other clocks
beyond its application point.
Design in figure 3.9.2 below shows timing points reported under rule CLK- BLK002
Figure 3.9.2
In the above designs, the create_generated_clock defined on ports M1/Z blocks clock CLK2 so the
generated clock defined on pin B1/Z does not have a path to its master.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-BLK002 Warning 1 0 Sdc.Clock/CLK-BLK002.rpt create_generated_clock blocks clock propagation
Sdc.Clock/CLK-BLK002.rpt :
# Rule: CLK-BLK002
# Severity: Warning
# ==============================
#
# Design : top
# CLK-BLK002
# create_generated_clock blocks clock propagation
January 2015 90 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
Debug
1) Get the “printable” attribute of the blocking clock “gclk” to confirm it is a “create_generated_clock”.
2) Clock “gclk” is a “create_generated_clock”. Now trace the path from the blocked clock “CLKL2” to
the blocking clock “gclk” to confirm the blocking path.
3) Clock “gclk” is a “create_generated_clock” defined on pin “M1/Z” blocking all other clock
propagation from that point forward.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-BLK002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-BLK002 -obj1 gclk -obj2 CLK2 -obj3 M1/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies any celltypes in the clock path that does not match the intended clock cells specified
January 2015 91 Ausdia, Inc © 2015
TimeVision Constraints User Guide
in variable “design_intentional_clock_library_cells” or “Build/IntentionalClockLibraryCells”
Design in figure 3.10.1 below shows timing points reported under rule CLK-OBJ001
Figure 3.10.1
settings Build/IntentionalClockLibraryCells
"BUF_X8" – marks clock cell “BUF_X8” as the
only allowably clock cell in the clock path
_
D Q
clk1 B1 B2 Q
create_clock -name CLK1 [get_ports clk1]
Is cell type BUF_X8 Is cell type BUF_X32
In the above designs, the second buffer is of celltype “BUF_X32” and therefore does not match the
intended celltype variable.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-OBJ001 Warning 1 0 Sdc.Clock/CLK-OBJ001.rpt clock network gate is not of allowable type.
Sdc.Clock/CLK-OBJ001.rpt :
# Rule: CLK-OBJ001
# Severity: Warning
# ==============================
#
# Design : top
# CLK-OBJ001
# Clock network contains cells not in the 'design_intentional_clock_network_cells'
# set of regular expressions for allowable library cells in the network.
#
Debug
Check the value of the variable “design_intentional_clock_library_cells”.
The user has specified that only celltype BUF_X8 are allowed in the clock network, so any other celltype
will be reported as violation.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-OBJ001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-OBJ001 -obj1 CLK1 -obj2 B2 -obj3 BUF_X32 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies identifies create_clocks or create_generated_clocks which are defined on
hierarchical (logical) pins.
Design in figure 3.10.2 below shows timing points reported under rule CLK-OBJ001
b1 _
din
D Q
bf1
clk b0 Q dou t
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-OBJ002 Warning 1 0 Sdc.Clock/CLK-OBJ002.rpt clock is defined on hierarchical (logical) pin.
Sdc.Clock/CLK-OBJ002.rpt :
# Rule: CLK-OBJ002
# Severity: Warning
# ==============================
#
# Design : top
# CLK-OBJ002
# clock is defined on hierarchical (logical) pin.
#
Debug
Check the attribute “app_clocks” on the hierarchical pin to confirm a clock is applied.
Waivers
Any reported violation can be waived using the “set_waiver” command.
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-OBJ002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-OBJ002 -obj1 HCLK -obj2 u_blk/hclk -author "hollis" -date "05/06/15" -reason "None"
Description:
This rule identifies “pins” at which a clock network becomes a data network.
Design in figure 3.11.1 below shows pins reported under rule CLK-DATA01. The purpose of identifying
these pins is to manage CTS implementation, and disable all clock gating checks at these pins. Basically,
beyond at these pins and beyond, it is not a clock network any longer, and can be traded as such. If a
designer instantiates such logic in the RTL or netlist intentionally, using certain .lib cells or instance
names, these intentional .lib cell names or instance names can be specified using variables, for
example:
If either of these variables is defined, all clock network to data network cells/pins which match these
variables are considered as “intentional”, and are reported by rule CLK-DATA01. All other clock network
to data network cells/pins not matching these variables are considered as “synthesized”
(unintentional), and reported by rule CLK-DATA02.
If neither of these variables is defined, for RTL designs, Timevision can auto determine which cells are
synthesized (CLK-DATA02), and which cells are not (CLK-DATA01). However, for gate/netlist designs, all
clock network to data network cells/pins variables are considered “intentional” by default, and
reported by rule CLK-DATA01.
Figure 3.11.1
module top ff3 ## SDC:
din2 create_clock -name sclk -period 3.0 \
A1
{sclk}
A2 `
U128
sreg0 create_clock -name LV_clk -period 8.0 \
ff4
{LV_clk}
din3
LV_reg0
`
In the above design, U128/A2 and U_ckand1/A2 are pins at which a clock network becomes a data
network, since all fanout endpoints from these two pins are non-clock endpoints. Therefore, these two
pins are reported by rule CLK-DATA-01.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-DATA01 Warning 4 0 Sdc.Clock/CLK-DATA01.rpt First gating pin of data network
Sdc.Clock/CLK-DATA01.rpt :
# Rule: CLK-DATA01
# Severity: Warning
# ==============================
#
# Design : top
# CLK-DATA01
# First gating pin of data network
# Severity: Warning
# ==============================
#
# Violations
2) Find all “clock” endpoints from this pin – nothing should be returned:
tv_shell [7] > all_fanout -from U_ckand1/A2 -end -filter "is_clock_pin == 1"
Waivers
Any reported violation can be waived using the “set_waiver” command.
Example:
set_waiver -rule CLK-DATA01 –id {A0 A1} –reason “Bist clock, don’t care”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-DATA01 -obj1 LV_clk -obj2 U_ckand1/A2 -author "atul" -date "08/04/14" -
reason "Bist clock, don't care"
set_waiver -rule CLK-DATA01 -obj1 LV_clk -obj2 U128/A2 -author "atul" -date "08/04/14" -
reason "Bist clock, do't care"
Description:
This rule identifies synthesized “pins” at which a clock network becomes a data network.
Design in figure 3.11.2 below shows pins reported under rule CLK-DATA02. The purpose of identifying
these pins is to manage CTS implementation, and disable all clock gating checks at these pins. Basically,
beyond at these pins and beyond, it is not a clock network any longer, and can be traded as such. If a
designer instantiates such logic in the RTL or netlist intentionally, using certain .lib cells or instance
names, these intentional .lib cell names or instance names can be specified using variables, for
example:
If either of these variables is defined, all clock network to data network cells/pins which match these
variables are considered as “intentional”, and are reported by rule CLK-DATA01. All other clock network
to data network cells/pins not matching these variables are considered as “synthesized”
(unintentional), and reported by rule CLK-DATA02.
If neither of these variables is defined, for RTL designs, Timevision can auto determine which cells are
synthesized (CLK-DATA02), and which cells are intentional (CLK-DATA01). However, for gate/netlist
designs, all clock network to data network cells/pins variables are considered “intentional”, and
reported by rule CLK-DATA01.
Figure 3.11.2
## Design setup:
set design_intentional_cell_names { .*ck.* }
module top ff3
## SDC:
din2 create_clock -name sclk -period 3.0{sclk}
A1
A2 ` create_clock -name LV_clk -period 8.0 {LV_clk}
U128
sreg0
ff4
Output of this gate is a “data” network –
driving no leaf clock pins. The input to this
din3 gate is a “clock” network. Moreover, this cell is
not specified in either of these variables:
LV_reg0 set design_intentional_cell_names
` set design_intentional_library_cell_names
din1
In the above design, U128/A2 and U_ckand1/A2 are pins at which a clock network becomes a
data network, since all fanout endpoints from these two pins are non-clock endpoints.
However, “U_ckand1/A2” is specified as an intentional cell using command:
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-DATA02 Error 2 0 Sdc.Clock/CLK-DATA02.rpt First gating pin of data network is synthesized
Sdc.Clock/CLK-DATA02.rpt :
# Rule: CLK-DATA02
# Severity: Warning
# =============================================
# Design : top
# CLK-DATA02
# First gating pin of data network is synthesized
# Severity: Error
# =============================================
#
# Violations
A# Clock Data Network Gater
---------------------------------
A0 LV_clk U128/A2
A1 sclk U128/A2
---------------------------------
January 2015 98 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Debug
1) Find all “data” endpoints from this pin – some pins should be returned:
tv_shell [6] > all_fanout -from U128/A2 -end -filter "is_data_pin == 1"
{ ff3/D ff4/D }
2) Find all “clock” endpoints from this pin – nothing should be returned:
tv_shell [7] > all_fanout -from U_ckand1/A2 -end -filter "is_clock_pin == 1"
Waivers
Any reported violation can be waived using the “set_waiver” command.
Example:
set_waiver -rule CLK-DATA02 –id {A0} –reason “Bist clock, don’t care”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-DATA02 -obj1 LV_clk -obj2 U128/A2 -author "atul" -date "08/04/14" -
reason "Bist clock, don't care"
Description:
This rule identifies all clocks sources which drive data pins. The following are excluded:
1. Data pins of clock divider flop driven by generated clock source points.
2. Output ports driven by generated clock source points.
## SDC
create_clock -name sclk -period 3.0 {sclk}
create_clock -name LV_clk -period 8.0 {LV_clk}
create_clock –name clkin –period 4.5 {clkin}
module top
clkin clkout
din2 ff3
ckinv
Clock “clkin” drives output
port “clkout”. Not reported
by CLK-DATA03
ck_div_reg
`
ckmux ff1
sclk
0 ckbuf Clock “sclk_div2” feedbacks
LV_clk to its own divider flop D pin
1 Not reported by CLK-DATA03
U_ckand1
csel ff2
din1
In the above design, clocks “sclk” and “LV_clk” drive data pins, and therefore and reported as
rule CLK-DATA03. Note that:
1. clock “clkin” drives output port “clkout”, and therefore not reported under CLK-DATA03.
2. generated clock “sclk_div2” drives data pin of the clock divider flop, which is also not
reported under CLK-DATA03.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-DATA03 Warning 2 0 Sdc.Clock/CLK-DATA03.rpt Clock drives data pins
Sdc.Clock/CLK-DATA03.rpt :
January 2015 100 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# Rule: CLK-DATA03
# Severity: Warning
# =============================================
# Design : top
# CLK-DATA03
# Clock drives data pins
# Severity: Warning
# =============================================
# Violations
A# Clock
----------------
A0 LV_clk
A1 sclk
----------------
Debug
1) Find where the reported clock is defined:
tv_shell [6] > get_attr [get_clocks sclk] sources
{ sclk }
Waivers
Any reported violation can be waived using the “set_waiver” command.
Example:
set_waiver -rule CLK-DATA03 –id {A0} –reason “Bist clock, don’t care”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-DATA03 -obj1 LV_clk -obj2 LV_clk -author "atul" -date "08/04/14" -reason
"Bist clock, don't care"
Description:
This rule identifies clock merge points where two or more clocks converge and the convergent point
drives a leaf clock pin or an output port.
Design in figure 3.12.1.1 below shows points reported under rule CLK-MRG01, and an example of a
point not reported under rule CLK-MRG01.
clk3
Figure 3.12.1.2
Clock Merge
Point
OUT1
clk1 A1
OR1
A0 A1
A2
create_clock -name CLK1 OR2
A0 A1 _
[get_ports clk1]
A2
OR3
A2
A0 D Q
clk2
FF1
create_clock -name CLK2
[get_ports clk2] Q
clk3
In the above designs, Figures 3.12.1.1 and 3.12.1.2 shows clock merge points at the output of mux
“M3” and the output of “OR3” because “M3” drive a leaf clock pin and “OR3” drive an output port
“OUT1”. However, Figure 3.12.1.3 shows an example of a point that is not considered to be a clock
merge point because neither mux drives a leaf clock pin nor an output port.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-MRG01 Info 2 0 Sdc.Clock/CLK-MRG01.rpt clock merging point
Sdc.Clock/CLK-MRG01.rpt :
# Rule: CLK-MRG001
# Severity: Info
# ==============================
#
# Design : top
# CLK-MRG01
# Clock merging point
# Severity: Info
#
# ==============================
#
# Violations
#
2) Confirm that each merge point drives a leaf clock pin or a port.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-MRG01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-MRG01 -obj1 M3/Z -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies clock merge points where two or more clocks converge and the convergent point
drives a leaf clock pin or an output port, and is not a design intentional cell.
Design in figure 3.12.2.1 below shows points reported under rule CLK-MRG02 because it does not
match the criteria listed in “set_design_intentional_cell_names” variable.
Design in figure 3.12.2.2 below shows points reported under rule CLK-MRG01 because it does match
the criteria listed in “set_design_intentional_cell_names” variable.
Design in figure 3.12.2.3 below shows points not reported under rule CLK-MRG01 nor CLK-MRG02 even
though it matches the criteria listed in “set_design_intentional_cell_names” variable. However, it does
not drive a leaf clock pin nor an output port.
Figure 3.12.2.1
OUT1
clk1 A1
OR1
A0 A1
A2
create_clock -name CLK1 OR2
A0 A1 _
[get_ports clk1]
A2
OR3
A2
A0 D Q
clk2
FF1
create_clock -name CLK2
[get_ports clk2] Q
clk3
Figure 3.12.2.2
clk3
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-MRG02 Error 1 0 Sdc.Clock/CLK-MRG02.rpt clock merging point is synthesized
Sdc.Clock/CLK-MRG02.rpt :
# Rule: CLK-MRG002
# Severity: Error
# ==============================
#
# Design : top
# CLK-MRG02
# Clock merging point is synthesized
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Get attribute “clocks” to confirm multiple clocks indeed converge at the merge point.
2) Confirm that each merge point drives a leaf clock pin or a port.
tv_shell > get_object_name [all_fanout -from OR3/ZN -end \
-filter "is_clock_pin || is_port"]
OUT1
3) Confirm the cell does not match the “design_intentional_cell_names” variable criteria.
tv_shell > puts $design_intentional_cell_names
.*M.*
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
top.waivers.tcl
set_waiver -rule CLK-MRG02 -obj1 OR3/Z -author "hollis" -date "07/10/14" -reason "None"
3.13 Incorrect clock groups and interclock false path rule with paths
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and have logic paths between them in the unique-to-unique domain.
Design in figure 3.13.1 below shows timing points reported under rule CGWP-INC001/ICFP-INC001
Synchronous – with logic paths
Figure 3.13.1
PLL 0
CLKA
CLKA
÷2
CLKA_div2
CLKA_div2
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC001 Fatal 1 0 Sdc.Interclock/ICFP-INC001.rpt Incorrect interclock false path, synchronous
CGWP-INC001 Fatal 1 0 Sdc.Interclock/CGWP-INC001.rpt Incorrect set_clock_groups , sync. clocks
Sdc.Clock/CGWP-INC001.rpt :
# Rule: CGWP-INC001
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC001
# Incorrect set_clock_groups , sync. clocks
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Generated Clock " CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Note that in this portion of the report above clock CLKA_div2 is a generated clock of CLKA.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
January 2015 108 Ausdia, Inc © 2015
TimeVision Constraints User Guide
tv_shell > get_constraints -clock {CLKA CLKA_div2} -type set_clock_group
{ set_clock_group5 set_clock_group6 }
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 5] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:12:5) -asynchronous \
-group [get_clocks { CLKA }] -group [get_clocks { CLKA_div2 }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC001 –id A0 –reason “None”
set_waiver -rule CGWP-INC001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC001 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC001 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and have logic paths in the common domain, and paths in the unique-to-common and
common-to-unique domains.
Design in figure 3.13.2 below shows timing points reported under rule CGWP-INC002/ICFP-INC002
PLL 0
CLKA
÷2
CLKA_div2
1 0
In the above designs, CLKA_div2 is a divided clock of CLKA and the green arrows indicates there are
paths between the unique-common, common-unique, and within common, and there is either a
set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC002 Fatal 1 0 Sdc.Interclock/ICFP-INC002.rpt Incorrect interclock false path, synchronous
logically-exclusive, unique<->common
CGWP-INC001 Fatal 1 0 Sdc.Interclock/CGWP-INC002.rpt Incorrect set_clock_groups , sync. + le clocks
(paths from/to common domain)
Sdc.Clock/ICFP-INC002.rpt :
# Rule: ICFP-INC002
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC002
# Incorrect interclock false path, synchronous logically-exclusive, unique<->common
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA 0 CLKA_div2 5
--------------------------------------------------
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync , logically_exclusive
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Generated Clock " CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Note that in this portion of the report above CLKA_div2 is a generated clock of CLKA and they are
logically exclusive in that they both are inputs to the same mux.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
January 2015 111 Ausdia, Inc © 2015
TimeVision Constraints User Guide
tv_shell > get_constraints -clock {CLKA CLKA_div2} -type set_clock_group
{ set_clock_group6 set_clock_group9 }
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 6] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:17:6) -logically_exclusive \
-group [get_clocks { CLKA }] -group [get_clocks { CLKA_div2 }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC002 –id A0 –reason “None”
set_waiver -rule CGWP-INC002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC002 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC002 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and have logic paths in the common domain, and paths in the cross (unique-to-unique)
domain.
Design in figure 3.13.3 below shows timing points reported under rule CGWP-INC003/ICFP-INC003
PLL 0
CLKA
÷2
CLKA_div2
1 0
In the above designs, CLKA_div2 is a divided clock of CLKA and the green arrows indicates there are
paths between the unique-unique and within common, and there is either a set_clock_group or
set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC003 Fatal 1 0 Sdc.Interclock/ICFP-INC003.rpt Incorrect interclock false path, synchronous
logically-exclusive, unique<->unique
CGWP-INC003 Fatal 2 0 Sdc.Interclock/CGWP-INC003.rpt Incorrect set_clock_groups , sync. + le clocks
(paths in cross domain)
Sdc.Clock/ICFP-INC003.rpt :
# Rule: ICFP-INC003
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC003
# Incorrect interclock false path, synchronous logically-exclusive, unique<->unique
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA 0 CLKA_div2 5
--------------------------------------------------
January 2015 113 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Sdc.Clock/CGWP-INC003.rpt :
# Rule: CGWP-INC003
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC003
# Incorrect set_clock_groups , sync. + le clocks (paths in cross domain)
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync , logically_exclusive
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Generated Clock " CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Note that in this portion of the report above CLKA_div2 is a generated clock of CLKA and they are
logically exclusive in that they both are inputs to the same mux.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 4] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:13:5) -logically_exclusive \
-group [get_clocks { CLKA }] -group [get_clocks { CLKA_div2 }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC003 –id A0 –reason “None”
set_waiver -rule CGWP-INC003 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC003 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC003 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and have logic paths in the common domain, cross (unique-to-unique) domain, and in the
common-to-unique/unique-to-common domains.
Design in figure 3.13.4 below shows timing points reported under rule CGWP-INC004/ICFP-INC004
PLL 0
CLKA
÷2
CLKA_div2
1 0
In the above designs, CLKA_div2 is a divided clock of CLKA and the green arrows indicates there are
paths between the unique-unique, unique-common, common-unique, nad within common, and there
is either a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC004 Fatal 1 0 Sdc.Interclock/ICFP-INC004.rpt Incorrect interclock false path, synchronous
logically-exclusive, unique<->unique/common
CGWP-INC004 Fatal 1 0 Sdc.Interclock/CGWP-INC004.rpt Incorrect set_clock_groups , sync. + le clocks
(paths in from/to common + cross domain)
Sdc.Clock/ICFP-INC004.rpt :
# Rule: ICFP-INC004
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC004
# Incorrect interclock false path, synchronous logically-exclusive, unique<->unique/common
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA 0 CLKA_div2 5
--------------------------------------------------
January 2015 116 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Sdc.Clock/CGWP-INC004.rpt :
# Rule: CGWP-INC004
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC004
# Incorrect set_clock_groups , sync. + le clocks (paths in from/to common + cross domain)
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync , logically_exclusive
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Generated Clock " CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Note that in this portion of the report above CLKA_div2 is a generated clock of CLKA and they are
logically exclusive in that they both are inputs to the same mux.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 15] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:33:55) -logically_exclusive \
-group [get_clocks { CLKA }] -group [get_clocks { CLKA_div2 }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC004 –id A0 –reason “None”
set_waiver -rule CGWP-INC004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC004 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC004 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and inherits logical exclusivity from the parent clocks.
Design in figure 3.13.5 below shows timing points reported under rule CGWP-INC005/ICFP-INC005
Figure 3.13.5
CLKA_slow
CLKA_slow
UNIQUE
set_clock_group -group CLKA_slow -group CLKA_div2
In the above designs, CLKA_slow is a divided clock of CLKA, and they have a logically exclusive
relationship. Both parent clocks have child clocks defined and their child clocks inherit logical
exclusivity. The green arrows indicates there are paths between them , and there is either a
set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC005 Fatal 1 0 Sdc.Interclock/ICFP-INC005.rpt Incorrect interclock false path, synchronous LE
inheritance
CGWP-INC005 Fatal 1 0 Sdc.Interclock/CGWP-INC005.rpt Incorrect set_clock_groups , sync. + le through
inheritance clocks
Sdc.Clock/ICFP-INC005.rpt :
# Rule: ICFP-INC005
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC005
# Incorrect interclock false path, synchronous LE inheritance
#
Sdc.Clock/CGWP-INC005.rpt :
# Rule: CGWP-INC005
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC005
January 2015 119 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# Incorrect set_clock_groups , sync. + le through inheritance clocks
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA_div2 1 CLKA_slow_div2 2
--------------------------------------------------
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync , logically_exclusive_inherit
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Generated Clock "CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Generated Clock "CLKA_slow_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f0/Q" (Generated Clock: CLKA_slow)
Defined at "f1/Q" (Generated Clock: CLKA_slow_div2)
Note that in this portion of the report above CLKA_div2 and CLKA_slow are generated clock of CLKA,
and CLKA_slow_div2 is a generated clock of CLKA_slow. CLKA and CLKA_slow are logically exclusive in
that they both are inputs to the same mux and CLKA_div2 and CLKA_slow_div2 inherits logically
exclusiveness.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
January 2015 120 Ausdia, Inc © 2015
TimeVision Constraints User Guide
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 20] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:37:20) -logically_exclusive \
-group [get_clocks { CLKA_div2 }] -group [get_clocks { CLKA_slow_div2 }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC005 –id A0 –reason “None”
set_waiver -rule CGWP-INC005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC005 -obj1 CLKA_div2 -obj2 CLKA_slow_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC005 -obj1 CLKA_div2 -obj2 CLKA_slow_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are
synchronous and partially inherits logical exclusivity from the parent clocks due to the fact that not all
parent clocks have a child clock.
Design in figure 3.13.6 below shows timing points reported under rule CGWP-INC006/ICFP-INC006
CLKA_slow
CLKA_slow
UNIQUE
set_clock_group -group CLKA_slow -group CLKA_div2
In the above designs, CLKA_slow is a divided clock of CLKA, and they have a logically exclusive
relationship. Only one parent clock, CLKA, has a child clock which partially inherit logical exclusivity.
The green arrows indicates there are paths between them , and there is either a set_clock_group or
set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC006 Fatal 1 0 Sdc.Interclock/ICFP-INC006.rpt Incorrect interclock false path, synchronous partial-LE
inheritance
CGWP-INC006 Fatal 1 0 Sdc.Interclock/CGWP-INC006.rpt Incorrect set_clock_groups , sync. + le through partial
inheritance clocks
Sdc.Clock/ICFP-INC006.rpt :
# Rule: ICFP-INC006
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC006
# Incorrect interclock false path, synchronous partial-LE inheritance
#
Sdc.Clock/CGWP-INC006.rpt :
# Rule: CGWP-INC006
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC006
# Incorrect set_clock_groups , sync. + le through partial inheritance clocks
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync , logically_exclusive_inherit
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Generated Clock "CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Generated Clock "CLKA_slow" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f0/Q" (Generated Clock: CLKA_slow)
Note that in this portion of the report above CLKA_div2 and CLKA_slow are generated clock of CLKA.
CLKA and CLKA_slow are logically exclusive in that they both are inputs to the same mux and CLKA_div2
inherits partial logically exclusiveness.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
January 2015 123 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC006 –id A0 –reason “None”
set_waiver -rule CGWP-INC006 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC006 -obj1 CLKA_div2 -obj2 CLKA_slow -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC006 -obj1 CLKA_div2 -obj2 CLKA_slow -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs that are source
synchronous.
Design in figure 3.13.7 below shows timing points reported under rule CGWP-INC007/ICFP-INC007
Figure 3.13.7
Q
set_output_delay -clock CLK1_div2_out
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC007 Fatal 1 0 Sdc.Interclock/ICFP-INC007.rpt Incorrect interclock false path, source-synchronous
CGWP-INC007 Fatal 1 0 Sdc.Interclock/CGWP-INC007.rpt Incorrect set_clock_groups , source sync clocks
Sdc.Clock/ICFP-INC007.rpt :
# Rule: ICFP-INC007
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC007
# Incorrect interclock false path, source-synchronous
#
Sdc.Clock/CGWP-INC007.rpt :
# Rule: CGWP-INC007
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC007
# Incorrect set_clock_groups , source sync clocks
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
1. source_sync clock source (Sync. Root Clock "CLK1" is defined on object "PLL0/clk_out"):
Generated Clock "CLK1_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLK1)
Defined at "FF1/Q" (Generated Clock: CLK1_div2)
Generated Clock "CLK1_div2_out" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLK1)
Defined at "FF1/Q" (Generated Clock: CLK1_div2)
Defined at "clk_out" (Generated Clock: CLK1_div2_out)
*source_sync Clock Path 1 from master clock to generated clock defined at: clk_out
FF1/Q SDFCNQD1 (master clock: CLK1_div2)
clk_out oport (generated clock: CLK1_div2_out, w.r.t. master clock CLK1_div2)
Note that in this portion of the report above CLK1_div2 is a generated clock of CLK1. CLK1_div2_out is
a generated clock on output port “clk_out”. Output data port “out1” constrained with respect to
generated clock “CLK1_div2_out” forms a source-sync relationship.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 11] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:19:11) -asynchronous \
-group [get_clocks { CLKA_div2 }] -group [get_clocks { CLKA_div2_out }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC007 –id A0 –reason “None”
set_waiver -rule CGWP-INC007 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC007 -obj1 CLK1_div2 -obj2 CLK1_div2_out -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC007 -obj1 CLK1_div2 -obj2 CLK1_div2_out -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies “set_clock_group/set_false_path” between clock pairs where the user
specified “async_allow” relationship via the command “define_clock_relation -async_allow -clock”, and
there is either a set_clock_group or set_false_path between them.
Design in figure 3.13.8 below shows timing points reported under rule CGWP-INC008/ICFP-INC008
Figure 3.13.8
PLL1 PLL2
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are asynchronous, however, the user has defined the clock pair
relationship as async_allow and there is either a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC008 Fatal 1 0 Sdc.Interclock/ICFP-INC008.rpt Incorrect interclock false path, asynchronous
-allow_paths clock group
CGWP-INC008 Fatal 1 0 Sdc.Interclock/CGWP-INC008.rpt Incorrect set_clock_groups , when user defined
allow_path is specified
Sdc.Clock/ICFP-INC008.rpt :
# Rule: ICFP-INC008
# Severity: Fatal
Sdc.Clock/CGWP-INC008.rpt :
# Rule: CGWP-INC008
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC008
# Incorrect set_clock_groups , when user defined allow_path is specified
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous_allow
#####################################################################
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Create Clock "CLKB " Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC008 –id A0 –reason “None”
set_waiver -rule CGWP-INC008 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC008 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC008 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies incorrect “set_clock_group” defined on the same clock domain.
Design in figure 3.13.9 below shows timing points reported under rule CGWP-INC009/ICFP-INC009
Figure 3.13.9
PLL 0
CLKA
CLKA
In the above designs, CLKA is defined in two different groups and there is either a set_clock_group or
set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-INC009 Fatal 1 0 Sdc.Interclock/ICFP-INC009.rpt Incorrect same-clock false path
CGWP-INC009 Fatal 1 0 Sdc.Interclock/CGWP-INC009.rpt Incorrect set_clock_groups , between same clocks
Sdc.Clock/ICFP-INC009.rpt :
# Rule: ICFP-INC009
# Severity: Fatal
# ==============================
#
# Design : top
# ICFP-INC009
# Incorrect same-clock false path
#
Sdc.Clock/CGWP-INC009.rpt :
# Rule: CGWP-INC009
# Severity: Fatal
# ==============================
#
# Design : top
# CGWP-INC009
# Incorrect set_clock_groups , between same clocks
#
Debug
1) Get the clock pair relationship attribute
tv_shell > get_clock_relation -clock {CLKA CLKA}
self
2) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
3) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 16] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:29:16) -asynchronous \
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-INC009 –id A0 –reason “None”
set_waiver -rule CGWP-INC009 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC009 -obj1 CLKA -obj2 CLKA -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC009 -obj1 CLKA -obj2 CLKA -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies clock pairs which are asynchronous and have registered logic paths between them
and a user specified “set_clock_group –async -allow_path” is defined between them.
Design in figure 3.13.10 below shows timing points reported under rule CGWP-INC010
Figure 3.13.10
PLL1 PLL2
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are asynchronous with path between then and there is a
set_clock_group -async -allow_path between them.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock CGWP-INC010 Error 1 0 Sdc.Interclock/CGWP-INC010.rpt Incorrect set_clock_groups , SDC has incorrect
set_clock_group -asynchronous -allow_paths
Sdc.Clock/CGWP-INC010.rpt :
# Rule: CGWP-INC010
# Severity: Error
# ==============================
#
# Design : top
# CGWP-INC010
# Incorrect set_clock_groups , SDC has incorrect set_clock_group -asynchronous -allow_paths
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "PLL1/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Create Clock "CLKB " Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 2] printable
set_clock_group (./tests/check_cons_CGWP.tcl:3:2) -asynchronous -allow_paths \
-group [get_clocks { CLKA }] -group [get_clocks { CLKB }]
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGWP-INC010 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC010 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC010 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
The logic type of a clock pair is determined by the relationship. If the relationship inferred by timevision
or defined by the user is in conflict with the relationship specified in the set_clock_group command
then the rule is violated. The timing paths between the clock pair are still false path in Static Timing
Analysis, however, Crosstalk/SI analysis is impacted.
Table of Violation:
Clock Pair Relation Clock Group Relation Violate (yes/no)
physically_exclusive asynchronous yes
physically_exclusive logically_exclusive yes
logically_exclusive asynchronous yes
logically_exclusive physically_exclusive yes
asynchronous physically_exclusive yes
asynchronous logically_exclusive yes
physically_exclusive physically_exclusive no
logically_exclusive logically_exclusive no
asynchronous asynchronous no
Design in figure 3.13.11 below shows one example of timing points reported under rule CGWP-INC011
PLL1 PLL2
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are asynchronous with path between them however the clock
group is incorrectly specified as logically_exclusive.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock CGWP-INC011 Error 1 0 Sdc.Interclock/CGWP-INC011.rpt Type Incorrect set_clock_groups (Crosstalk / SI impact
only) between clocks with timing paths
Sdc.Clock/CGWP-INC011.rpt :
# Rule: CGWP-INC011
# Severity: Error
# ==============================
#
# Design : top
# CGWP-INC011
# Type Incorrect set_clock_groups (Crosstalk / SI impact only) between clocks with timing paths
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous
January 2015 134 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "PLL1/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Create Clock "CLKB " Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 7] printable
set_clock_group (./tests/check_cons_CGWP.tcl:9:7) -logically_exclusive \
-group [get_clocks { CLKA }] -group [get_clocks { CLKB }]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGWP-INC011 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CGWP-INC011 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group/set_false_path” between clock pairs that are
“-physically_exclusive”, i.e. multiple clocks are defined on the same port or pin and cannot
physically exist at the same time.
Design in figure 3.14.1 below shows timing points reported under rule CGWP-MIS001/ICFP-MIS001
CLKA
CLKB
clk B1 Q
The following should exist:
set_clock_group -group CLKA -group CLKB
or
set_false_path -from CLKA -to CLKB
In the above designs, CLKA and CLKB are physically exclusive, defined on the same port and there is
neither a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS001 Error 1 0 Sdc.Interclock/ICFP-MIS001.rpt Missing interclock false path, physically exclusive
CGWP-MIS001 Error 1 0 Sdc.Interclock/CGWP-MIS001.rpt Missing physically-exclusive set_clock_group between
clocks
Sdc.Clock/ICFP-MIS001.rpt :
# Rule: ICFP-MIS001
# Severity: Error
# ==============================
#
# Design : top
# ICFP-MIS001
# Missing interclock false path, physically exclusive
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA 0 CLKB 1
--------------------------------------------------
Sdc.Clock/CGWP-MIS001.rpt :
# Rule: CGWP-MIS001
# Severity: Error
# ==============================
#
# Design : top
# CGWP-MIS001
# Missing physically-exclusive set_clock_group between clocks
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: physically_exclusive
#####################################################################
1. physically_exclusive clock source (Sync. Root Clock "CLKA" is defined on object "clk"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "clk" (Clock: CLKA)
Create Clock "CLKB " Source (Starting from "root" master clock onwards):
Defined at "clk" (Clock: CLKB)
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS001 –id A0 –reason “None”
set_waiver -rule CGWP-MIS001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-MIS001 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-MIS001 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group/set_false_path” between clock pairs that are
January 2015 137 Ausdia, Inc © 2015
TimeVision Constraints User Guide
“-logically_exclusive”, i.e. all paths between the clock pair are in the common domain.
Design in figure 12.1.1 below shows timing points reported under rule CGWP-MIS002/ICFP-MIS002
Figure 3.14.2
1 0 1 0
In the above designs, CLKA and CLKB are physically exclusive, defined on the same port and there is
neither a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS001 Error 1 0 Sdc.Interclock/ICFP-MIS001.rpt Missing interclock false path, physically exclusive
CGWP-MIS001 Error 1 0 Sdc.Interclock/CGWP-MIS001.rpt Missing physically-exclusive set_clock_group between
clocks
Sdc.Clock/ICFP-MIS002.rpt :
# Rule: ICFP-MIS002
# Severity: Error
# ==============================
#
# Design : top
# ICFP-MIS002
# Missing interclock false path, logically exclusive
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are logically run command “justify_inter_clock”. Only portions of this report is
used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous, logically_exclusive
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "CLKA"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "CLKA" (Clock: CLKA)
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "CLKB" (Clock: CLKB)
Note that in this portion of the report above CLKA and CLKB are logically exclusive in that they both are
inputs to the same mux.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS002 –id A0 –reason “None”
set_waiver -rule CGWP-MIS002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-MIS002 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-MIS002 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group/set_false_path” between clock pairs that are “-async” and
their periods are non-harmonic. The clock pair can also have paths between them per the topologies in
the diagram below.
Design in figure 3.14.3 below shows timing points reported under rule CGWP-MIS003/ICFP-MIS003
Figure 3.14.3
PLL1 PLL2
275MHz 333MHz
CLKA CLKB
CLKA CLKB
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS003 Error 1 0 Sdc.Interclock/ICFP-MIS003.rpt Missing interclock false path, asynchronous
non-harmonic
CGWP-MIS003 Error 1 0 Sdc.Interclock/CGWP-MIS003.rpt Missing asynchronous (non-harmonic) set_clock_group
between clocks
Sdc.Clock/ICFP-MIS003.rpt :
# Rule: ICFP-MIS003
# Severity: Error
# ==============================
#
# Design : top
# ICFP-MIS003
# Missing interclock false path, asynchronous non-harmonic
#
Sdc.Clock/CGWP-MIS003.rpt :
# Rule: CGWP-MIS003
# Severity: Error
# ==============================
#
# Design : top
# CGWP-MIS003
# Missing asynchronous (non-harmonic) set_clock_group between clocks
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are logically run command “justify_inter_clock”. Only portions of this report is
used in this document.
1. async clock source (Sync. Root Clock "CLKA" is defined on object "CLKA"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "CLKA" (Clock: CLKA)
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "CLKB" (Clock: CLKB)
Note that in this portion of the report above CLKA and CLKB are logically exclusive in that they both are
inputs to the same mux.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS003 –id A0 –reason “None”
set_waiver -rule CGWP-MIS003 –id A0 –reason “None”
write_waiver top.waivers.tcl
Design in figure 3.14.4 below shows timing points reported under rule CGWP-MIS004/ICFP-MIS004
Figure 3.14.4
PLL1 PLL2
250MHz 500MHz
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are async, harmonic, and there is neither a set_clock_group or
set_false_path between them.
Therefore, “check_constraints” will report these clocks under rule CGWP-MIS004/ICFP-MIS004.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS004 Warning 1 0 Sdc.Interclock/ICFP-MIS004.rpt Missing interclock false path, asynchronous harmonic
CGWP-MIS004 Warning 1 0 Sdc.Interclock/CGWP-MIS004.rpt Missing asynchronous (harmonic) set_clock_group
between clocks
Sdc.Clock/ICFP-MIS004.rpt :
# Rule: ICFP-MIS004
# Severity: Warning
# ==============================
#
# Design : top
January 2015 143 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# ICFP-MIS004
# Missing interclock false path, asynchronous harmonic
#
Sdc.Clock/CGWP-MIS004.rpt :
# Rule: CGWP-MIS004
# Severity: Warning
# ==============================
#
# Design : top
# CGWP-MIS004
# Missing asynchronous (harmonic) set_clock_group between clocks
#
2) To see how the clocks are logically run command “justify_inter_clock”. Only portions of this report is
used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous, logically_exclusive
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "CLKA"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "CLKA" (Clock: CLKA)
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "CLKB" (Clock: CLKB)
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS004 –id A0 –reason “None”
set_waiver -rule CGWP-MIS004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-MIS004 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-MIS004 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group/set_false_path” between clock pairs that are “-async” and
their periods are identical.
Design in figure 3.14.5 below shows timing points reported under rule CGWP-MIS005/ICFP-MIS005
PLL1 PLL2
500MHz 500MHz
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are async, same period, and there is neither a set_clock_group or
set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS005 Warning 1 0 Sdc.Interclock/ICFP-MIS005.rpt Missing interclock false path, asynchronous
same-period
CGWP-MIS005 Warning 1 0 Sdc.Interclock/CGWP-MIS005.rpt Missing asynchronous (same-period)
set_clock_group between clocks
Sdc.Clock/ICFP-MIS005.rpt :
# Rule: ICFP-MIS005
# Severity: Warning
# ==============================
#
# Design : top
# ICFP-MIS005
# Missing interclock false path, asynchronous same-period
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are logically run command “justify_inter_clock”. Only portions of this report is
used in this document.
#####################################################################
## RELATIONSHIP TYPE: asynchronous, logically_exclusive
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "CLKA"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "CLKA" (Clock: CLKA)
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "CLKB" (Clock: CLKB)
Note that in this portion of the report above CLKA and CLKB are logically exclusive in that they both are
inputs to the same mux.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS005 –id A0 –reason “None”
set_waiver -rule CGWP-MIS005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-MIS005 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-MIS005 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group/set_false_path” between clock pairs that are
“-physically_exclusive:inherit”, i.e. multiple primary clocks are defined on the same port
or pin and generated clocks are defined with the primary clocks as masters, thus the generated clocks
relationships inherits physical exclusivity from the primary master clocks.
Design in figure 3.14.6 below shows timing points reported under rule CGWP-MIS006/ICFP-MIS006.
CLKA
CLKB
In the above designs, CLKA and CLKB are physically exclusive and each has a child clock and with paths
between the child clocks and the parent clocks. The child clocks inherits physical exclusivity from the
parent clocks, and there is neither a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS006 Error 2 0 Sdc.Interclock/ICFP-MIS006.rpt Missing interclock false path, physically exclusive:inherit
CGWP-MIS006 Error 2 0 Sdc.Interclock/CGWP-MIS006.rpt Missing physically-exclusive(inherit) set_clock_group
between clocks
Sdc.Clock/ICFP-MIS006.rpt :
# Rule: ICFP-MIS006
# Severity: Error
# ==============================
#
# Design : top
# ICFP-MIS006
# Missing interclock false path, physically exclusive:inherit
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA 0 CLKB_div2 3
A1 CLKB 1 CLKA_div2 2
--------------------------------------------------
Debug
1) Get the clock pair relationship attribute
2) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS006 –id A0 –reason “None”
set_waiver -rule CGWP-MIS006 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-MIS006 -obj1 CLKA -obj2 CLKB_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-MIS006 -obj1 CLKB -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Design in figure 3.14.7 below shows timing points reported under rule CGWP-MIS007/ICFP-MIS007
Figure 3.14.7
_
CLKA
D Q D Q
_
PLL 0 0
CLKA_div2_0
CLKB Q Q
CLKB_div2_0
PLL 1 1
Logic
_ _
D Q D Q
CLKA_div2_1
Q Q
CLKB_div2_1
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-MIS007 Error 4 0 Sdc.Interclock/ICFP-MIS007.rpt Missing interclock false path, physically exclusive:branch
CGWP-MIS007 Error 2 0 Sdc.Interclock/CGWP-MIS007.rpt Missing physically-exclusive(branch) set_clock_group
between clocks
Sdc.Clock/ICFP-MIS007.rpt :
# Rule: ICFP-MIS007
# Severity: Error
# ==============================
#
# Design : top
# ICFP-MIS007
# Missing interclock false path, physically exclusive:branch
January 2015 151 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA_div2_1 2 CLKB_div2_0 5
A1 CLKB_div2_0 3 CLKA_div2_1 4
A2 CLKA_div2_0 4 CLKB_div2_1 3
A3 CLKB_div2_1 5 CLKA_div2_0 2
--------------------------------------------------
Sdc.Clock/CGWP-MIS006.rpt :
# Rule: CGWP-MIS007
# Severity: Error
# ==============================
#
# Design : top
# CGWP-MIS007
# Missing physically-exclusive(branch) set_clock_group between clocks
#
A# Clock1 Clock1 ID Clock2 Clock2 ID Info
--------------------------------------------------
A0 CLKA_div2_1 2 CLKB_div2_0 5
A1 CLKA_div2_0 4 CLKB_div2_1 3
--------------------------------------------------
Debug
1) Get the clock pair relationship attribute
2) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-MIS007 –id A0 –reason “None”
set_waiver -rule CGWP-MIS007 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CGWP-MIS007 -obj1 CLKA_div2_1 -obj2 CLKB_div2_0 -author "hollis" -date "07/14/14" -reason "None"
set_waiver -rule CGWP-MIS007 -obj1 CLKA_div2_0 -obj2 CLKB_div2_1 -author "hollis" -date "07/14/14" -reason "None"
set_waiver -rule ICFP-MIS007 -obj1 CLKA_div2_1 -obj2 CLKB_div2_0 -author "hollis" -date "07/14/14" -reason "None"
January 2015 152 Ausdia, Inc © 2015
TimeVision Constraints User Guide
set_waiver -rule ICFP-MIS007 -obj1 CLKB_div2_0 -obj2 CLKA_div2_1 -author "hollis" -date "07/14/14" -reason "None"
set_waiver -rule ICFP-MIS007 -obj1 CLKA_div2_0 -obj2 CLKB_div2_1 -author "hollis" -date "07/14/14" -reason "None"
set_waiver -rule ICFP-MIS007 -obj1 CLKB_div2_1 -obj2 CLKA_div2_0 -author "hollis" -date "07/14/14" -reason "None"
3.15 Incorrect clock groups and interclock false path rule with no paths
Description:
This rule identifies incorrect “set_clock_group” between clock pairs that are synchronous but have NO
logic paths between them.
Design in figure 3.15.1 below shows timing points reported under rule CGNP-INC001/ICFP-IRR001
Figure 3.15.1
PLL 0
CLKA
CLKA
÷2
CLKA_div2
CLKA_div2
In the above designs, CLKA_div2 is a divided clock of CLKA and there are no paths between the clock
domains, and there is either a set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Interclock ICFP-IRR001 Warning 1 0 Sdc.Interclock/ICFP-IRR001.rpt Irrelevant interclock false path, no clock-to-clock path
CGNP-INC001 Warning 1 0 Sdc.Interclock/CGNP-INC001.rpt Incorrect set_clock_groups between clocks with NO
timing paths
January 2015 153 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Sdc.Clock/ICFP-IRR001.rpt :
# Rule: ICFP-IRR001
# Severity: Warning
# ==============================
#
# Design : top
# ICFP-IRR001
# Irrelevant interclock false path, no clock-to-clock path
#
Sdc.Clock/CGNP-INC001.rpt :
# Rule: CGNP-INC001
# Severity: Warning
# ==============================
#
# Design : top
# CGNP-INC001
# Incorrect set_clock_groups between clocks with NO timing paths
#
2) To see how the clocks are synchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL0/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Generated Clock " CLKA_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL0/clk_out" (Clock: CLKA)
Defined at "f1/Q" (Generated Clock: CLKA_div2)
Note that in this portion of the report above CLKA_div2 is a generated clock of CLKA.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
4) Get the printable attribute of the clock group to see where it is defined.
tv_shell > get_attribute [get_constraints -id 5] printable
set_clock_group (./tests/check_cons_CGWP_ICFP.tcl:8:5) -asynchronous \
-group [get_clocks { CLKA }] -group [get_clocks { CLKA_div2 }]
No path returned.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule ICFP-IRR001 –id A0 –reason “None”
set_waiver -rule CGNP-INC001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule ICFP-INC001 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule CGWP-INC001 -obj1 CLKA -obj2 CLKA_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies missing “set_clock_group” between clock pairs that are “-async” or
“-physically_exclusive” and have NO paths between them, regardless of their period
relationship.
Design in figure 3.16.1 below shows timing points reported under rule CGNP-MIS001
Figure 3.16.1
PLL1 PLL2
275MHz 333MHz
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are async but have no paths between. However, it is good design
practice to define a clock group between the clock pair for Crosstalk/SI reasons, and there is either a
set_clock_group or set_false_path between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
Sdc.Interclock CGNP-MIS001 Warning 1 0 Sdc.Interclock/CGNP-MIS001.rpt Missing set_clock_groups between clocks with NO
timing paths
Sdc.Clock/CGNP-MIS001.rpt :
# Rule: CGNP-MIS001
# Severity: Warning
# ==============================
#
# Design : top
# CGNP-MIS001
# Missing set_clock_groups between clocks with NO timing paths
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are asynchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
3) Now get the clock group(s) defined between the clock pair. Note that there can be multiple clock
groups involving the clock pair.
No path returned.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGNP-MIS001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CGNP-MIS001 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies user defined, synchronous “set_clock_group” relationships between primary clock
pairs and is in conflict with TimeVision inferred relationship for the clock pair. The user issued the
command: “infer_clock_relations -honor_sdc_clock_groups”, which overrides TimeVision inferred clock
relationships.
Asynchronous
infer_clock_relations -honor_sdc_clock_groups
PLL1 PLL2
CLKA CLKB
CLKA CLKB
In the above designs, CLKA and CLKB are async but the clock group has them in the same group
implying synchronous relationship, however, this is in conflict with Timevision inferred clock
relationship of asynchronous between the clock pair.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
Sdc.Interclock CGIN-INF001 Info 1 0 Sdc.Interclock/CGIN-INF001.rpt User-Inferred synchronous group between primary
clocks, non-harmonic
Sdc.Interclock/CGIN-INF001.rpt :
# Rule: CGIN-INF001
# Severity: Info
# ==============================
#
# Design : top
# CGIN-INF001
# User-Inferred synchronous group between primary clocks, non-harmonic
#
Debug
1) Get the clock pair relationship attribute
#####################################################################
## RELATIONSHIP TYPE: sync
#####################################################################
1. sync clock source (Sync. Root Clock "CLKA" is defined on object "PLL1/cout"):
Note that the clock pair is reported as “sync” however, they are defined on different ports which
means the clock pair is definitely asynchronous.
Note the attribute is true meaning the user specified the clock pair relationship.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGIN-INF001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CGIN-INF001 -obj1 CLKA -obj2 CLKB -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies user defined, synchronous “set_clock_group” relationships between clock pairs
where a generated clock is involved, and is in conflict with TimeVision inferred relationship for the
clock pair. The user issued the command: “infer_clock_relations -honor_sdc_clock_groups”, which
overrides TimeVision inferred clock relationships.
January 2015 159 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Design in figure 3.17.2 below shows timing points reported under rule CGIN-INF002
Figure 3.17.2
Asynchronous
infer_clock_relations -honor_sdc_clock_groups
PLL1 PLL2
CLKA CLKB
÷2
CLKA CLKB_div2
In the above designs, CLKA and CLKB_div2 are async but the clock group has them in the same group
implying synchronous relationship, however, this is in conflict with Timevision inferred clock
relationship of asynchronous between the clock pair.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
Sdc.Interclock CGIN-INF002 Info 1 0 Sdc.Interclock/CGIN-INF002.rpt User-Inferred synchronous group between
primary/generated clocks, overriding asynchronous
Sdc.Interclock/CGIN-INF002.rpt :
# Rule: CGIN-INF002
# Severity: Info
# ==============================
#
# Design : top
# CGIN-INF002
# User-Inferred synchronous group between primary/generated clocks, overriding asynchronous
#
2) To see how the clocks are asynchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: sync
#####################################################################
1. async clock source (Sync. Root Clock "CLKA" is defined on object "PLL1/clk_out"):
Create Clock "CLKA" Source (Starting from "root" master clock onwards):
Defined at "PLL1/clk_out" (Clock: CLKA)
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
Generated Clock " CLKB_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
Defined at "f1/Q" (Generated Clock: CLKB_div2)
Note that the clock pair is reported as “sync” however, the generated clock is defined with “CLKB” as its
master and “CLKB” is defined on different ports which means the clock pair is definitely asynchronous.
Note the attribute is true meaning the user specified the clock pair relationship.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGIN-INF002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CGIN-INF002 -obj1 CLKA -obj2 CLKB_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies user defined, asynchronous “set_clock_group” relationships between clock pairs
and is in conflict with TimeVision inferred relationship for the clock pair. The user issued the
command: “infer_clock_relations -honor_sdc_clock_groups”, which overrides TimeVision inferred clock
relationships.
Design in figure 3.17.3 below shows timing points reported under rule CGIN-INF003
Figure 3.17.3
Synchronous
infer_clock_relations -honor_sdc_clock_groups
PLL2
CLKB
÷2
CLKB_div2
In the above designs, CLKB and CLKB_div2 are synchronous but the clock group has them in different
groups implying asynchronous relationship, however, this is in conflict with Timevision inferred clock
relationship of synchronous between the clock pair.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
Sdc.Interclock CGIN-INF003 Info 1 0 Sdc.Interclock/CGIN-INF003.rpt User-Inferred asynchronous group between
primary/generated clocks, overriding synchronous
Sdc.Interclock/CGIN-INF003.rpt :
# Rule: CGIN-INF003
# Severity: Info
# ==============================
#
# Design : top
# CGIN-INF003
January 2015 162 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# User-Inferred synchronous group between primary/generated clocks, overriding asynchronous
#
Debug
1) Get the clock pair relationship attribute
2) To see how the clocks are asynchronous run command “justify_inter_clock”. Only portions of this
report is used in this document.
#####################################################################
## RELATIONSHIP TYPE: async
#####################################################################
1. async clock source (Sync. Root Clock "CLKB" is defined on object "PLL2/clk_out"):
Create Clock " CLKB" Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
Generated Clock " CLKB_div2" Source (Starting from "root" master clock onwards):
Defined at "PLL2/clk_out" (Clock: CLKB)
Defined at "f1/Q" (Generated Clock: CLKB_div2)
Note that the clock pair is reported as “async” however, the generated clock is defined with “CLKB” as
its master and “CLKB” which means the clock pair is definitely synchronous.
Note the attribute is true meaning the user specified the clock pair relationship.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CGIN-INF003 –id A0 –reason “None”
write_waiver top.waivers.tcl
January 2015 163 Ausdia, Inc © 2015
TimeVision Constraints User Guide
top.waivers.tcl
set_waiver -rule CGIN-INF003 -obj1 CLKB -obj2 CLKB_div2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies points where a propagated case value and an applied case value are in conflict.
Design in figure 3.18.1 below shows timing points reported under rule MODE-CNF-01.
Figure 3.18.1
A
U1 Z A
B U2 Z
B
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Mode MODE-CNF-01 Error 1 0 Sdc.Mode/MODE-CNF-01.rpt Conflicting propagated case values
Sdc.Mode/MODE-CNF-01.rpt :
# Rule: MODE-CNF-01
# Severity: Error
# ==============================
#
# Design : top
# MODE-CNF-01
# Conflicting propagated case values
#
Debug
1) First, trace the constant to pin U2/Z.
Note that the pin has a case value set directly on it. Now to find the conflicting constant.
2) Get all the input pins of cell U2 and check the constant values.
tv_shell > get_pins U2/*
{ U2/A U2/B U2/Z }
Pin U2/A1 has constant value “1” and pin U2/A has constant value “x”, meaning it is not constant.
Path #0
----------------
U1/B OR2_X1 def: 1 (file: tests/check_cons_MODE_test1.tcl line: 28)
U1/Z OR2_X1 prop:1
U2/A OR2_X1 prop:1
Note that pin U1/B has constant value “1” from a constraint file that propagates to U2/Z because U2 is
an OR gate, thus a value “1” propagates from U2/A to the U2/Z pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule MODE-CNF-01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule MODE-CNF-01 -obj1 U2/Z -obj2 set_case_analysis3 -author "hollis" -date "07/10/14" -reason "None"
3.18.2 Rule MODE-CNF-02
- Conflicting set_case_analysis
Design in figure 3.18.2 below shows timing points reported under rule MODE-CNF-0
Figure 3.18.2
A
or0 Z
B
In the above designs, conflicticting case values are applied to the same pin.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Mode MODE-CNF-02 Error 1 0 Sdc.Mode/MODE-CNF-02.rpt Conflicting set_case_analysis
Sdc.Mode/MODE-CNF-02.rpt :
# Rule: MODE-CNF-02
# Severity: Error
# ==============================
#
# Design : top
# MODE-CNF-02
# Conflicting set_case_analysis
#
Debug
1) Since this rule implies conflicting case values are applied directly to the pin, get the constraints
attribute to get the set_case_analysis constraints applied to the pin.
tv_shell [16] > get_attribute [get_pins or1/B] constraints
{ set_case_analysis4 set_case_analysis5 }
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule MODE-CNF-02 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule MODE-CNF-02 -obj1 or1/B -obj2 set_case_analysis4 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies points where overlapping case values are propagated and applied to the same point.
Design in figure 3.18.3 below shows timing points reported under rule MODE-OVL-01
Figure 3.18.3
A
a3 ZN A
B Z
B
In the above designs, overlappinging case values are reported on pin or0/A1.
Therefore, “check_constraints” will report these clocks under rule MODE-OVL-01.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Mode MODE-OVL-01 Warning 1 0 Sdc.Mode/MODE-OVL-01.rpt Overlapping propagated/set case values
Sdc.Mode/MODE-OVL-01.rpt :
# Rule: MODE-OVL-01
# Severity: Warning
# ==============================
#
# Design : top
# MODE-OVL-01
# Overlapping propagated/set case values
#
Debug
1) First, trace the constant to pin or0/A.
tv_shell > trace_constant -to or0/A
Note that the pin has a case value set directly on it. Now to find the overlapping constant.
3) Note the “d” in the Flags column indicating disabled. Pin a3/Z is also disabled, so trace the constant
to that pin.
tv_shell > trace_constants -to a3/AZ -fullpath
Path #0
----------------
a3/A AND2_X1 def: 0 (file: OVL001.tcl line: 28)
a3/Z AND2_X1 prop:0
Note that pin a3/A has constant value “0” from a constraint file that propagates to a3/Z . Since a3/Z
connects directly to or0/A, the constants overlap.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule MODE-OVL-01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule MODE-OVL-01 -obj1 or0/A -obj2 set_case_analysis3 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies potential mode select points where clocks or scan selects merge, but no case
analysis is set.
Design in figure 3.18.4 below shows timing points reported under rule MODE-TBL-01
Figure 3.18.4
CLK1
0
CLK2 1
SEL
In the above designs, there is no case value on the “SEL” where two clocks propagate through the mux.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Mode MODE-TBL-01 Warning 1 0 Sdc.Mode/MODE-TBL-01.rpt No Case setting applied to pin involved with multiple clock
selection.
Sdc.Mode/MODE-TBL-01.rpt :
# Rule: MODE-TBL-01
# Severity: Warning
# ==============================
#
# Design : top
# MODE-TBL-01
# No Case setting applied to pin involved with multiple clock selection.
#
A# Mode Point
-----------------
A0 SEL
-----------------
Debug
1) First, get the constant_value attribute of the mux select pin to confirm it is not constant.
2) Get the clocks attribute of each MUX input pin to confirm a clock propagates each pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule MODE-TBL-01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule MODE-TBL-01 -obj1 SEL -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies potential mode select points where a single clock propagates, but no case analysis is
set.
Design in figure 3.18.5 below shows timing points reported under rule MODE-TBL-02
Figure 3.18.5
CLK1
0
SEL
In the above designs, there is no case value on the “SEL” where a single clock propagate through the
mux.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Mode MODE-TBL-02 Info 1 0 Sdc.Mode/MODE-TBL-02.rpt No Case setting applied to pin involved with single clock
selection.
Sdc.Mode/MODE-TBL-02.rpt :
# Rule: MODE-TBL-01
# Severity: Warning
# ==============================
#
# Design : top
# MODE-TBL-02
# No Case setting applied to pin involved with single clock selection.
#
A# Mode Point
-----------------
A0 SEL
-----------------
Debug
1) First, get the constant_value attribute of the mux select pin to confirm it is not constant.
2) Get the clocks attribute of each MUX input pin to confirm a clock propagates each pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule MODE-TBL-02 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule MODE-TBL-02 -obj1 SEL -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies register clock pins that are floating or undriven.
Design in figure 3.19.1 below shows timing points reported under rule UNC-001.
Figure 3.19.1
Floating or Undriven register clock pins
(the mux has no driver so the clock pin is floating )
0 D Q B
CLK
In the above designs, both mux pins are floating so there no driver that propagates to the register clock
pin.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Coverage UNC-001 Error 1 0 Sdc.Coverage/UNC-001.rpt Floating or Undriven register clock pins
Sdc.Coverage/UNC-001.rpt :
# Rule: UNC-001
# Severity: Error
# ==============================
#
# Design : top
# UNC-001
# Floating or Undriven register clock pins
#
A# Clock Pin
----------------
A0 f1/CLK
----------------
Debug
1) Get all fanin to the register clock pin.
Each mux input fanin is undriven because only the pin itself was returned.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule UNC-001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule UNC-001 -obj1 f1/CK -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies register clock pins that are driven but unclocked.
Design in figure 3.19.2 below shows timing points reported under rule UNC-002.
Figure 3.19.2
D Q B
CLK
In the above designs, the buffer input is properly connected to a port, however, the port does not have
a clock defined so the register clock pin is driven but never gets a clock.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Coverage UNC-002 Error 1 0 Sdc.Coverage/UNC-002.rpt Un-Clocked register clock pins
Sdc.Coverage/UNC-002.rpt :
# Rule: UNC-002
# Severity: Error
# ==============================
A# Clock Pin
----------------
A0 f2/CLK
----------------
Debug
1) Get all fanin to the register clock pin.
2) This is a primary input. Now get the clocks attribute to see if a clock is defined on the port.
Nothing is returned, no clocks are defined on the port so the register is driven but unclocked.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule UNC-002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule UNC-002 -obj1 f2/CLK -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies register clock pins that are driven by a constant.
Design in figure 3.19.3 below shows timing points reported under rule UNC-003.
Figure 3.19.3
D Q
A b3 Z CLK
In the above designs, the input of the buffer is set to “0” so the output propagates a constant “0” to
the register clock pin.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Coverage UNC-003 Error 1 0 Sdc.Coverage/UNC-003.rpt set_case_analysis or propagated-constant register clock pins
Sdc.Coverage/UNC-003.rpt :
# Rule: UNC-003
# Severity: Error
# ==============================
#
# Design : top
# UNC-003
# set_case_analysis or propagated-constant register clock pins
#
A# Clock Pin
----------------
A0 f3/CK
----------------
Debug
1) Get all fanin to the register clock pin.
3) The pin is a constant “0”. Now get the constraints attribute of pin b3/A to see if the constant is
applied to the pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule UNC-003 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule UNC-003 -obj1 f3/CLK -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies unclocked macro clock pins.
Design in figure 3.19.4 below shows timing points reported under rule UNC-004
Figure 3.19.4
mmac
CK
In the above designs, one input of the AND gate iset to “0” so the output propagates a constant “0” to
the register clock pin.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Coverage UNC-004 Error 1 0 Sdc.Coverage/UNC-004.rpt Un-Clocked Macro Clock pin
Debug
1) Get all fanin to the macro clock pin.
2) Now get the clocks attribute of the port to see if a clock is defined on it.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule UNC-004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule UNC-004 -obj1 mmac/CK -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies register clock pins that are tied-off to “1” or “0”.
Design in figure 3.19.5 below shows timing points reported under rule UNC-005
In the above designs, the clock input of the register is tied to “0”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------
Sdc.Coverage UNC-005 Warning 1 0 Sdc.Coverage/UNC-005.rpt constant register clock pins due to tie-offs
Sdc.Coverage/UNC-005.rpt :
# Rule: UNC-004
# Severity: Error
# ==============================
#
# Design : top
# UNC-005
# constant register clock pins due to tie-offs
#
A# Clock Pin
----------------
A0 FF1/CK
----------------
Debug
1) Trace the constant to the register clock pin.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule UNC-005 –id A0 –reason “None”
top.waivers.tcl
set_waiver -rule UNC-005 -obj1 FF1/CK -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies datapth combinational loops in the design where no SDC constraint exist to break
the loop.
Design in figure 3.20.1 below shows timing points reported under rule LOOP-01.
Figure 3.20.1
LOOP-01
_
D Q
FF1
clk1 B1 Q A
A1 Z I1 B2
create_clock -name CLK1 B
[get_ports clk1]
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.Netlist LOOP-01 Warning 1 0 Sdc.Netlist/LOOP-01.rpt Datapath loop not broken by SDC
Sdc.Netlist/LOOP-01.rpt :
# Rule: LOOP-01
# Severity: Warning
# ==============================
#
# Design : top
# LOOP-01
# Datapath loop not broken by SDC
#
A# Clock Pin
---------------------------
A0 A1
---------------------------
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule LOOP-01 -obj1 A1 -obj2 B -obj3 Z -author "hollis" \
-date "12/04/14" -reason "None"
write_waiver top.waivers.tcl
Description:
This rule identifies clock path combinational loops in the design where no SDC constraint exist to break
the loop.
Design in figure 3.20.2 below shows timing points reported under rule LOOP-01.
Figure 3.20.2
_ LOOP-02
D Q
clk1 B1 A
A1 Z B2 A
B A2 Z B3
create_clock -name CLK1 B
[get_ports clk1]
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.Netlist LOOP-02 Warning 1 0 Sdc.Netlist/LOOP-02.rpt Clock loop not broken by SDC
Sdc.Netlist/LOOP-02.rpt :
# Rule: LOOP-02
# Severity: Warning
# ==============================
#
# Design : top
# LOOP-02
# Clock loop not broken by SDC
#
A# Clock Pin
---------------------------
A0 A1
---------------------------
Debug
1) Trace path from “A1/Z” to “A1/B”.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule LOOP-02 -obj1 A1 -obj2 B -obj3 Z -author "hollis" \
-date "12/04/14" -reason "None"
write_waiver top.waivers.tcl
January 2015 182 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Description:
This rule identifies IO ports which are constrained to the wrong clock and there is a false path set
between the constraining clock and the register clock, effectively making the IO port unconstrained.
Design in figure 3.21.1 below shows timing points reported under rule IOC-INC001/IOC-INC004.
Figure 3.21.1
create_clock -name CLK1 [get_ports clk1] set_output_delay 1.0 -clock [get_clocks CLK2] [get_ports T1]
set_clock_group -group CLK1 -group CLK2
In the above designs, the input and output ports are constrained to a different clock than the one
which clocks data into the register. The clocks are async and have a clock group between them, which
makes the ports effectively unconstrained.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-INC001 Fatal 1 0 Sdc.IO/IOC-INC001.rpt Incorrect & Effectively Unconstrained Input Data port
IOC-INC004 Fatal 1 0 Sdc.IO/IOC-INC004.rpt Incorrect & Effectively Unconstrained Output Data port
Sdc.IO/IOC-INC001.rpt :
# Rule: IOC-INC001
# Severity: Fatal
# ==============================
# Design : top
# IOC-INC001
# Incorrect & Effectively Unconstrained Input Data port
#
Debug
1) Use the “justify_io_cons” command to get the violations details.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-INC001 –id A0 –reason “None”
set_waiver -rule IOC-INC004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-INC001 -obj1 D1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule IOC-INC004 -obj1 T1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO ports which are constrained to the wrong clock and the constraining clock and
the register clock are non-harmonic.
Design in figure 3.21.2 below shows timing points reported under rule IOC-INC002/IOC-INC005.
Figure 3.21.2
Incorrect non-harmonic clock, no false path
(CLK1, CLK2 are async, non-harmonic)
CLK1 period = 1.5ns ; CLK2 period = 2.7ns
_
D1 D Q
set_input_delay 1.0 -clock [get_clocks CLK2] [get_ports D1] FF1
clk1 Q T1
create_clock -name CLK1 [get_ports clk1] set_output_delay 1.0 -clock [get_clocks CLK2] [get_ports T1]
In the above designs, the input and output ports are constrained to a different clock than the one
which clocks data into the register. The clocks are async, non-harmonic and there is no false path
between them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-INC002 Warning 1 0 Sdc.IO/IOC-INC002.rpt Incorrectly Constrained (Non-Harmonic) Input Data port
IOC-INC005 Warning 1 0 Sdc.IO/IOC-INC005.rpt Incorrectly Constrained (Non-Harmonic) Output Data port
Sdc.IO/IOC-INC002.rpt :
# Rule: IOC-INC002
# Severity: Warning
# ==============================
#
# Design : top
# IOC-INC002
# Incorrectly Constrained (Non-Harmonic) Input Data port
#
Sdc.IO/IOC-INC005.rpt :
# Rule: IOC-INC005
# Severity: Warning
# ==============================
January 2015 185 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
# Design : top
# IOC-INC005
# Incorrectly Constrained (Non-Harmonic) Output Data port
#
Debug
1) Use the “justify_io_cons” command to get the violations details.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-INC002 –id A0 –reason “None”
set_waiver -rule IOC-INC005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-INC002 -obj1 D1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule IOC-INC005 -obj1 T1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO ports which are constrained to the wrong clock and the constraining clock and
the register clock are harmonic.
Design in figure 3.21.3 below shows timing points reported under rule IOC-INC003/IOC-INC006.
create_clock -name CLK1 [get_ports clk1] set_output_delay 1.0 -clock [get_clocks CLK2] [get_ports T1]
In the above designs, the input and output ports are constrained to a different clock than the one
which clocks data into the register. The clocks are async, harmonic and there is no false path between
them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-INC003 Warning 1 0 Sdc.IO/IOC-INC003.rpt Incorrectly Constrained (Harmonic) Input Data port
IOC-INC006 Warning 1 0 Sdc.IO/IOC-INC006.rpt Incorrectly Constrained (Harmonic) Output Data port
Sdc.IO/IOC-INC003.rpt :
# Rule: IOC-INC003
# Severity: Warning
# ==============================
#
# Design : top
# IOC-INC003
# Incorrectly Constrained (Harmonic) Input Data port
#
Sdc.IO/IOC-INC006.rpt :
# Rule: IOC-INC006
# Severity: Warning
# ==============================
#
# Design : top
# IOC-INC006
# Incorrectly Constrained (Harmonic) Output Data port
#
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-INC003 –id A0 –reason “None”
set_waiver -rule IOC-INC006 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-INC003 -obj1 D1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule IOC-INC006 -obj1 T1 -obj2 CLK2 -author "hollis" -date "07/10/14" -reason "None"
Design in figure 3.22.1 below shows timing points reported under rule IOC-MIS001/IOC-MIS002.
Figure 3.22.1
Unconstrained Input and Output ports
_
D1 D Q
No constraint FF1
clk1 Q T1
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-MIS001 Warning 1 0 Sdc.IO/IOC-MIS001.rpt Unconstrained Input Data port
IOC-MIS002 Warning 1 0 Sdc.IO/IOC-MIS002.rpt Unconstrained Output Data port
Sdc.IO/IOC-MIS001.rpt :
# Rule: IOC-MIS001
# Severity: Warning
# ==============================
#
# Design : top
# IOC-MIS001
# Unconstrained Input Data port
#
A# Port
-------------
A0 D1
-------------
Sdc.IO/IOC-MIS002.rpt :
# Rule: IOC-MIS002
# Severity: Warning
# ==============================
#
# Design : top
# IOC-INC002
# Unconstrained Output Data port
#
A# Port
-------------
A0 T1
-------------
Debug
Get the constraints attribute of the port to see if it is constrained.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
Example:
set_waiver -rule IOC-MIS001 –id A0 –reason “None”
set_waiver -rule IOC-MIS002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-MIS001 -obj1 D1 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule IOC-MIS002 -obj1 T1 -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO ports which are not constrained relative to all clocks clocking the associated
registers.
Design in figure 3.23.1 below shows timing points reported under rule IOC-UND001/IOC-UND002.
Figure 3.23.1
create_clock -name CLK1 [get_ports clk1] set_output_delay 1.0 -clock [get_clocks CLK2] [get_ports T1]
create_clock -name CLK2 [get_ports clk1] -add
In the above designs, the input and output ports are underconstrained because they are not
constrained with respect to every clock which reaches the register.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-UND001 Warning 1 0 Sdc.IO/IOC-UND001.rpt UnderConstrained Input Data port
IOC-UND002 Warning 1 0 Sdc.IO/IOC-UND002.rpt UnderConstrained Output Data port
Sdc.IO/IOC-UND001.rpt :
# Rule: IOC-UND001
# Severity: Warning
January 2015 190 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# ==============================
#
# Design : top
# IOC-UND001
# UnderConstrained Input Data port
#
Sdc.IO/IOC-UND002.rpt :
# Rule: IOC-UND002
# Severity: Warning
# ==============================
#
# Design : top
# IOC-UND002
# UnderConstrained Output Data port
#
A# Port Expected Clock
----------------------------
A0 T1 CLK1
----------------------------
Debug
Use the “justify_io_cons” command to get the violations details.
tv_shell > justify_io_cons -port [get_ports D1]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-UND001 –id A0 –reason “None”
set_waiver -rule IOC-UND002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-UND001 -obj1 D1 -obj2 CLK1 -author "hollis" -date "07/10/14" -reason "None"
set_waiver -rule IOC-UND002 -obj1 T1 -obj2 CLK1 -author "hollis" -date "07/10/14" -reason "None"
January 2015 191 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Description:
This rule identifies IO ports which are not constrained as a source-sync interface. When a clock is
connected to an output port, a generated clock should be defined at the output port with the
connected clock defined as its master clock. When a register is clocked by the master clock and drives
an output port, the output port should be constrained to the generated clock defined on the clock
output port, creating a source-sync interface.
Design in figure 3.24.1 below shows timing points reported under rule IOC-SSI001.
Figure 3.24.1
In the above designs, the source-sync output port is not constrained with respect to the source-sync
clock CLK1_div2_out..
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-SSI001 Warning 1 0 Sdc.IO/IOC-SSI001.rpt Source-Sync Output Data port not constrained to source-sync clock
Sdc.IO/IOC-SSI001.rpt :
# Rule: IOC-SSI001
# Severity: Warning
# ==============================
#
# Design : top
# IOC-SSI001
# Source-Sync Output Data port not constrained to source-sync clock
#
*Driven by Startpoints:
<- FF1/CK
clocked by:CLK1_div2 Period:8.4
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-SSI001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-SSI001 -obj1 out -obj2 CLK1_div2_out -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies unconstrained IO port pairs which are combinational feed throughs.
Design in figure 3.25.1 below shows timing points reported under rule IOC-FTP001.
Figure 3.25.1
in out
Combo Logic
Sdc.Qor_Fails.rpt:
Category Rule Severity Status Object_1 Object_2
----------------------------------------------------------
Sdc.IO IOC-FTP001 Warning FAIL in out
Sdc.IO/IOC-FTP001.rpt :
# Rule: IOC-FTP001
# Severity: Warning
# ==============================
#
# Design : top
# IOC-FTP001
# Unconstrained feedthrough pair.
#
A# Input Port Output Port
------------------------------
A0 in out
------------------------------
Debug
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-FTP001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-FTP001 -obj1 in -obj2 out -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO port pairs which are feed throughs which have set_input_delay constraint on the
input port, set_output_delay on the output port, and a set_max_delay from the input port to the
output port, creating a constraint conflict.
Design in figure 3.25.2 below shows timing points reported under rule IOC-FTP002.
Figure 3.25.2
in out
Combo Logic
In the above designs, shows a feedthru pair that conflicting constraints. The ports are constrained with
set_input_delay/set_output_delay and set_max_delay.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-FTP002 Warning 1 0 Sdc.IO/IOC-FTP002.rpt IO constraint conflict on feedthrough pair - input/output delay & max
delays
Sdc.IO/IOC-FTP002.rpt :
# Rule: IOC-FTP002
# Severity: Warning
# ==============================
#
# Design : top
# IOC-FTP002
# IO constraint conflict on feedthrough pair - input/output delay & max delays
#
Debug
1) Get the constraints attribute for feedthrough pair.
tv_shell > get_attribute [get_ports in] constraints
January 2015 195 Ausdia, Inc © 2015
TimeVision Constraints User Guide
{ set_input_delay10 set_max_delay12 }
tv_shell > get_attribute [get_ports out] constraints
{ set_output_delay11 }
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-FTP002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-FTP002 -obj1 in -obj2 out -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO port pairs which are feed throughs which have set_input_delay constraint on the
input port, set_output_delay on the output port, and the clock pair is non-harmonic.
Design in figure 3.25.3 below shows timing points reported under rule IOC-FTP003.
Figure 3.25.3
in out
Combo Logic
In the above designs, shows a feedthru pair that conflicting constraints. The ports are constrained with
set_input_delay/set_output_delay and set_max_delay.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-FTP003 Warning 1 0 Sdc.IO/IOC-FTP003.rpt Feedthrough pair constrained with non-harmonic clocks
Sdc.IO/IOC-FTP003.rpt :
# Rule: IOC-FTP003
# Severity: Warning
# ==============================
#
# Design : top
# IOC-FTP003
# Feedthrough pair constrained with non-harmonic clocks.
#
Debug
1) Get the constraints attribute for feedthrough pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
top.waivers.tcl
set_waiver -rule IOC-FTP003 -obj1 in -obj2 out -author "hollis" -date "07/10/14" -reason "None"
Description:
This rule identifies IO port pairs which are feed throughs which have set_input_delay constraint on the
input port, set_output_delay on the output port, and the clock pair are async and have a
set_clock_group between them, so the feedthrough pair is effectively undonstrained..
Design in figure 3.25.4 below shows timing points reported under rule IOC-FTP004.
Figure 3.25.4
in out
Combo Logic
In the above designs, shows a feedthru pair constrained with set_input_delay/set_output_delay with
async clocks and a set_clock_group exist between the clock pair making the feedthrough pair
effectively unconstrained.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-FTP004 Warning 1 0 Sdc.IO/IOC-FTP004.rpt Feedthrough pair effectively unconstrained
Sdc.IO/IOC-FTP004.rpt :
# Rule: IOC-FTP004
# Severity: Warning
# ==============================
# Design : top
# IOC-FTP004
# Feedthrough pair effectively unconstrained.
#
A# Input Port Output Port
------------------------------
A0 in out
------------------------------
Debug
1) Get the constraints attribute for feedthrough pair.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-FTP004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-FTP004 -obj1 in -obj2 out -author "hollis" -date "07/10/14" -reason "None"
Design in figure 3.25.5 below shows timing points reported under rule IOC-FTP005.
Figure 3.25.5
in out
Combo Logic
In the above design, a feedthru pair constrained with set_min_delay/set_max_delay and the min delay
(1.1) is greater than the max delay (1.0).
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-FTP005 Warning 1 0 Sdc.IO/IOC-FTP005.rpt Feedthrough pair with inconsistent set_min/set_max delay.
Sdc.IO/IOC-FTP005.rpt :
# Rule: IOC-FTP005
# Severity: Warning
# ==============================
#
# Design : top
# IOC-FTP005
# Feedthrough pair with inconsistent set_min/set_max delay
#
Debug
1) Get the printable attribute of the set_min/set_max delay to confirm the inconsistency.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-FTP005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule IOC-FTP005 -obj1 in -obj2 out -obj3 MXD.Fxa16fb51c0eeTx28253ca75d67fV1.0 \
-obj4 MND.Fxa16fb51c0eeTx28253ca75d67fV1.1 -author "hollis" -date "05/07/15" -reason "None"
Description:
This rule identifies IO port pairs which are feed throughs and have set_input_delay/set_output_delay
on the feedthrough pair constrained to the same clock or virtual clock which maps to the same real
clock and the combination of the delays greater than or equal to the period of the clock.
Design in figure 3.25.6 below shows timing points reported under rule IOC-FTP006.
Figure 3.25.6
in out
Combo Logic
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.IO IOC-FTP006 Warning 1 0 Sdc.IO/IOC-FTP006.rpt Feedthrough pair with inconsistent input/output delay.
Sdc.IO/IOC-FTP006.rpt :
# Rule: IOC-FTP006
# Severity: Warning
# ==============================
#
# Design : top
# IOC-FTP006
# Feedthrough pair with inconsistent input/output delay.
#
Debug
1) Get the period attribute of the virtual clock the set_input/set_out delay are constrained.
tv_shell > get_attribute [get_clocks clk_v] period
{ 1.2 }
2) Get the printable attribute of the set_input/set_out delay to confirm the inconsistency.
Note the sum of the input delay value (1.0) and the output delay value (0.3) is greater than the
constraining clock period (1.2).
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule IOC-FTP006 –id A0 –reason “None”
write_waiver top.waivers.tcl
Description:
This rule identifies point-to-point “set_false_path” between synchronous clocks with the same
clock period.
Design in figure 3.26.1 below shows timing points reported under rule PPFP-001.
Figure 3.26.1
_ _
D Q D Q
FF1 FF2
clk1 B1 Q Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q D
_
Q Logic
FF3 FF4
Q Q
In the above designs, shows that generated clocks of the same source drive registers with a point-to-
point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-001 Warning 1 0 Sdc.Exception/PPFP-001.rpt pnt-to-pnt set_false_path between sync_same_period
clocks
# ==============================
#
# Design : top
# PPFP-001
# pnt-to-pnt set_false_path between sync_same_period clocks
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path5
----------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-001 -obj1 FP.Fxa3b7d435801354Tx28253c9ae1d9a -obj2 gclk1 -obj3 gclk2 -author "hollis" \
-date "07/30/14" -reason "None"
Description:
This rule identifies point-to-point “set_false_path” between synchronous clocks with clock periods that
are slow-to-fast integral.
Design in figure 3.26.2 below shows timing points reported under rule PPFP-002.
Figure 3.26.2
_ _
D Q D Q
FF1 FF2
clk1 B1 Q Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q Logic
FF3
Q
In the above designs, shows that a divided clocks drive one registers and the undivided clock drives the
other and there is a point-to-point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-002 Warning 1 0 Sdc.Exception/PPFP-002.rpt pnt-to-pnt set_false_path between
sync_slow_to_fast_integral clocks
Sdc.Exception/PPFP-002.rpt :
# ==============================
#
# Design : top
# PPFP-002
# pnt-to-pnt set_false_path between sync_slow_to_fast_integral clocks
# Severity: Warning
#
# ==============================
#
January 2015 205 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# Violations
#
A# Exception
----------------------
A0 set_false_path8
----------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-002 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-002 -obj1 FP.Fxa3b7d435f893feTx28253c9ae3c78 -obj2 gclk1 -obj3 CLK1 -author "hollis" -date "07/30/14" \
-reason "None"
Description:
This rule identifies point-to-point “set_false_path” between synchronous clocks with clock periods that
are slow-to-fast nonintegral.
Figure 3.26.3
_ _
D Q D Q
FF1 FF2
clk1 B1 Q Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q Logic
FF3
Q
In the above designs, shows that a divide_by 3 clocks drive one registers and the undivided clock drives
the other and there is a point-to-point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-003 Warning 1 0 Sdc.Exception/PPFP-003.rpt pnt-to-pnt set_false_path between
sync_slow_to_fast_nonintegral clocks
Sdc.Exception/PPFP-003.rpt
# ==============================
#
# Design : top
# PPFP-003
# pnt-to-pnt set_false_path between sync_slow_to_fast_nonintegral clocks
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path9
----------------------
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-003 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-003 -obj1 FP.Fxa3b7d435f4cd3eTx28253c9adef65 -obj2 gclk1 -obj3 CLK1 -author "hollis" -date "07/30/14" \
-reason "None"
Description:
This rule identifies point-to-point “set_false_path” between synchronous clocks with clock periods that
are fast-to-slow integral.
Design in figure 3.26.4 below shows timing points reported under rule PPFP-004.
_ _
D Q D Q
FF1 FF2
clk1 B1 Q Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q Logic
FF3
Q
In the above designs, shows that a divided clocks drive one registers and the undivided clock drives the
other and there is a point-to-point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-004 Warning 1 0 Sdc.Exception/PPFP-004.rpt pnt-to-pnt set_false_path between
sync_fast_to_slow_integral clocks
Sdc.Exception/PPFP-004.rpt :
# ==============================
#
# Design : top
# PPFP-004
# pnt-to-pnt set_false_path between sync_fast_to_slow_integral clocks
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path7
----------------------
Debug
1) Get the printable attribute of the false path.
tv_shell > get_attribute [get_constraints -id 7] printable
January 2015 209 Ausdia, Inc © 2015
TimeVision Constraints User Guide
set_false_path (tests/check_cons_PPFP_test1.tcl:29:7) -from [get_pins FF3/CK] \
-to [get_pins FF2/D]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-004 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-004 -obj1 FP.Fxa3b7d411f4fe3eTx282373c9adef65 -obj2 gclk1 -obj3 CLK1 -author "hollis" -date "07/30/14" \
-reason "None"
Description:
This rule identifies point-to-point “set_false_path” between synchronous clocks with clock periods that
are fast-to-slow nonintegral.
Design in figure 3.26.5 below shows timing points reported under rule PPFP-005.
_ _
D Q D Q
FF1 FF2
clk1 B1 Q Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q Logic
FF3
Q
In the above designs, shows that a divide_by 3 clocks drive one registers and the undivided clock drives
the other and there is a point-to-point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-005 Warning 1 0 Sdc.Exception/PPFP-005.rpt pnt-to-pnt set_false_path between
sync_fast_to_slow_nonintegral clocks
Sdc.Exception/PPFP-005.rpt :
# ==============================
#
# Design : top
# PPFP-005
# pnt-to-pnt set_false_path between sync_fast_to_slow_nonintegral clocks
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
-----------------------
A0 set_false_path10
-----------------------
Debug
1) Get the printable attribute of the false path.
tv_shell > get_attribute [get_constraints -id 10] printable
set_false_path (tests/check_cons_PPFP_test1.tcl:35:10) -from [get_pins FF3/CK] \
-to [get_pins FF2/D]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-005 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-004 -obj1 FP.Fxa3b8d411f4fa6eTx288933c9adef65 -obj2 gclk1 -obj3 CLK1 -author "hollis" -date "07/30/14" \
-reason "None"
Description:
This rule identifies point-to-point “set_false_path” between clocks that are source synchronous.
Design in figure 3.26.6 below shows timing points reported under rule PPFP-006.
_
D Q
FF2
clk1 B1 B2 Q
create_clock -name CLK1 [get_ports clk1]
D
_
Q Logic
FF3
Q
In the above designs, shows that a divide_by 1 clocks drive one registers and the undivided clock drives
the other and there is a point-to-point false path betwee them.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception PPFP-006 Warning 1 0 Sdc.Exception/PPFP-006.rpt pnt-to-pnt set_false_path between source_sync clocks
Sdc.Exception/PPFP-006.rpt :
# ==============================
# Design : top
# PPFP-006
# pnt-to-pnt set_false_path between source_sync clocks
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
-----------------------
A0 set_false_path11
------------------------
Debug
1) Get the printable attribute of the false path.
tv_shell > get_attribute [get_constraints -id 11] printable
set_false_path (tests/check_cons_PPFP_test1.tcl:35:12) -from [get_pins FF3/CK] \
-to [get_pins FF2/D]
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule PPFP-006 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule PPFP-004 -obj1 FP.Fxa3b83e11f4fa6eTx287733c9adaf65 -obj2 gclk1 -obj3 CLK1 -author "hollis" -date "07/30/14" \
-reason "None"
Description:
This rule identifies clock-to-clock exceptions where the option “-setup” is specified but there is no
matching “-hold” constraint.
Example:
set_false_path -setup -from [get_clocks clk1] -to [get_clocks clk2]
set_multicycle_path 2 -setup -from [get_clocks clk1] -to [get_clocks clk2]
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-01 Error 1 0 Sdc.Exception/SDC-FP-01.rpt Clock-Clock False path -setup not covered by -hold
Sdc.Exception/SDC-FP-01.rpt :
# ==============================
#
# Design : top
# SDC-FP-01
# Clock-Clock False path -setup not covered by -hold
# Severity: Error
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path3
----------------------
Debug
1) Get the printable attribute of the false path.
2) Check the dominant_setup and dominant_hold attribute of the clock pair to confirm no hold
constraint exist.
tv_shell > get_attribute [get_clock_pair -from clk1 -to clk2] dominant_setup
{ set_false_path3 }
tv_shell > get_attribute [get_clock_pair -from clk1 -to clk2] dominant_hold
Nothing is returned, the clock pair does not have a matching setup/hold constraint.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-FP-01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-01 -obj1 FP.Fx28253cae40652Tx28253cae40653 -author "hollis" -date "07/30/14" -reason "None"
January 2015 215 Ausdia, Inc © 2015
TimeVision Constraints User Guide
3.27.2 Rule SDC-FP-02/SDC-MCP-02
- Clock-Clock Exception -hold not covered by -setup
Description:
This rule identifies clock-to-clock exceptions where the option “-hold” is specified but there is no
matching “-setup” constraint.
Example:
set_false_path -hold -from [get_clocks clk1] -to [get_clocks clk2]
set_multicycle_path 2 -hold -from [get_clocks clk2] -to [get_clocks clk3]
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-02 Error 1 0 Sdc.Exception/SDC-FP-02.rpt Clock-Clock False path -hold not covered by -setup
Sdc.Exception/SDC-FP-02.rpt :
# ==============================
#
# Design : top
# SDC-FP-02
# Clock-Clock False path -hold not covered by -setup
# Severity: Error
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path4
----------------------
Debug
1) Get the printable attribute of the false path.
2) Check the dominant_setup and dominant_hold attribute of the clock pair to confirm no hold
constraint exist.
tv_shell > get_attribute [get_clock_pair -from clk1 -to clk2] dominant_setup
Nothing is returned for setup, the clock pair does not have a matching setup/hold constraint.
January 2015 216 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-FP-02 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-02 -obj1 FP.Fx28253cae40653Tx28253cae40654 -author "hollis" -date "07/30/14" -reason "None"
Description:
This rule identifies point-to-point exceptions where the option “-setup” is specified but there is no
matching constraint with option “-hold”.
Example:
set_false_path -setup -from [get_pins f5/CK] -to [get_pins f6/D]
set_multicycle_path 2 -setup -from [get_pins f5/CK] -to [get_pins f6/D]
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception Sdc. SDC-FP-03 Error 1 0 Sdc.Exception/SDC-FP-03.rpt Pt-to-Pt False path -setup not covered by -hold
Sdc.Exception/SDC-FP-03.rpt :
# ==============================
#
# Design : top
# SDC-FP-03
# Pt-to-Pt False path -setup not covered by -hold
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Get the printable attribute of the false path.
Only one exception returned, the one that violates the rule.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-FP-03 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-03 -obj1 FP.Fxa3b7d435801354Tx28253c9ae3c78 -author "hollis" -date "07/30/14" -reason "None"
Description:
This rule identifies point-to-point exceptions where the option “-hold” is specified but there is no
matching constraint with option “-setup”.
Example:
set_false_path -hold -from [get_pins f7/CK] -to [get_pins f8/D]
set_multicycle_path 2 -hold -from [get_pins f7/CK] -to [get_pins f8/D]
Sdc.Exception/SDC-FP-04.rpt :
# ==============================
#
# Design : top
# SDC-FP-04
# Pt-to-Pt False path -hold not covered by -setup
# Severity: Error
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path6
----------------------
Debug
1) Get the printable attribute of the false path.
Only one exception returned, the one that violates the rule.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-FP-04 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-04 -obj1 FP.Fxa3b7d435f893feTx28253c9aedb94 -author "hollis" -date "07/30/14" -reason "None"
Description:
This rule identifies point-to-point “set_false_path” which covers no paths.
Example:
set_false_path -from [get_pins f9/CK] -to [get_pins f10/D]
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-05 Warning 1 0 Sdc.Exception/SDC-FP-05.rpt False path covers no paths
Sdc.Exception/SDC-FP-05.rpt :
# ==============================
#
# Design : top
# SDC-FP-05
# False path covers no paths
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
----------------------
A0 set_false_path7
---------------------- -
Debug
1) Get the printable attribute of the false path.
No path returned.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
Example:
set_waiver -rule SDC-FP-05 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-05 -obj1 FP.Fxa3b7d435b3203bTxa3b7d435903b3a -author "hollis" -date "07/30/14" -reason "None"
Description:
This rule identifies “set_multicycle_path” where the the startpoints and endpoints are clocked by
asynchronous clocks and no “-start” or “-end” is specify.
Example:
set_multicycle_path 2 -setup -from [get_clocks clk1] -to [get_clocks clk2]
In the above example, the set_multicycle_path is specified between asynchronous clock pairs.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-MCP-05 Error 4 0 Sdc.Exception/SDC-MCP-05.rpt Multicycle path covers multiple clocks without -start or
-end specified
Sdc.Exception/SDC-MCP-05.rpt :
# ==============================
#
# Design : top
# SDC-MCP-05
# Multicycle path covers multiple clocks without -start or -end specified
# Severity: Error
#
# ==============================
#
# Violations
#
A# Exception
---------------------------
A0 set_multicycle_path3
A1 set_multicycle_path4
A2 set_multicycle_path5
A3 set_multicycle_path6
---------------------------
Debug
1) Get the printable attribute of the multicycle path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-MCP-05 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-MCP-05 -obj1 MCP.Fx28253cae40652Tx28253cae40653V2 -author "hollis" -date "07/31/14" -reason "None"
Description:
This rule identifies point-to-point “set_multicycle_path” which covers no paths.
Example:
set_multicycle_path 2 -from [get_pins f9/CK] -to [get_pins f10/D]
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-MCP-06 Warning 1 0 Sdc.Exception/SDC-MCP-06.rpt Multicycle path covers no paths
Sdc.Exception/SDC-MCP-06.rpt :
# ==============================
#
# Design : top
January 2015 222 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# SDC-MCP-06
# Multicycle path covers no paths
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception
---------------------------
A0 set_multicycle_path7
---------------------------
Debug
1) Get the printable attribute of the multicycle path.
No path returned.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDC-MCP-06 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-MCP-06 -obj1 MCP.Fxa3b7d435b3203bTxa3b7d435903b3aV2 -author "hollis" -date "07/31/14" -reason "None"
Figure 3.28.1
_
D Q
clk1 B1 Q
In the above designs, the exceptions are applied to the input of the buffer, which is not a timing start
point.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-01 Warning 1 0 Sdc.Exception/SDC-FP-O-01.rpt Startpoint of set_false_path is not a timing startpoint
Sdc.Exception/SDC-FP-O--01.rpt :
# ==============================
# Design : top
# SDC-FP-O-01
# Startpoint of set_false_path is not a timing startpoint
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 B1/A
-----------------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-01 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-01 -obj1 FP.Fxa3b7dbd5a05caf -obj2 B1/A -author "hollis" -date "07/31/14" -reason "None"
Description:
This rule identifies exceptions where the endpoint is defined on an object that is not a timing endpoint.
Example objects that are not timing endpoints are hierarchical pins or combinational cell pins.
Figure 3.28.2
_
D
_
Q D Q
FF1
clk1 Q B1 Q
In the above designs, the exceptions are applied to the input of the buffer, which is not a timing end
point.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-02 Warning 1 0 Sdc.Exception/SDC-FP-O-02.rpt Endpoint of set_false_path is not a timing endpoint
Sdc.Exception/SDC-FP-O--02.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-02
# Endpoint of set_false_path is not a timing endpoint
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 B1/A
-----------------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-02 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-02 -obj1 FP.Txa3b7dbd5a45372 -obj2 B1/A -author "hollis" -date "07/31/14" -reason "None"
_
D Q _
D Q
FF0
FF1
clk1 B1 Q A1
A2
A0 Q
_
D Q _
D Q
FF2
FF3
Q A1
A2
OR1
A0 Q
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-03 Warning 1 0 Sdc.Exception/SDC-FP-O-03.rpt Endpoint of set_false_path is a synthesized timing
endpoint
Sdc.Exception/SDC-FP-O--03.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-03
# Endpoint of set_false_path is a synthesized timing endpoint
# Severity: Warning
#
# ==============================
January 2015 227 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path2 A0/A1
-----------------------------
Debug
1) Get the printable attribute of the false path.
4) Get the is_clock_used_as_data attribute of the pin which is in the clock network to confirm it is used
as data also.
tv_shell > get_attribute [get_pins A0/A2] is_clock_used_as_data
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-03 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-03 -obj1 FP.Txa3b7dbd5a82315 -obj2 A0/A1 -author "hollis" -date "07/31/14" -reason "None"
Figure 3.28.4
_
D Q A1
A4
A2
FF8
clk2 Q
set_false_path -through [get_pins A4/A1]
set_multicycle_path 2 -through [get_pins A4/A1]
set_max_delay 2.1 -through [get_pins A4/A1]
group_path -through [get_pins A4/A1]
In the above designs, the exceptions are applied to the A1 input of the AND gate. The settings
Build/IntentionalCells is set to “.*u_DT.*” however, the AND gate instance name is “A4” which is not in
the intentional cells list.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-04 Warning 1 0 Sdc.Exception/SDC-FP-O-04.rpt Thru-point of set_false_path is a synthesized point
Sdc.Exception/SDC-FP-O--04.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-04
# Thru-point of set_false_path is a synthesized point
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 A4/A1
-----------------------------
January 2015 229 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Debug
1) Get the printable attribute of the false path.
3) Get the settings Build/IntentionalCells value to confirm the AND gate instance name does not
match.
tv_shell > settings Build/IntentionalCells
Note that the AND gate “A4” does not match the settings value.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-04 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-04 -obj1 FP.Xxa3b7dbd5adb2d8 -obj2 A4/A1 -author "hollis" -date "07/31/14" -reason "None"
Description:
This rule identifies exceptions where the thru-point is defined on a hierarchical pin.
_
D Q
FF1
HCLK
clk1 B1 B2 Q
In the above designs, the exceptions are applied to hierarchical pin U1/HCLK.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-05 Warning 1 0 Sdc.Exception/SDC-FP-O-05.rpt Thru-point of set_false_path is a hierarchical pin.
Sdc.Exception/SDC-FP-O--05.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-05
# Thru-point of set_false_path is a hierarchical pin.
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 U1/HCLK
-----------------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-05 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-05 -obj1 FP.Xxd842623698ed1c9a -obj2 U1/HCLK -author "hollis" -date "07/31/14" -reason "None"
Description:
This rule identifies exceptions where the startpoint has no path to the specified endpoint.
_
d2 D Q
FF2
Q
set_false_path -from [get_pins FF*/CK] -to [get_pins FR*/D]
set_multicycle_path 2-from [get_pins FF*/CK] -to [get_pins FR*/D]
January 2015 232 Ausdia, Inc © 2015
TimeVision Constraints User Guide
In the above designs, the exceptions are applied to startpoint FF2/CK, but it has not path to an
endpoint.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-06 Warning 1 0 Sdc.Exception/SDC-FP-O-05.rpt Startpoint of set_false_path covers no paths.
Sdc.Exception/SDC-FP-O-06.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-06
# rpt Startpoint of set_false_path covers no paths
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 FF2/CK
-----------------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-06 –id A0 –reason “None”
write_waiver top.waivers.tcl
Description:
This rule identifies exceptions where the endpoint has no path from the specified startpoint.
Figure 3.28.7
Endpoint of exception covers no paths
No path to FR2
_ _
d1 D Q D Q
FF1 FR1
clk2 Q Q
_
D Q
FR2
Q
In the above designs, the exceptions are applied to endpoint FR2/D, but it has not path from the
specified startpoint.
Reports: (Only false path will be used as an example)
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-07 Warning 1 0 Sdc.Exception/SDC-FP-O-07.rpt Endpoint of set_false_path covers no paths.
Sdc.Exception/SDC-FP-O-07.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-07
# rpt Endpoint of set_false_path covers no paths
# Severity: Warning
#
# ==============================
#
# Violations
#
Debug
1) Get the printable attribute of the false path.
In this case no path is returned, however, it is possible that other paths could exist from FR2/D but
none would match the false path -to objects.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-07 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-07 -obj1 FP.Fxbcefbccbe696b337Tx1b679a404e4b51a0 -obj2 FR2/D -author "hollis" -date "07/31/14"\
-reason "None"
3.28.8 Rule SDC-FP-O-08/SDC-MCP-O-08
- More that 25% of startpoints in exception covers no paths.
Description:
This rule identifies exceptions where the startpoints have no path to at least 25% of the specified
endpoints.
_
d2 D Q
FF2
Q
_
d3 D Q
FF3
Q
_
d4 D Q
FF4
Q
set_false_path -from [get_pins FF*/CK] -to [get_pins FR*/D]
set_multicycle_path 2-from [get_pins FF*/CK] -to [get_pins FR*/D]
In the above designs, the exceptions are applied to startpoint where 3 of the 4 startpoint registers have
not path to the specified endpoints.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-08 Warning 1 0 Sdc.Exception/SDC-FP-O-08.rpt More that 25% of startpoints in exception covers no
paths..
Sdc.Exception/SDC-FP-O-08.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-08
# rpt More that 25% of startpoints in exception covers no paths.
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Percent
January 2015 236 Ausdia, Inc © 2015
TimeVision Constraints User Guide
-----------------------------
A0 set_false_path3 75%
-----------------------------
Debug
1) Get the printable attribute of the false path.
In this case there are 4 startpoint registers but only 1 endpoint register.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-08 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-08 -obj1 FP.Fxb72fb92c2352b298Tx536aa9ac6396a765 -obj2 75% -author "hollis" -date "07/31/14"\
-reason "None"
_
D Q
FR2
Q
_
D Q
FR3
Q
_
D Q
FR4
Q
In the above designs, the exceptions are applied to endpoint where 3 of the 4 endpoint registers have
not path to the specified startpoints.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-09 Warning 1 0 Sdc.Exception/SDC-FP-O-09.rpt More that 25% of endpoints in exception covers no
paths.
Sdc.Exception/SDC-FP-O-09.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-09
# rpt More that 25% of endpoints in exception covers no paths.
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Percent
-----------------------------
A0 set_false_path3 75%
-----------------------------
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule SDF-FP-O-09 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule SDC-FP-O-09 -obj1 FP.Fx536aa9abad006e15Tx3d64ef925baa1cb -obj2 75% -author "hollis" -date "07/31/14"\
-reason "None"
Description:
This rule identifies exceptions as through a sequential element.
_ _
D Q D Q
FF1 FF2
clk1 Q Q
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-FP-O-11 Warning 1 0 Sdc.Exception/SDC-FP-O-11.rpt set_false_path -through sequential element.
Sdc.Exception/SDC-FP-O-11.rpt :
# ==============================
#
# Design : top
# SDC-FP-O-11
# rpt set_false_path -through sequential element.
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Exception Point
-----------------------------
A0 set_false_path3 FF1
-----------------------------
Debug
1) Get the printable attribute of the false path.
Waivers
Any reported violation can be waived using the “set_waiver” command.
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
top.waivers.tcl
set_waiver -rule SDC-FP-O-11 -obj1 FP.Xxa16fb57b1db -obj2 FF1 -author "hollis" -date "07/31/14" -reason "None"
Description:
This rule identifies any SDC command unknown to Timevision and requires the constraints to be loaded
with “read_sdc” command. Sourcing Tcl constraints with “source” command will not trigger this rule to
violate even though the command is unknown by Timevision. Instead, an error message is emitted to
the shell and the log file.
Note the SDC command “set_input_noise” is unknown to Timevision. When the content of the SDC file
is loaded with the command “read_sdc” this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Exception SDC-LNTC-01 Warning 1 0 Sdc.Lint/SDC-LNTC-01.rpt Unknown command in SDC
Sdc.Lint/SDC-LNTC--01.rpt :
# ==============================
# Design : top
# Date : Thu Jun 04 01:17:11 PM PDT 2015
#
# SDC-LNTC-01
# Unknown command in SDC
# Severity: Warning
# ==============================
#
# Violations
#
A# Command
-------------------------
A0 set_unknown_check1
-------------------------
List of constraints/node:
set_unknown_check1 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command which the user has specified as “not_allowed”. The user specifies
the “not_allowed” commands by setting the variable “user_sdc_control”.
Example command:
set user_sdc_control [dic create "create_generated_clock" [dict create "not_allowed" "1" ]]
Note the SDC command “create_generated_clock” will be flagged as “not_allowed”. When the content
of the SDC file is loaded with the command “read_sdc” this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTC-02 Warning 1 0 Sdc.Lint/SDC-LNTC-02.rpt User-disallowed command in SDC
Sdc.Lint/SDC-LNTC--02.rpt :
A# Command Options
------------------------
A0 div2_clk
------------------------
Debug
List of constraints/node:
div2_clk (generated clock)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where an unknown option is used in an SDC command.
Note the SDC command option “-fast” is an unknown option for “set_multicycle_path”. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-01 Warning 1 0 Sdc.Lint/SDC-LNTO-01.rpt Unknown option to command
Sdc.Lint/SDC-LNTO--01.rpt :
# ==============================
# Design : top
# Date : Thu Jun 04 02:40:43 PM PDT 2015
#
# SDC-LNTO-01
# Unknown option to command
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Option
-----------------------------------
A0 set_multicycle_path0 fast
-----------------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
set_multicycle_path0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command option which the user has specified as “not_allowed”. The user
specifies the “not_allowed” options by setting the variable “user_sdc_control”.
Example command:
set user_sdc_control [dict create "create_clock" [dict create "waveform" "not_allowed"] \
"set_clock_groups" [dict create "physically_exclusive" "not_allowed"]]
Sample SDC content:
create_clock -name clk1 -period 3.9 -waveform {0.0 3.45} [get_ports clk1]
create_clock -name clk2 -period 6.9 [get_ports clk2]
create_clock -name clk3 -period 1.9 [get_ports clk3]
set_clock_groups -physically_exclusive -group {clk2} -group {clk3}
Note the SDC command options “-waveform” and “-physically_exclusive” will be flagged as
“not_allowed”. When the content of the SDC file is loaded with the command “read_sdc” this rule will
violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
---------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-02 Warning 2 0 Sdc.Lint/SDC-LNTO-02.rpt User-disallowed option to command
Sdc.Lint/SDC-LNTO--02.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTO-02
# User-disallowed option to command
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Option
---------------------------------------------
A0 clk1 waveform
A1 set_clock_group1 physically_exclusive
---------------------------------------------
Debug
List of constraints/node:
clk1 (clock)
# ==============================
Violation A1
List of constraints/node:
set_clock_group1 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a required option is missing in an SDC command.
Note the SDC command option “-from/-to/-through” are missing for “set_multicycle_path”. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-03 Warning 1 0 Sdc.Lint/SDC-LNTO-03.rpt Missing required option
Sdc.Lint/SDC-LNTO--03.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 03:52:30 PM PDT 2015
#
# SDC-LNTO-03
# Missing required option
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Option
-----------------------------------
A0 set_multicycle_path0 <NULL>
-----------------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
set_multicycle_path0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where mutually exclusive options are used in an SDC command.
Note the SDC command option “-logically_exclusive and async” are mutually exclusive and cannot be
used in the same “set_clock_groups” command. When the content of the SDC file is loaded this rule
will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-04 Error 1 0 Sdc.Lint/SDC-LNTO-04.rpt Overlapping mutially-exclusive options
Sdc.Lint/SDC-LNTO--04.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 04:11:06 PM PDT 2015
#
# SDC-LNTO-04
# Overlapping mutially-exclusive options
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Use debug_rule command.
List of constraints/node:
set_clock_group0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where an options is used multiple times in an SDC command.
Some examples of exceptions to this rule are:
set_clock_group -group -group
set_false_path -through -through
Note the SDC command option “-async” is used two times in the same “set_clock_groups” command.
When the content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-05 Warning 1 0 Sdc.Lint/SDC-LNTO-05.rpt Multiple usage of same option
Sdc.Lint/SDC-LNTO-05.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 04:36:14 PM PDT 2015
#
# SDC-LNTO-05
# Multiple usage of same option
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Option
-------------------------------------
A0 set_clock_group2 asynchronous
-------------------------------------
January 2015 249 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Debug
1) Use debug_rule command.
List of constraints/node:
set_clock_group2 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where an options is used and another option is required in an
SDC command.
Note : for generated clocks to violate this rule the following must be set:
settings Clock/StrickGeneratedClockCheck true
create_generated_clock -name clk3_g1 -add -source [get_ports clk3] -comb -div 1 [get_pins c2/Z]
create_generated_clock -name clk3_g2 -master_clock [get_clocks clk3] -source [get_ports clk3] \
-comb -div 1 [get_pins c2/Z]
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-06 Error 2 0 Sdc.Lint/SDC-LNTO-06.rpt Option requires another option when used
Sdc.Lint/SDC-LNTO-06.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTO-06
# Option requires another option when used
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Use debug_rule command.
List of constraints/node:
clk3_g1 (generated clock)
List of constraints/node:
clk3_g2 (generated clock)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where an options is specified however, the abbreviated option
matches other option in the SDC command.
Note in “set_max_delay” command option “-ri” is ambiguous because it matches implies other options
starting with “ri”. When the content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTO-07 Error 1 0 Sdc.Lint/SDC-LNTO-07.rpt Ambiguous option used
Sdc.Lint/SDC-LNTO-07.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTO-07
# Ambiguous option used
# Severity: Error
#
# ==============================
#
January 2015 252 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# Violations
#
A# Command Option
-----------------------------
A0 set_max_delay0 ri
-----------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
set_max_delay0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a required value is missing in an SDC command.
Note the SDC command “set_multicycle_path” is missing the number of cycles. When the content of
the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
January 2015 253 Ausdia, Inc © 2015
TimeVision Constraints User Guide
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTV-01 Warning 1 0 Sdc.Lint/SDC-LNTV-01.rpt Missing required value
Sdc.Lint/SDC-LNTV--01.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 04:54:16 PM PDT 2015
#
# SDC-LNTV-01
# Missing required value
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Value
---------------------------------------
A0 set_multicycle_path0 multiplier
---------------------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
set_multicycle_path0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where an invalid value is used in an SDC command.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTV-02 Warning 1 0 Sdc.Lint/SDC-LNTV-02.rpt Invalid value provided.
Sdc.Lint/SDC-LNTV--02.rpt :
==============================
#
# Design : top
# Date : Thu Jun 04 05:03:00 PM PDT 2015
#
# SDC-LNTV-02
# Invalid value provided.
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Command Value
---------------------------------------
A0 set_multicycle_path0 multiplier
---------------------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
set_multicycle_path0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a specified value is beyond the limits required of that
value in an SDC command.
Note the SDC command “create_generated_clock” the “-duty_cycle” value “400” is out og range
because the value cannot be more than 100. When the content of the SDC file is loaded this rule will
violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTV-03 Error 1 0 Sdc.Lint/SDC-LNTV-03.rpt Value out of range..
Sdc.Lint/SDC-LNTV--03.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 05:13:26 PM PDT 2015
#
# SDC-LNTV-03
# Value out of range.
# Severity: Error
#
# ==============================
#
# Violations
#
A# Command Value
-----------------------------
A0 clk2_mult3 duty_cycle
-----------------------------
Debug
1) Use debug_rule command.
List of constraints/node:
clk2_mult3 (generated clock)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a specified list is empty or incorrect in an SDC command.
This rule specifically looks for list in “{}”.
Note the SDC command “create_generated_clock” the “-edges” incorrectly has four edges in the list
when three are required. When the content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTV-04 Error 1 0 Sdc.Lint/SDC-LNTV-04.rpt Value list empty or incorrect value count.
Sdc.Lint/SDC-LNTV--04.rpt :
# ==============================
#
# Design : top
# Date : Thu Jun 04 05:27:00 PM PDT 2015
#
# SDC-LNTV-04
# Value list empty or incorrect value count.
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Use debug_rule command.
List of constraints/node:
clk2_div2 (generated clock)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a single specified object cannot be found.
Note the SDC command “set_max_delay” object “f1/q” cannot be found in the database. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTR-01 Warning 1 0 Sdc.Lint/SDC-LNTR-01.rpt Object cannot be found (single).
Sdc.Lint/SDC-LNTR--01.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTR-01
# Object cannot be found (single).
# Severity: Warning
#
# ==============================
#
# Violations
#
Debug
List of constraints/node:
set_max_delay3 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where multiple object cannot be found specified with a wildcard
“*”.
Note the SDC command “set_multicycle_path” object “gclk*” cannot be found in the database. When
the content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTR-02 Warning 1 0 Sdc.Lint/SDC-LNTR-02.rpt Object cannot be found (wildcard).
Sdc.Lint/SDC-LNTR--02.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTR-02
# Object cannot be found (wildcard).
# Severity: Warning
#
# ==============================
#
# Violations
#
Debug
List of constraints/node:
set_multicycle_path3 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a specified object type is incorrect in an SDC command.
Note the SDC command “set_false_path” is incorrectly being set on object type “nets”. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTR-04 Error 1 0 Sdc.Lint/SDC-LNTR-04.rpt Incorrect object value type.
Sdc.Lint/SDC-LNTR--04.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTR-04
# Incorrect object value type
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
List of constraints/node:
set_false_path0 (constraint)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a specified object argument is empty in an SDC
command.
Note the SDC command “create_clock” has “[get_ports {}]”, where the port object is empty. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTR-05 Error 1 0 Sdc.Lint/SDC-LNTR-05.rpt Empty objects argument.
Sdc.Lint/SDC-LNTR--5.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTR-05
# Empty collection argument
# Severity: Error
#
# ==============================
#
# Violations
#
A# Command Option Specification
----------------------------------------------
A0 clk2 objects objects are empty :
----------------------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any SDC command where a specified object argument has an incorrect number of
objects than required in an SDC command.
Note the SDC command “create_generated_clock” has “-source [get_ports clk*]”. From the constraints
above the generated clock would have two sources, ports “clk1 and clk2”, which is incorrect. When the
content of the SDC file is loaded this rule will violate.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-LNTR-06 Error 1 0 Sdc.Lint/SDC-LNTR-06.rpt Incorrect number of objects.
Sdc.Lint/SDC-LNTR--06.rpt :
# ==============================
#
# Design : top
#
# SDC-LNTR-06
# Incorrect number of objects
January 2015 263 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# Severity: Error
#
# ==============================
#
# Violations
#
Debug
1) Use debug_rule command.
List of constraints/node:
clk2_div2 (generated clock)
# ==============================
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies identifies create_clocks or create_generated_clocks which are not connected to a
legimitate sink. Legitimate sinks are:
1) Clock pin of registers
2) Clock pin of macros
3) Clock pin of ICG
4) The source of another clock application point
5) A port
Design in figure 3.10.3 below shows timing points reported under rule CLK-OBJ001
Figure 3.10.3a
Figure 3.10.3b
tclk tb0
Figure 3.10.3c
In the above designs, Figure 3.10.3a violates because it a floating port with a clock applied, Figure
3.10.3b violates because the clock source does not drive any clock pins or a port, and in Figure 3.10.3c
the generated clock violates because it does drive any clock pins or a port.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Clock CLK-SNK001 Warning 1 0 Sdc.Clock/CLK-SNK001.rpt clock has no sink.
Sdc.Clock/CLK-SNK001.rpt :
# Rule: CLK-SNK001
# Severity: Warning
# ==============================
#
# Design : top
# CLK-SNK001
# clock has no sink
#
A# Clock Clock ID
----------------------------
A0 TCLK 0
----------------------------
Usage:
set_waiver –rule <rule_name> -id <annotation ID of the violation>
After all waivers are specified for all rules and ID’s, a complete waivers Tcl command file must be
written out before exiting “tv_shell”. This waivers Tcl file is sourced in future timevision runs.
Example:
set_waiver -rule CLK-SNK001 –id A0 –reason “None”
write_waiver top.waivers.tcl
top.waivers.tcl
set_waiver -rule CLK-SNK001 -obj1 TCLK -author "hollis" -date "05/06/15" -reason "None"
Description:
This rule identifies identifies pins or ports where set_clock_latency is defined, however, the pin or port
is not in the clock tree of the specified clock. For example, datapath pins are usually not part of the
clock tree, or, a specifying pin is in a clock tree different from the clock specified in the
set_clock_latency command.
Design in figure 3.29.20 below shows a pins reported under rule CLK-LAT01
Figure 3.29.20
_
din D Q
f1
clk1 b1 Q
In the above design, Figure 3.29.20 violates because a set_clock_latency is defined for the “D” pin of a
register, which is not in the clock tree.
January 2015 266 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-LAT01 Warning 1 0 Sdc.Lint/CLK-LAT01.rpt port/pin with latency for clock that is not part of clock tree.
Sdc.Clock/CLK-LAT01.rpt :
# ==============================
#
# Design : top
#
# CLK-LAT01
# port/pin with latency for clock that is not part of clock tree
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Latency Point
--------------------------------
A0 set_clock_latency2 f1/D
--------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies identifies generated clocks which has a source latency less than the source latency
of its master clock.
Design in figure 3.29.21 below shows a pins reported under rule CLK-LAT02
Figure 3.29.21
create_generated_clock -name clk2_div2 -divide_by 2 -source [get_ports clk2] -master [get_clocks clk2] [get_pins f1/Q]
set_clock_latency 0.3 -source [get_clocks clk2_div2]
_ _
D
_
din D Q D Q Q
f1 f2 f3
clk2 b1 Q Q Q
In the above design, Figure 3.29.21 violates because a source latency of 0.3 for generated clock
“clk2_div2” is less than source latency of “1.3” for its master “clk2”.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-LAT02 Warning 1 0 Sdc.Lint/CLK-LAT02.rpt source latency for generated clock less than master clock source
latency
Sdc.Clock/CLK-LAT02.rpt :
# ==============================
#
# Design : top
#
# CLK-LAT02
# source latency for generated clock less than master clock source latency
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies identifies set_clock_latency where “-min” is greater than “-max” or “-early” is
greater than “-late”, which is inconsistent.
Design in figure 3.29.22 below shows a pins reported under rule CLK-LAT03
Figure 3.29.23
_
din D Q
f1
clk2 b1 Q
In the above design, Figure 3.29.22 violates because the “-max” latency of 0.3 is less than “-min”
latency of “1.3” for clock “clk2”.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-LAT03 Warning 1 0 Sdc.Lint/CLK-LAT03.rpt inconsistent latency specified (min > max | early > late)
Sdc.Clock/CLK-LAT03.rpt :
# ==============================
#
# Design : top
#
# CLK-LAT03
# inconsistent latency specified (min > max | early > late)
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies identifies set_clock_latency where the value is negative.
Design in figure 3.29.23 below shows a pins reported under rule CLK-LAT04
January 2015 269 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Figure 3.29.23
_
din D Q
f1
clk2 b1 Q
In the above design, Figure 3.29.23 violates because the latency of “-1.3” for clock “clk2”.
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-LAT04 Warning 2 0 Sdc.Lint/CLK-LAT04.rpt negative latency value
Sdc.Clock/CLK-LAT04.rpt :
# ==============================
#
# Design : top
#
# CLK-LAT04
# negative latency value
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_uncertainty commands set on any object other than a clock.
Note the SDC command “set_clock_uncertainty” is set on port “clk2”. Even though there is a clock
“clk2” this willviolate because the object type is port.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-UNC01 Warning 1 0 Sdc.Lint/CLK-UNC01.rpt uncertainty set for object not a clock.
Sdc.Lint/SDC-UNC01.rpt :
# ==============================
#
# Design : top
#
# CLK-UNC01
# uncertainty set for object not a clock
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Uncertainty Object
-------------------------------------
A0 set_clock_uncertainty2 clk2
-------------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_uncertainty where the uncertainty time is greater than the available clock
time.
Note the SDC command “set_clock_uncertainty” is set to 7.1 for clock “clk2” while the clock period is
6.9.
January 2015 271 Ausdia, Inc © 2015
TimeVision Constraints User Guide
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-UNC02 Warning 1 0 Sdc.Lint/CLK-UNC02.rpt uncertainty greater than available clock time
Sdc.Lint/SDC-UNC02.rpt :
# ==============================
#
# Design : top
#
# CLK-UNC02
# uncertainty greater than available clock time
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_uncertainty where certain options are used which require other options
or a matching set_clock_uncertainty of the opposite timing type.
For example “set_clock_unceratinty -setup” might require “set_clock_uncertainty -hold”, otherwise it
might be incomplete.
Note the SDC command “set_clock_uncertainty –rise -from” causes timevision to violate this rule
because “-fall, -setup, and –hold” are also expected.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint/SDC-UNC03.rpt :
# ==============================
#
# Design : top
#
# CLK-UNC03
# incomplete uncertainty specified
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Uncertainty Relationship
-----------------------------------------------
A0 clk2 missing -fall -setup -hold
-----------------------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_uncertainty where the uncertainty time is a negative value.
Note the SDC command “set_clock_uncertainty” is set to “-0.5” for clock “clk2”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-UNC04 Warning 1 0 Sdc.Lint/CLK-UNC04.rpt negative uncertainty value
Sdc.Lint/SDC-UNC04.rpt :
# ==============================
#
# Design : top
#
# CLK-UNC04
# negative uncertainty value
# Severity: Warning
#
Description:
This rule identifies create_clock or create_generated_clock constraints which are overridden by
another clock applied at the same point with the same name, independent of “-add”.
Note the SDC command the second create_clock overrides the first at application point port “clk1”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-OVR01 Warning 1 0 Sdc.Lint/CLK-OVR01.rpt clock is overridden by another clock with same name
Sdc.Lint/CLK-OVR01.rpt :
# ==============================
#
# Design : top
#
# CLK-OVR01
# clock is overridden by another clock with same name
# Severity: Warning
#
# ==============================
#
# Violations
#
Description:
This rule identifies create_clock or create_generated_clock constraints which are overridden by
another clock applied at the same point with different name and “-add” was not used so the clock
defined first is completely overridded by the last clock applied.
Note the SDC command the second create_clock “pclk” overrides the first clock “clk1”at application
point.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-OVR02 Warning 1 0 Sdc.Lint/CLK-OVR02.rpt clock is overriden because another clock defined at
same point without -add
Sdc.Lint/CLK-OVR02.rpt :
# ==============================
#
# Design : top
#
# CLK-OVR02
# clock is overriden because another clock defined at same point without -add
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
January 2015 275 Ausdia, Inc © 2015
TimeVision Constraints User Guide
This rule identifies any virtual clock mapped to a real clock and the virtual clock period does not match
the real clock period.
Note the SDC command the virtual clock “clk1_v” has a period of 7.9 but the real clock has a period of
6.9.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-VRT01 Warning 1 0 Sdc.Lint/CLK-VRT01.rpt virtual mapped clock does not have same period as real
Sdc.Lint/CLK-VRT01.rpt :
# ==============================
#
# Design : top
#
# CLK-VRT01
# virtual mapped clock does not have same period as real
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies any virtual clock mapped to a real clock and the virtual clock period does not match
the real clock period.
Note the SDC command the virtual clock “dummy_clk1_v” has a period of 0.0 but the real clock has a
period of 6.9 so the virtual clock will not map to a real clock.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-VRT02 Warning 1 0 Sdc.Lint/CLK-VRT02.rpt virtual clock has no corresponding real clock
Sdc.Lint/CLK-VRT02.rpt :
# ==============================
#
# Design : top
#
# CLK-VRT02
# virtual clock has no corresponding real clock
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Virtual Clock
--------------------
A0 dummy_clk1_v
--------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_transition where “-min” value is greater than “-max” value.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-TRN01 Warning 1 0 Sdc.Lint/CLK-TRN01.rpt inconsistent set_clock_transition options (min > max)
Sdc.Lint/CLK-TRN01.rpt :
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies incomplete set_clock_transition where “-min” exist but no “-max”, or “-rise” exist
but no “-fall”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-TRN02 Warning 2 0 Sdc.Lint/CLK-TRN02.rpt incomplete set_clock_transition values
(-rise without -fall or -min without -max)
Sdc.Lint/CLK-TRN02.rpt :
# ==============================
#
# Design : top
#
# CLK-TRN02
# incomplete set_clock_transition values (-rise without -fall or -min without -max)
# Severity: Warning
#
# ==============================
#
# Violations
January 2015 278 Ausdia, Inc © 2015
TimeVision Constraints User Guide
#
A# Transition Type
---------------------------------
A0 clk1 missing -fall
A1 clk2 missing -fall
---------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies set_clock_transition with negative transition value.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint CLK-TRN03 Warning 1 0 Sdc.Lint/CLK-TRN03.rpt negative set_clock_transtiion
Sdc.Lint/CLK-TRN03.rpt :
# ==============================
#
# Design : top
#
# CLK-TRN03
# negative set_clock_transtiion
# Severity: Warning
#
# ==============================
#
# Violations
#
Description:
This rule identifies constrained outputs which are missing a “set_load” constraint.
Description:
This rule identifies constrained outputs which has a “set_load -min” constraint but missing “set_load –
max” constraint.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint IO-LD-02 Warning 2 0 Sdc.Lint/IO-LD-02.rpt incomplete load options (no -min with -max for example)
Sdc.Lint/IO-LD-02.rpt :
# ==============================
#
# Design : top
#
# IO-LD-02
# incomplete load options (no -min with -max for example)
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies constrained outputs which has a “set_load -min” constraint greater than “set_load –
max” constraint.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint IO-LD-03 Warning 2 0 Sdc.Lint/IO-LD-03.rpt inconsistent load values (min>max)
Sdc.Lint/IO-LD-03.rpt :
# ==============================
#
# Design : top
#
# IO-LD-03
# inconsistent load values (min>max)
# Severity: Warning
#
# ==============================
#
# Violations
#
A# Max Load Min Load Node
----------------------------------
A0 set_load6 set_load5 io1
A1 set_load4 set_load3 dout1
----------------------------------
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies constrained outputs which has a “set_load” constraint greater outside the
characterized parameters in the liberty model.
Description:
This rule identifies a “set_max_delay -rise” constraint but missing “set_max_delay -fall”, or a
“set_max_delay -fall” but missing “set_max_delay -rise”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-MD-01 Warning 2 0 Sdc.Lint/SDC-MD-01.rpt incomplete set_max_delay
Sdc.Lint/SDC-MD-01.rpt :
# ==============================
#
# Design : top
#
January 2015 282 Ausdia, Inc © 2015
TimeVision Constraints User Guide
# SDC-MD-01
# incomplete set_max_delay
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.
Description:
This rule identifies a “set_min_delay -rise” constraint but missing “set_min_delay -fall”, or a
“set_min_delay -fall” but missing “set_min_delay -rise”.
Reports:
Sdc.Qor_Fails.rpt:
Category Rule Sev'ty #'Vios #'Waived Report Description
-----------------------------------------------------------------------------------------------------------------------------------------------------
Sdc.Lint SDC-ND-01 Warning 2 0 Sdc.Lint/SDC-ND-01.rpt incomplete set_min_delay
Sdc.Lint/SDC-ND-01.rpt :
# ==============================
#
# Design : top
#
# SDC-ND-01
# incomplete set_min_delay
# Severity: Warning
#
# ==============================
#
# Violations
#
Waivers
SDC Lint rule violations cannot be waived. The user must fix the violation.