Gate LevelCDCPaperr8
Gate LevelCDCPaperr8
net/publication/353306513
CITATIONS READS
0 1,412
4 authors, including:
Ping Yeung
NVIDIA
31 PUBLICATIONS 54 CITATIONS
SEE PROFILE
All content following this page was uploaded by Ping Yeung on 17 July 2021.
Abstract - As we are investing more in automotive and safety-critical designs, there is a renewed focus on design reliability.
Glitches on clock-domain-crossing (CDC) signals will undoubtedly reduce reliability and lead to potential silicon failures. An
increasing number of companies are deploying CDC verification at both the RTL and the gate-level. To identify potential
glitches at the gate-level, we have been using an automatic formal-based glitch detection methodology. Previously, we have
been focusing on preventing and catching glitches on data multiplexing paths. After deployed gate-level CDC on several
projects, we had gained more experience. We learned that it is even more critical to verify glitches on the unsynchronized and
combinational CDC paths.
I. INTRODUCTION
Based on our experience, during the synthesis and power optimization process, CDC errors can be introduced.
Hence, CDC verification is not only necessary at the RT-level; it is also essential at the gate-level.
At the RTL, we focus on identifying the clock domains and CDC paths by recognizing the CDC structures and
schemes. At the gate-level, CDC paths with multiplexer or combinational logic are often prone to glitch defects that
can be introduced during the synthesis, timing, and power optimization process. If CDC verification is only done at
RTL, such glitch defects can easily be missed and lead to costly post-silicon chip failure.
This paper follows our previous inclusion in DVCon 2018, Preventing Chip-Killing Glitches on CDC Paths with
Automated Formal Analysis[1]. After deployed gate-level CDC on several projects, we had gained experience and
learned a few valuable lessons:
1. Potential glitches can be generated from different types of CDC paths. It is essential to identify them clearly so
that algorithms can be created to analyze them effectively.
2. Gate-level CDC analysis takes a long time (from a few hours to a few days). If refinements have to be made, it
is much more efficient to re-start from the last step instead of beginning again.
3. As the design complexity continues to grow, it is essential to support a heterogeneous hierarchical approach. At
the same time, as memory consumption continues to grow, it is useful to identify parallelism in the process and
enable a divide-and-conquer strategy.
In this paper, we first explain the glitch problems in various types of CDC paths. Then, we summarize the automatic
formal-based glitch detection methodology [2] that we have deployed for a few years. The methodology utilizes
structural CDC analysis, expression analysis, and formal methods to prune and prove real glitches in the design. In
order to handle much more complex designs with even longer run time, we have fractionated the previous
methodology into a much more flexible hierarchical multi-stage and multi-processing flow. We describe the stages
of the flow and how to achieve parallel processing. In the end, we summarize the results from a few projects and
illustrate design glitches found by the project teams.
II. THE THREE Witches OF GLITCHES
A glitch generated in one clock domain can be captured unintentionally by a register in the receiving clock domain if
the glitch passes through a CDC path. Although some unsynchronized CDC paths may be deemed safe due to stable
signals such as configuration or mode registers, most CDC paths are not.
The three types of CDC paths, hence witches [3] that will cause potential glitches are:
1. Data mux synchronized paths,
2. Combinational logic before synchronizers,
3. Un-synchronized single-bit or multi-bit paths
Figure 1 summarizes the major types of CDC paths in a design. Except for the glitch safe CDC paths, static and
dynamic combinational glitches can happen on the other types of CDC paths.
In a glitch safe CDC path, the TX register drives the synchronizer directly without any combinational logic before
the synchronizer. The synchronizer can be a back-to-back two DFFs, shift register synchronizer, pulse synchronizer,
latch-based synchronizer, etc.
When there is combinational logic before a good synchronizer, the CDC path is not glitch-safe anymore.
Combinational logic can introduce combinational glitches before the synchronizers. And the synchronizer may
sample the wrong value into the receiving domain unintentionally. Hence, this structure is a CDC violation at the
RT-level. However, it can be waived if the driving signals are stable or mutually exclusive. In most cases, this was
done carefully after design review, but occasionally they were waived by mistake.
C. Un-synchronized single-bit or multi-bit paths
In any unsynchronized CDC path, glitches generated by combinational logic can easily be sampled by the receiving
register unintentionally. Although this structure is a violation at the RT-level, it may not be fixed. The violation can
be waived if the driving signals are stable. They may remain in the design due to oversight by designers or waive by
mistake. Moreover, as we have observed, they can also be introduced when project teams are performing aggressive
power optimization or adding test structures and safety mechanisms into the design.
Data mux synchronized paths have to follow the protocol that the transmit data should not change when data select
multiplexer is enabled. Although this is a good CDC scheme at the RT-level, the data multiplexer will be optimized
during synthesis with other combinational logic in the CDC path. As a result, the protocol is violated. We have
adopted a careful setup during synthesis to prevent the data select logic from moving away from the RX register, but
there is no guarantee. When this happens, the data select signal is no longer controlling the sampling of the data
from the transmit domain. Glitches can happen, and wrong values will likely be sampled into the receiving domain.
Previously, we have been focusing extensively on preventing and catching glitches on the data multiplexing paths[1]
in the design. Two years ago, we had encountered a glitch in silicon on an unsynchronized CDC path. As a result,
we learned that it is equally critical to verify glitches on the unsynchronized CDC paths, data multiplexing paths,
and combinational CDC paths.
III. FORMAL-BASED GLITCH DETECTION METHODOLOGY
We have adopted the automatic formal based glitch detection methodology[2]. The approach utilizes a combination
of structural CDC analysis, expression analysis, and formal methods to identify and prove real glitches in the gate-
level netlist.
The approach has various stages that are interlinked, and the entire methodology is automated. Users can refine each
stage independently before moving to the next stage.
A. Gate-level setup
As in RTL CDC analysis, the user needs to specify appropriate design constraints to obtain accurate CDC results.
Hence, it is important that the constraints used at the RTL can be applied as-is for the gate-level CDC run. The tool
understands the naming transformation during synthesis and utilizes it to convert signal and module names from
RTL format to gate-level format.
This automation saves user effort in creating and refining the setup through multiple iterations and reduces false
noise as the constraints have already been validated in RTL CDC analysis. Additional RTL-to-gate-level name
mapping can also be provided to refine the accuracy of the RTL constraints. In our projects, we have added explicit
RTL-to-gate mappings to handle multi-dimensional arrays.
The tool can also infer constraints for logic that was not present in the RTL but got inserted during scan and design-
for-test stages. We reviewed and used this constraint guidance provided by the tool to focus on the design's
functional mode of operation.
High quality of results - A formal based approach for glitch verification generates less noisy and much higher
quality results (a few glitches per thousand of paths), hence significantly reduces debug and triage effort.
Easy to debug - With expression analysis and formal methods, the tool can identify the exact paths contributing
to the glitch scenario and can pinpoint the convergence point where potential glitch can be generated.
Ability to handle large SoCs - Hierarchical approach can be utilized to complete the CDC and glitch analysis on
IP blocks first. Then, they are represented as grey boxes for analysis at the top-level.
Quick refinement - With a multi-stage process for gate-level CDC and glitch analysis, it enables incremental
refinements with much-improved turnaround time and eliminates failure within a single process.
Multi-processing – As glitch analysis can be performed on multiple servers concurrently, it enables much more
efficient usage of servers and memory.
IV. RESULTS
Figures 7 and 8 show two of the potential glitches in the unsynchronized CDC paths. Figure 7 is a real glitch
situation that had been fixed with multiple ECOs. Figure 8 is an acceptable situation. Although the signal (in green)
diverge and re-converge later, the two AND gates inside the cell will not be enabled at the same time. The two green
paths are mutually exclusive functionally.
Figures 9 shows potential glitches in a data mux synchronized path.
V. SUMMARY
With the hierarchical multi-stage and multi-processing, we can perform gate-level CDC and glitch analysis much
efficiently than before. By transforming the RTL directives and waivers to the gate-level, we reused the hard works
that have been performed at the RTL. Though critical, gate-level glitch analysis has not been adopted widely
because of the noisy results. Expression analysis and formal methods validate the CDC paths. They identify the
exact paths contributing to the glitch scenario and pinpoint the potential glitch in the design.
REFERENCES
[1] Jackie Hsiung, Ashish Hari, Sulabh-Kumar Khare, "Preventing Chip-Killing Glitches on CDC Paths with Automated Formal
Analysis", Mediatek, DVCon 2018.
[2] Anwesha Choudhury, Ashish Hari, "Accelerating CDC Verification Closure on Gate-Level Designs", DVCon 2017
[3] The Three Witches are characters in William Shakespeare's play Macbeth (c. 1603–1607).