Merging Clocks Within the Same Patterns

The three main goals for ATPG tools are to:

  • create high coverage patterns
  • with as few patterns as possible
  • within the quickest time possible.
Using multiple clocks within the same patterns can help with these goals.  A new cross_clock feature is available that gives the user even more flexibility for merging clocks.

Default ATPG uses only one clock pulsed at a time during the capture cycle.  If multiple clocks are pulsed together then there is a risk that the skew between the clocks could result in a race condition.  A sequential element using clk2 is expected to capture the values from clock pulses in the previous cycle.  However, this clk2 element may unexpectedly capture a new value from an upstream device that updated early, which was clocked by clk1.  Thus, the issue was a result of the old value not being held there long enough for clk2 to capture it.  This is called a hold time problem. 

Today, the ATPG expert (create patterns –auto) recognizes when several clocks do not have interactions.  As a result, they can be safely pulsed together.  The manual command to pulse non-interactive clocks together is:

Set clock restriction domain_clocks

ATPG tools now use SDC files to define false and multicycle paths that are not intended to operate at system frequencies.  We recently added hold time violation handling to our false and multicycle path handling for 2007_1 release. The ATPG tool uses this information to mask cells (X out) to avoid mismatches at the pattern validation phase.

Now you can mask cells that are only interacting between clock domains while pulsing multiple clocks. With the added support of hold time violation a user can test cross domain interaction related to hold time violations.

The new switch –hold is used as shown:
Add false path –cross_clock_domain –hold

The “cross_clock_domain” argument pulses all clocks.  The “hold” argument X’s out any interaction between domains where the old and new values are not the same.  There is a risk that two domains have many clocks.  Consequently, it is a good practice to look at the domain interactions and avoid combining domains with lots of interactions. 

  1. First, identify cross domains with high interaction using

    Rep clock domain –compatible_clocks –details

    undefined
    The clock compatibility columns indicate the number of scan cells between 2 clock domains. For e.g. Clock156 and txClock125 have 1190 interacting scan cells.

    To further identify how big this interaction is consider the ratio of the interacting cells to the total scan cells. For this example lets assume domain clock156 has 5000 cells and domain txClock125 has 7000 cells. So 1190/5000 is almost 20% of interacting cells. This user defined threshold level for clock interaction will be automated in the coming release 2007_2.
  2.  ‘Add race clock’ to those domains which have a high ratio of interacting cells to total cells in those domains. Another typical example is the reset pin used as a clock that can be added as a race clock to all the domains you see a high interaction with.

    So for example :

    Set clock restriction off
    Add false path –cross_clock_domain –hold
    Add race clock clock156 txclock125
    Add race clock clock156 clock78

    Today, the “add race clock” is not formally documented.  However, the process of finding clocks with many interactions and defining them as race points will be automated with “add false path –cross_clock –hold” in the 2007_2 release. 

More DFT Tips & Techniques

© Mentor Graphics Corp. All rights reserved.