Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

CDC Signoff using SDC

Ravindra Nibandhe
Rangarajan Govindan
July 2018

© 2018 Synopsys, Inc. 1


Agenda

Clock Domain Crossing (CDC) analysis methodology overview

CDC analysis with Synopsys Design Constraints (SDC) – challenges and solutions

Running SpyGlass CDC analysis with SDC

© 2018 Synopsys, Inc. 3


CDC Signoff Methodology
RTL SDC

CDC Analysis
Identify clock domains
CDC
Identify CDC paths Setup
Identify synchronizers
Persistent Interactive
Violation
Database Advanced CDC Checks
Divergence / Re-convergence

Reset Check

CDC Reporting Report

TCL Debug GUI Debug


(Design & CDC query) (violation browser, Schematic)

© 2018 Synopsys, Inc. 4


Defining CDC Setup

• CDC analysis requires all flops to be receiving clock attributes

• Remove unwanted violations due to converging clocks

• Complete CDC analysis for reset synchronization and Reset Domain Crossing flops with
async reset to receive reset attributes

© 2018 Synopsys, Inc. 5


Defining CDC Setup
Missing Clock Definitions

Black-
Box

Missing clock definitions!


Reported by rule Clock_info03a

© 2018 Synopsys, Inc. 6


Why Constrain Clock MUXes?
MUX *not* configured for specific operational mode

• Source of crossing drives a merged domain, ‘domain1,domain2’


• Merged domain will never match destination domain ‘domain1’
domain1
• Will always produce “unsynchronized” violation!

Ac_unsync01 flags unsynchronized


Clock_info05 flags clocks converging on
destination
MUX

Unconstrained clock MUXes prevent CDC closure

Debug Data confirms Source flop


drives merged domain

Debug Data shows clocks propagate


© 2018 Synopsys, Inc. 7 individually to Source flop
Why Constrain Clock MUXes?
MUX configured for specific operational mode

• Operational mode (scenario) #1 • Operational mode (scenario) #2


– MUX selects ‘clk2’  Ac_unsync01 violation – MUX selects ‘clk1’  no violation

set_case_analysis -name ffsel_reg.Q -value 1 set_case_analysis -name ffsel_reg.Q -value 0

Constrained clock MUXes enable CDC closure

Debug Data confirms Source Debug Data confirms Source domain


domain does *not* match matches destination domain  no
destination domain  crossing
unsynchronized crossing

© 2018 Synopsys, Inc. 8


Defining CDC Setup
Missing Reset Definitions

A
Y
B

sel=0

Missing reset definitions!


Reported by rule Reset_info09a. Ability to report common reset.

© 2018 Synopsys, Inc. 9


Defining CDC Setup
Defining quasi static signals

© 2018 Synopsys, Inc. 10


Agenda

CDC analysis methodology overview

CDC analysis with SDC – challenges and solutions

Running SpyGlass CDC analysis with SDC

© 2018 Synopsys, Inc. 11


CDC Analysis With SDC Is Very Attractive
Motivations

• Ensures consistency and maintains design intent across tools


– Same SDC for many tools – PrimeTime, Design Compiler and SpyGlass CDC

• Robust use model


– Describes clock relationships easily and flexibly
– Uses rich set of design query commands for streamlined programmatic constraining

• Very familiar across design community


– Represents industry standard
– Uses TCL shell

Ensures reuse of constraints across various stages!

© 2018 Synopsys, Inc. 12


SDC for CDC has challenges!
Overview

• SDC clock paradigm is different than in SGDC


• SDC missing commands for CDC analysis
– Constraints for resets, quasi-static signals, glitchy and convergent sources, control and data synchronization, etc.
– Constraints for boundary condition attributes – synchronizers, combinational logic, etc.
• SDC contains many commands that are not pertinent to CDC
– Maintaining and using SDC for CDC becomes unnecessarily complex
• SDC often available later in design cycle – fine for subsystem, bad for block-level analysis
• SDC typically written and maintained for gate-level netlists, not RTL

Challenges? Here is the guidance!

© 2018 Synopsys, Inc. 13


Considerations on using SDC for CDC

SDC Reading

Understanding
Constraints
Clock
Interpretation
Propagation

Name Mapping

© 2018 Synopsys, Inc. 14


CDC analysis with SDC – challenges and solutions

Understanding Clock Relationship

© 2018 Synopsys, Inc. 15


Synchronous vs. Asynchronous Paradigms
SDC clocks vs. SGDC clocks

SDC assumes synchronous clocks SGDC assumes asynchronous clocks


• Must define *asynchronous* exceptions • Must define *synchronous* exceptions
set_clock_groups, set_false_path clock -domain
• Two asynchronous clocks … • Two synchronous clocks …
block.sdc block.sgdc
create_clock -name c1 [get_pin c1]
clock -name c1; #assumed domain c1
create_clock -name c2 [get_pin c2]
clock -name c2; #assumed domain c2

• … will be mistakenly assumed synchronous • … will be mistakenly assumed asynchronous


without the following command without the following additions
block.sdc block.sgdc

clock -name c1 -domain d0
set_clock_groups -async \
clock -name c2 -domain d0
-group c1 -group c2
Ensure that ALL asynchronous clock relationships are
explicitly defined in SDC when used for CDC analysis!
© 2018 Synopsys, Inc. 16
Understanding Clock Relationship

• set_false_path across clocks will enable the CDC analysis


• set_false_path across flops is not supported

Use set_clock_group –async instead of false paths (Consistent results)


Examine the Clock Matrix to see “synchronous” clocks to make sure nothing is missed

© 2018 Synopsys, Inc. 17


Understanding Clock Relationship
Logically Exclusive Clocks

© 2018 Synopsys, Inc. 18


Understanding Clock Relationship

• Be careful of clock_sense since it can cause missed violations


– This constraint will stop a clock from propagating
– It is often used on clock muxes to stop a test clock instead of using
set_case_analysis
– But a PT user could use it to stop other async clocks by accident

CKSGDCInfo.rpt from CDC analysis will list all clock_sense constraints

© 2018 Synopsys, Inc. 19


CDC analysis with SDC – challenges and solutions

Name Mapping

© 2018 Synopsys, Inc. 20


Pin Name Mismatch for Inferred Registers
• Register pin names in an SDC constraint are typically given to
match
the associated pin names in the target technology library (.lib file)
• Consider, the clock pin for all flip-flops in the .lib file are known to
be CLK
• SpyGlass, however, has its own set of conventions, including the
clock pin of an inferred RTL register to be “CP”, so that the
following constraint will fail:
set_false_path –from i_gen_clk/CLK

In order for SpyGlass to understand you’ll need to add the


SGDC command mapped_pin_map.
– See the documentation for mapped_pin_map to see all of the pin
names that may be modified.

mapped_pin_map –clock CLK


mapped_pin_map –out q

© 2018 Synopsys, Inc. 21


SDC Mismatch Violations
• How to determine what SpyGlass thinks instances are called
inside the SDC context
– Sometimes this is different than SGDC context 
– Example: SpyGlass can’t find an object that exists in SDC file
set_false_path –from mid/myregs/q_out[3]/CP

• Debug Steps
– Use Instance Browser of SpyGlass GUI.
– The hierarchy or pin name could be different
– Or Add the following to your SDC file and capture the stdout
– Replace the non-alphanumeric characters with wildcards to more likely
achieve a match.
set myinst [get_cell mid/myregs/q_out*]
sdc_puts “\n\n####### instance names are:\n”
sdc_puts “$myinst\n\n\n########\n\n”

• For faster turn around you can create a goal that only
contains the rule SDCPARSE

© 2018 Synopsys, Inc. 22


Escaped Names in Verilog

• Names that are escaped by necessity in Verilog (and SpyGlass) should not be escaped in the
SDC

• For example, suppose in instance i1 one has the following instantiation:


mymod \mycell[0] (.A(la), .Z(lz));

• The temptation would be to write the constraint as below with a space after the bracket.
set_false_path –from i1/\mycell[0]{space} /Z

• The correct form is (without using renaming – more on this later)


set_false_path –from i1/mycell[0]/Z

© 2018 Synopsys, Inc. 23


SytemVerilog vs. V2K Unlabeled Generate Blocks
For generated blocks, such as the below:
generate begin • Labels are pre-pended to the instance name, separated by “.”. Each
if (1) begin : g01 begin/end pair inside is considered a “labeled” block, either implicitly
flop u0 (.d(d[0]), .q(q[0]), .ck(ck)); or explicitly
end • In the example shown here, the outer begin/end pair has an implicit
end label
endgenerate • The 2nd begin/end pair has an explicit label, “g01”

• For Verilog 2K only the explicit label is • For SystemVerilog, an implicit label is produced in
part of the instance name the form “genblk#”. Where # is the number of the
– So the example shown above will have an
generated block in the module.
instance that looks like: g01.u0
• In this case, the generated instance name will be:
genblk1.g01.u0

The “.” is NOT a hierarchy separator. It is part of the instance name.

© 2018 Synopsys, Inc. 24


bus_naming_style
May be incorrect or missing Defines characters in object name
that distinguish base from index
test.v global.tcl
test.sdc
wire [3:0] mydata; current_design test
reg [3:0] myreg; set bus_naming_style %s_%d test.sdc
always @(posedge ck) current_design
set_false_path test
–from myreg_reg_3/CP
myreg <= mydata; set_false_path –from myreg_reg_3/CP

Enables SpyGlass to successfully


match object names in
subsequent SDC commands
Sometimes specified in separate file  may be
accidentally omitted when reading SDC in SpyGlass

test.sgdc
current_design test
sdc_data –file test.sdc

© 2018 Synopsys, Inc. 25


change_names Create a Tcl file to be read before SDC file
A more generalized renaming method - Define a name rule that specifies allowed
Create a Tcl characters in object
file to be read names
before SDC file
- Define
- Define a replacement
a name character
rule that specifies for
allowed
Create a resulting
Tcl file
characters in to be read
disallowed
object before
names SDC file
characters
In project file, enable change_names with - - Define
Apply aname
name rulesothat
rule
replacement specifies
SpyGlass
character allowed
will
for match
no (GuideWare default) or supermode Create a Tcldisallowed
characters
object
resulting file
in to
names be
object read before
names
within SDC SDC file
constraints
characters

test.prj global.tcl
read_file test.v current_design test
read_file –type sgdc test.sgdc define_name_rule myrule \
current_methodology\ –allowed {a-z A-Z 0-9 _} \
$SPYGLASS_HOME/GuideWare/latest/block/rtl –replacement_char “%”
_handoff change_names –rules myrule -hierarchy
set_parameter pt supermode

test.sgdc test.sdc
current_design test current_design test
sdc_data –file global.tcl –file test.sdc set_false_path –from myreg_reg%3%/CP

In SGDC file, specify Tcl


change_names file and SDC file
© 2018 Synopsys, Inc. 26
CDC analysis with SDC – challenges and solutions

Constraints Interpretation

© 2018 Synopsys, Inc. 27


PrimeTime vs. DC Style Constraints
• Parameter pt

• Certain commands, options, and legal points of application are different depending on whether
one is writing constraints for PrimeTime (STA) vs. Design Compiler (synthesis)
– For e.g.- The change_names command in SDC may only be applied in Design Compiler but not in
PrimeTime

• To accommodate users who wish to have the more strict enforcement of PrimeTime but also
allow the change_names command, yet another mode is available for this parameter:
“supermode” - This will enforce PT strictness yet allows change_names

Parameter pt value Behavior

No DC mode, change_names accepted

Yes PT mode, change_names rejected, strict enforcement of SDC

Supermode PT mode, change_names accepted, strict enforcement of SDC

© 2018 Synopsys, Inc. 28


Handling Unsupported Design Queries in SDC

• Example of missing DC/PT attribute support in SpyGlass


– Both DC and PT support attribute direction
– Only DC supports attribute name
– SpyGlass only supports attribute direction with pt=yes
– SpyGlass only supports attribute name with pt=no
set div_clk_pin [get_pins -of [get_net clkDividerN2*] -filter "direction == out"]
set_case_analysis 1 [get_pins -of_objects u_myflop -filter "name=~o_*"]

Attribute pt = no pt = yes/supermode
direction Not Supported Supported
name Supported Not Supported

© 2018 Synopsys, Inc. 29


Agenda

CDC analysis methodology overview

CDC analysis with SDC – challenges and solutions

Running SpyGlass CDC analysis with SDC

© 2018 Synopsys, Inc. 30


Specifying SDC file(s)
• Specify the SDC file using the SGDC file
current_design test
sdc_data –file test.sdc

• Specifying multiple SDC files


– Do NOT use multiple sdc_data commands, do it all on a single line
– Each sdc_data is run as a separate process so there is no communication or transfer of data/knowledge between
commands
current_design test
sdc_data –file setup.sdc –file case_analysis.sdc –file clocks.sdc –file timing_exceptions.sdc
OR
sdc_data –file setup.sdc case_analysis .sdc clocks.sdc timing_exceptions.sdc

• There can be a top level single SDC file sourcing separate SDC files for setup, clocks, case analysis etc
– Specify the top level SDC file as shown below:
current_design test
sdc_data –file top.sdc

© 2018 Synopsys, Inc. 31


SDC2SGDC flow with SpyGlass
• Design constraints available in form of SDC or TCL can be used for SpyGlass CDC analysis
• SDC2SGDC helps in reusing the set of constraints available for synthesis or timing analysis

• List of SDC commands useful for CDC analysis:

SDC Command Translated SGDC command


create_clock clock
clock or generated_clock depending on parameters sdc_generated_clocks and
create_generated_clock
enable_generated_clocks.
set_case_analysis set_case_analysis
set_clock_groups Used for inferring domain relation of the clocks.
Only clock to clock false path commands are used for inferring asynchronous domain relation.
set_false_path
All flop to flop false path commands are ignored.
set_clock_sense clock_sense
set_input_delay abstract_port
set_output_delay abstract_port

© 2018 Synopsys, Inc. 32


Mixing SDC and SGDC

• Since SDC doesn’t contain all the constructs necessary for CDC analysis it becomes
necessary to augment the SDC with SGDC

• This works fine except for creating clocks

• Since clock relationships are defined with the set_clock_group command in SDC, if you create
a NEW clock in SGDC, there is no way to say it is synchronous to any of the existing clocks
– The domain names assigned in the SDC could change based on a change in the SDC file

© 2018 Synopsys, Inc. 33


Managing Noise from Unused SDC Commands
• To reduce noise around the SDC commands which are not relevant for CDC analysis:
• In a text file, say ‘ignored_sdc_commands.txt’, list the SDC commands to be ignored
set_multicycle_path
set_input_transition
set_clock_transition
set_clock_gating_check
set_ideal_network
set_max_delay
………..
• Syntax: Single SDC command on each line for ignoring during the SDC2SGDC usage
• Specify this text file using necessary parameter between current_methodology and
current_goal commands as shown below:
current_methodology $SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff
set_parameter tc_ignored_commands ./ignored_sdc_commands.txt
set_parameter tc_stop_parsing_ignored_commands yes; # To stop parsing of the nested/auxiliary
commands present in the SDC commands which are ignored

© 2018 Synopsys, Inc. 34


SDC2SGDC Recommended Setup
read_file –type sgdc test.sgdc #SGDC file that contains the sdc_data constraint
set_option sdc2sgdc yes; #Enables sdc2sgdc (Fatal if no SDC is provided)
set_option sdc_generate_cfp yes; #To enable generation of cdc_false_path commands
set_option support_sdc_style_escaped_name yes; #To allow non-escaped names used in SDC
set_option sdc2sgdcfile ./<design-name>.sdc2sgdc.out; #(Optional) specify name of the translated SGDC file

current_methodology $SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff
set_parameter sdc_domain_mode sta_compliant; #(Optional) default value. Recommended parameter.
set_parameter pt no; #To allow names of design objects to be changed. This is
helpful to reduce noise present for design objects present
under generate blocks
set_parameter show_all_sdc_violations yes; #To enable reporting of all issues for the SDC
set_parameter tc_ignored_commands ./ignored_sdc_commands.txt
set_parameter tc_stop_parsing_ignored_commands yes; # To stop parsing of the nested/auxiliary commands
present in the SDC commands which are ignored
set_parameter sdc_generated_clocks yes; #To have the generated clock definitions translated to
clock constraint
set_parameter enable_generated_clocks yes; #To have the generated clock definitions translated in
uncommented format

© 2018 Synopsys, Inc. 35


Summary
Advantages Challenges
• Use same SDC for many tools PT, DC and • Assumes all clocks are synchronous
CDC – Good for Worst case Timing analysis
– Ensures consistency and maintains the design • Built for Sync designs, so commands for
intent CDC are not in language
• Easy to describe clock relationships • Many constructs contained in SDC are not
• Verilog Standard on escaped names is applicable to CDC
relaxed – Makes reading file unnecessarily complex
• Industry Standard so it is very familiar • Can come late in design schedule
• Design Query to help automatically create • Written and updated for Gate level and not
commands can add to productivity (clocks, RTL
configuration registers)

Search Solvnet for: SDC2SGDC - Recommended Setup and Debug Steps

© 2018 Synopsys, Inc. 36


Thank You

You might also like