( ESNUG 341 Item 13 ) -------------------------------------------- [1/26/00]

Subject: ( ESNUG 339 #3 340 #5 )  We Force All Our FF's To Zero On Reset

>> The main point I was trying to make is that spending time crafting X's
>> in the RTL is non-productive and error prone.  In addition, as Cummings
>> previously stated, it violates faithful semantics between the RTL and
>> gate level simulation.
>>
>>     - Harry Foster
>>       Hewlett-Packard Computer Technology Lab
>
> Our approach to finding un-initialized flops on our last design was to
> use several scripts to find flops without resets.
>
>     - Greg Brookshire
>       Raleigh Technology Corp                        Cary, NC


From: wsnyder@maker.com (Wilson Snyder)

Hi, John,

I reset very few flops, adding reset hurts the gate count and cycle time
too much, so the technique I use here is almost the opposite; get rid of
all X's and do two state simulation.  While originally this technique was
created for a two state simulator, I still use it and like it.  It prevents
the classic gate-level simulation problem where you have a multiplexor with
a X select input:

        (uninitalized x) -----------
                               ____|____
        (initialized 0)  ---->|         |
                              | 2:1 MUX |------  Simulator says X
        (initialized 0)  ---->|_________|

Then the X's tend to propagate to the universe and never settle out.  If
the uninitalized element was either 0 or 1, the output would be 0, and all
would be fine.  (The simulator is correct in putting the X though.)

So, do what the real hardware does, power up everything 1 or 0.

How do you get rid of them?  Write a simple PLI ACC program that loops
through every reg in the design, fetches the value, and if X sets it to 0.
You call this routine during reset, and all X's are gone.  You then run an
entire regression.

Yes, but then even if you were missing resets your chip would work, but
fail in silicon!  So, run it again, setting all X's to 1.  Make many more
runs, with random values assigned to the X's.  If you have a good random
regression strategy, you can be pretty certain all is well.

To add some peace of mind, we print out the flops that are X, and do look
through them by hand.  But, even after checking them by hand we've had this
strategy detect reset bugs, and have never had a reset bug in silicon.

    - Wilson Snyder
      Maker Communications                         Framingham, MA



 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)