( ESNUG 577 Item 1 ) ---------------------------------------------- [10/20/17] 

Subject: Dan Joyce on Verdi, Avery SimXACT, VCS XPROP, Anirudh vs. Prakash

If you compare the number of hands-on tool users, the number of frontend functional verification guys very easily outnumbers the relatively fewer numbers backend DRC/LVS physical verification guys. I don't have any data, but I would not be surprised to learn the frontend verif users outnumbered their backend equivalents by a ratio of 10 to 1. So to be blunt, *this* is what your #1 Must See should have been:
     
Breker TrekSoC, Cadence Perspec, and Mentor inFact on their Portable Stimulus tools.

    - from Cliff on PSS, Real Intent, CDC, HLS, Fishtail, IP



From: [ Dan Joyce of Correct Designs ]

Hi, John,

I suspect that it's not smart for one consultant to point out how another
consultant is correct.  Especially publically.  But Cliff Cummings is right.
You messed up by not making Portable Stimulus tools the #1 Must See for the
DAC'17 in Austin.

And seeing Anirudh and Sawicki on stage arguing over Pegasus (ESNUG 576 #1)
was fun to watch -- but as a functional verification engineer, DRC tool
fights aren't all that important to me...

Anyway, here's three things that Cliff Cummings missed at this DAC.

  1) Cliff missed that Synopsys Verdi has a Hot New Trace Driver Function

     For years I have wanted Synopsys Verdi to trace through interfaces
     and clocking blocks better (or at all).  I believe one of the
     reasons designers don't delve into the testbench anymore is due to
     this simple lack of functionality in our wave favorite viewer.

     I am religiously Verdi, and I believe "Trace Driver" is extremely
     important and influential to how people work.

     I was told that Synopsys has been working for some time on a better
     tracing mechanism that will finally take us reliably through interfaces
     and clocking blocks into the testbench tasks, functions, sequences,
     drivers, etc.
     
     After DAC, I tried this new feature on Verdi 2017.03.  It is awesome.
     Not perfect, still beta, but I am moving to Verdi 2017.03 for all of
     my Gate-Level Simulation (GLS) work even though the rest of the team
     hasn't yet.

     Using this new Verdi, I was able to trace a signal change on my DUT
     input through an interface and clocking block and into a class in a
     UVM package.

     Previously my method was to "grep -r" my whole work area and hope I
     found all the possible culprits, then add a $display and recompile and
     rerun.  The other option is interactive debug although if tracing
     through interfaces does not work, this won't help either.

     What year is this?  Are we still debugging with prints???


  2) Prakash Narain and Anirudh went at it at the DAC Troublemaker Panel

     Interesting to hear Anirudh bragging about utilizing his CDNS formal
     team for his Cadence LINT tool development -- while Prakash banged
     away at Anirudh about signal-to-noise ratio.  I even wrote about this
     problem earlier before DAC in an ESNUG post:

       "Linting Bugs.  Lint tools like Real Intent or Spyglass look
        at your source Verilog/SystemVerilog/VHDL RTL code that produces
        bad gates.  The bad news is that some lint tools (I won't say
        which ones) have a signal-to-noise ratio that produce too many
        warnings that need to be reviewed and waived by hand.  The
        human error of waiving the wrong lint warning makes a difference
        between RTL and gate functionality.  And worst, LEC will not
        find these waivered bugs since LEC starts with the same
        wrong gate functionality."

            - Dan Joyce's 16 bugs only found w/ gate-level simulation

     LINT is a big deal to me because I run gatesims.  LINT is one of the
     3 tools that need to be top notch to keep from finding problems in
     gates (which should never happen) or worse in silicon.  Those tools
     are LINT, LEC, STA.

     The issue for me on LINT is signal-to-noise ratio, so I was really glad
     to hear Prakash hammer Anirudh on this. 
     
     But I'm focused on basic LINT - will my RTL produce gates that function
     the same as the RTL???  There are new-fangled LINT tools that look for
     Clock Domain Crossing issues, etc.

     That is where I could see a formal team come up with something really
     interesting.  BUT don't break the basic function of LINT.  And that
     means give me a simple LINT tool that checks the synthesizability of
     my RTL with a good signal to noise ratio so my designers don't miss
     an important LINT error because it was buried in a pile of crap.

     Then and only then you can start messing with more complex issues.
     I know, I know, they can charge more for the cool new stuff...

     I did talk with Prakash at the Real Intent booth after the show, and
     he understandably spent most of the time talking about the new cool
     stuff.  But at least he understands signal-to-noise.


  3) Cliff Missed Out on the Avery SimXACT plus the VCS XPROP "hole"

     Although Cliff gave a throw-away comment about Avery IP, he totally
     missed out on covering the Avery tool called SimXACT that I have used
     recently.
     It is intended to help identify X-init bugs in gate netlists.  This
     has to do with the X-pessimism in gate simulation -- which is one of
     the biggest pains with gates.  
     There are many cases where X's that are left behind in non-resetable
     latches, flops, and RAMs (like "reg1" here) will propagate X to "reg2"
     in the gatesims when they would not do so in RTL or in silicon.
     But there are other cases in a design where they do not propagate in
     RTL, but they DO in silicon -- real silicon bugs.  Separating the real
     from the bogus has always been a real challenge.  Often people spend
     so much time on this one issue, they never get to the other 15 types
     of bugs found in gates. (See ESNUG 569 #1)

     My old methodology was to initialize all the latches, flops and RAMs
     at time 0 to either all 0's, all 1's or random.  Then run regressions
     many times with random.  This does not work well because we would
     always find some X-init bugs when we first ran gates.  Note: gates
     with timing is not needed for this check.  Then we started using VCS
     XPROP and is was fantastic.

     Now we're finding these X-init problems in RTL!!!  Bugs were found
     much earlier, and were found in RTL sims which are easier to debug.

     Avery SimXACT runs on a gate netlist, so when it sees an X propagating,
     it uses its XOPT FORMAL tool to look at the logic and determine if the
     X is from gate X-pessimism, or if it is a real problem.
     The most common issue SimXACT helped with was recombinant X's.  An
     easy example of this is when a MUX is implemented as a AND-OR (3 NANDS
     actually) with the select input inverted on one AND and not inverted on
     the other.

     When both IN1 and IN2 inputs are the same and the SEL is X, the output
     OUT should be the same as IN1 and IN2.  But because the MUX is
     implemented as 3 separate NAND gates, the first stage effective ORs
     sees two X's when the inputs are both 1.  SimXACT finds things like
     this and deals with them.

     I found SimXACT useful in showing others how much effort it would take
     if we still tried to fix every X in gatesims by hand.  SimXACT ran for
     days finding 1,000's of cases where recombinant X's were causing the
     gatesims to propagate X's that would not be a problem in silicon.

     WATCH OUT FOR THE VCS XPROP "HOLE"!

     But when I told Avery the fact that we use VCS XPROP at the RTL stage,
     it meant we didn't really need to run the costly SimXACT on our gates.
     That's when the Avery developer told me about a hole in VCS XPROP that
     bit one of their customers.
     
     If a vector or RAM is being written with an index that is X, VCS XPROP
     does not propagate the X.  This is bad.  I talked about the beauty
     of VCS XPROP in my Gatesims post (ESNUG 569 #3), but now I have to add
     a big fat caveat.  We are now looking at our logic for any cases where
     we use this logic in our RTL.  And I am running SimXACT.  I hate that
     I have to run an extra tool like Avery SimXACT to catch stuff that VCS
     XPROP should be catching.

     Note: there are at least 16 different types of bugs to be found with
     gatesims (ESNUG 569 #1), and X-init bugs are easily less than half of
     the ones found.  And X-init bugs are often ones that can be worked
     around with a simple SW fix.  Timing bugs are still the most common,
     and most deadly.  (In fact, the one X-init bug in my career that bit
     me -- that is, got into silicon -- was easily fixed with a second
     reset of its logic.  While a timing bug that was found before tapeout
     on that same chip -- which was only found because we prioritized it
     over X-init bugs -- would have had no fix!)

     I really hate how much time I have to devote to chasing X's, so I'm
     hoping the VCS XPROP R&D folks have an easy workaround for this hole.
     And I hope I don't find anything real with SimXACT.

OK, now that I've found 3 tech holes that Cliff Cummings missed in *his*
DAC'17 trip report, as a rival verification consultant my work here is done.

    - Dan Joyce
      Correct Designs, Inc.                      Austin, TX

        ----    ----    ----    ----    ----    ----   ----
   Dan Joyce works as a verification consultant at Correct Designs in Austin, TX. When he's not listening to his wife bitterly complain about Trump, he likes to nap. "I love napping!" Non-robots can reach him at <user=danj domain=correctdesigns not calm>
Related Articles

    Dan Joyce's 16 bug types only found with gate-level simulation
    Dan Joyce's 29 cost-effective gate-level simulation tips (pt 1)
    Dan Joyce's 29 cost-effective gate-level simulation tips (pt 2)
    Dan Joyce's 29 cost-effective gate-level simulation tips (pt 3)

Join    Index    Next->Item






   
 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)