( DAC'16 Item 1a ) ---------------------------------------------- [12/09/16]

Subject: How engineers feel about Formal verification vs. RTL simulation

AND IN CAME THE FLOOD: I should have seen it coming.  With Jim Hogan's big
big 5 part guide to Formal EDA tools appearing on DeepChip (ESNUG 558 #5)
earlier this year -- plus its high reader pageviews -- and vendor reaction
letters Jim's guide garnered, I should have predicted it.  But I hadn't.
This year my annual "What's The Best Tools of 2016?" survey question got me
flooded out -- 6,000 words of initial flood actually -- from the EDA users
themselves gushing about either the JasperGold or OneSpin formal tools.
     
Curious, I did separate a follow-up question to the Jasper and OneSpin users
to see how Formal compared to the old school RTL simulation way of verifying
designs.  That created an additional 2,000 words.
P.S. Notice how the users do NOT see Formal as replacing RTL simulation, but
instead see both as a "soup and sandwich" combo that works well together.

P.P.S. As a consequence all this gushing, instead of one email blast with
the DeepChip Top 5 of 2016, I'm publishing all these formal user comments
as the #1 tool category of 2016 -- and will later publish #2 through #5
tools of 2016 in a separate email blast.

First, here's the OneSpin users on DV-Verify vs. RTL simulation:

      FOLLOW-UP QUESTION ASKED TO ONESPIN USERS:

            Q: "What are your thoughts about using OneSpin
                formal vs. RTL simulation on your project?"

         ----    ----    ----    ----    ----    ----    ----

    I highly recommend any formal tools (such as OneSpin) as an addition
    to RTL simulation.  Your workflow then becomes:

    1) First, attempt initial verification with formal tool.  When the 
       properties are proven, they are exhaustively proven.

    2) For property verification, or code coverage, or X-propagation, 
       formal tools are much easier to setup than writing simulation
       testbenches

    3) For properties that cannot easily be verified with formal, then
       follow through with your RTL simulation.

    The learning curve for getting started with a formal tool like OneSpin
    is small -- even smaller than setting up RTL simulation testbenches.

         ----    ----    ----    ----    ----    ----    ----

    We've found that OneSpin formal and VCS/Incisive RTL-simulation are
    complementary -- rather than one versus the other.  

    OneSpin is exceptionally useful for the block-level verification of
    control-flow structures and finding scenarios you haven't thought of.  

         ----    ----    ----    ----    ----    ----    ----

    Formal and Verilog/VHDL RTL simulation are so different.

    To run simulation, you have to build a testbench and hand write all
    of your test cases.

    With OneSpin formal, and I suppose with any formal verification tool in 
    general, you can start sanitizing your design with just a few clicks of
    a button.  At DAC some OneSpin user described how some verification
    groups at his compaby were abandoning "block-level and verify" at the
    subsystem level and up -- and using formal to fill in the gap in the
    unit level.  

    Some say verification engineers are the ones who do formal work, but I
    have also heard of designers being more involved, and probably rightly
    so, as it requires in-depth knowledge of design implementation.  

    Formal is not free though.  Only limited runs can be done without doing
    extra work.  To go further, you have to start writing SVA -- which means
    decide which exact SVA needs to be written -- and which engines to run,
    etc.  This requires technical expertise that most verifiers/designers
    don't already have.

         ----    ----    ----    ----    ----    ----    ----

    The problem with simulation-based verification is that it has become too
    difficult.  Let me explain.

    We used to have just Verilog testbenches with some directed RTL tests.

      - Everybody understands that concept because it's embedded in our 
        education.  Cause and effect.  

      - For logic verification this works as long as you can cover all the
        possible relationships between inputs and state on one hand and 
        expected outputs on the other hand.  

      - Unfortunately, this quickly becomes an enormous space as we have 
        2^(# of inputs + # of states) to cover.

    Humans generally lack the brains (and time) to describe this search 
    space in sufficient detail through directed RTL testing -- so we went
    from directed testing in simulation to constrained randomized testing
    in an attempt to better cover our search space.  

    In essence we'd like to cover the complete space to be 100% sure no bugs
    are lurking below the surface.  With constrained randomized plus early
    assertions, we went from a 100 page Verilog syntax book that covers the
    language -- to a 1000 page SystemVerilog book plus a few books on UVM.  

    Suddenly verification has moved from procedural programming and golden
    reference files to OO design patterns and a completely different way of
    thinking about stimuli with distributions, sequences, layered sequences,
    etc...

    So, imagine now a junior engineer entering the team.  In the old days
    he/she would be a reasonably good design and verification guy after
    about 2 years on projects.  Everybody on the project would have the
    same level of understanding more or less and things were good.

    NOW, these days with UVM et al:

    - We get juniors going by doing *some* directed stuff at first, and 
      then we expect that they gradually move to more complex features 
      such as randomized.  

    - What we see however is that after 2-3 years a lot of them are still
      doing directed stuff.  

    - So now we have this high overhead of setting up UVM and we're still
      basically doing directed -- because that what people understand.
      This becomes even worse when we have to staff bigger teams with
      external consultants, etc.

    - The verification environment tends to be *dumbed down* to the common 
      level because we need to get this thing done with too few people 
      having very diverse backgrounds (often due to a very limited amount
      of engineers available) in too little time, so it's important that 
      every day *some* progress is made.  

    - At some point later it becomes clear that we don't have sustainably
      succeeded in doing better verification.

    BUT, with formal tools like OneSpin (or JasperGold) we kind of bypass
    the mantra that it's hard to imagine all possible combinations.  

    - The formal tool constructs *all* combinations based on what we say 
      should or should not happen.  

    - The "should not happen" bit is often more interesting.  It also 
      goes against the education of cause and effect reasoning, but it 
      seems much less of an issue to explain to people and to implement 
      as compared to doing constrained randomized testing.  

    - With formal we're forced to actually think about the *design* rather
      than sequences and scoreboards.  The design/chip is what brings in
      the money, not some fancy testbench.

    Let's not fool ourselves either: full verification using only formal is
    no joke -- and for most designs it's totally impractical.  

    What we do gain, by *adding* formal, is that we can put it in the hands
    of the designers, early in the project.  As a result, we spend much less
    time later doing top-level verification based on good old UVM simulation
    hoping to find bugs in the submodules.

         ----    ----    ----    ----    ----    ----    ----

    I see formal and simulation as complementary.  

    OneSpin has great formal technology and tools.

         ----    ----    ----    ----    ----    ----    ----
         ----    ----    ----    ----    ----    ----    ----
         ----    ----    ----    ----    ----    ----    ----
And now here's the Cadence users on JasperGold vs. RTL simulation:

      FOLLOW-UP QUESTION ASKED TO JASPER USERS:

            Q: "What are your thoughts about using Jasper
                formal vs. RTL simulation on your project?"

         ----    ----    ----    ----    ----    ----    ----

    We can reach corner cases in RTL much faster with JasperGold than by
    a random behavioral simulation.  

         ----    ----    ----    ----    ----    ----    ----

    For us, JasperGold has been key deploying formal verification; formal
    now competes against simulation and emulation, and is gaining more
    and more importance.

         ----    ----    ----    ----    ----    ----    ----

    The JasperGold formal tool is the best way we've found to quickly
    verify functionality at the block and sub-block level.  It is 
    complimentary to RTL simulation.  We're seeing cases where simulation
    is not keeping up with the complexity.  Resourcing traditional
    testbenches for each block is not feasible anymore.  

    Also, the assertions we developed for Jasper are fully reusable in
    simulation.  I see these assertions as a handoff point between formal
    and simulation.
 
         ----    ----    ----    ----    ----    ----    ----

    We see JasperGold as a as complement to simulation, not a replacement
    for simulation.  The strengths of one approach covers the weaknesses
    of the other.

    Once I had finally learned the fundamentals of formal (not easy to do),
    it was fairly effortless to use on designs developed by other engineers
    in our group -- designs which I was not too familiar with.  

    For folks who are from a traditional RTL verification background, there
    is some pain initially -- but it always helps if one has a design in
    mind that they want to push through formal.  

         ----    ----    ----    ----    ----    ----    ----

    JasperGold formal gave us a huge time savings by improving efficiency
    of verification for some tasks.  I don't know if the other formal tools
    would have done this because we only use Jasper,

    Rather than formal vs. simulation, I prefer to think about it as formal
    plus simulation.  Use the right tool for the job.  

         ----    ----    ----    ----    ----    ----    ----

    Jasper's bug hunting engines can go 1000's of cycles deep into a design.
    So you can do a "cover" property to get to an interesting state, then
    search for bugs from that state.  

    It doesn't go as deep as you can with VCS/Incisive/Questa simulation,
    but the state space can still explode, so Jasper needs to reduce it.

    JasperGold's time savings comes from quick debug turnaround.  If you
    deploy formal on an appropriate block, it can find bugs much quicker
    than simulation.  You can potentially build environments more quickly
    this way than with some complex UVM testbenches.

         ----    ----    ----    ----    ----    ----    ----

    Formal verification is completely different from simulation-based 
    verification.  In order to write effective properties for formal 
    verification, your engineers have to change their way of thinking;
    thus intensive support is very important.   

    The Cadence Jasper technical support is extremely good.  The Cadence
    AE visits us once a week and takes care of our engineers who are
    just starting to use Jasper.  That support made all the difference
    to our projects.

         ----    ----    ----    ----    ----    ----    ----

    It is always more efficient to use formal tools versus simulation to
    verify configuration registers and connectivity.  In both cases,
    exhaustive verification cannot be done just using simulations, so
    formal is the way to go!

    WARNING: Formal may not be ideal for datapaths verification, but is
    a very good option for control logic verification.

    We tried JasperGold on a previously verified designs which used the
    traditional simulation-based techniques.  With minimal assertions
    and effort, it identified 2 corner case bugs that had not been found
    on these designs despite years of simulations having been run.

    Because of that, we are working to incorporate JasperGold as a bug
    hunting engine earlier in our design process.  It's been immensely
    valuable.  We have seen failures exposed with trace depths of 80 to
    100 cycles and once the design was fixed, Jasper was able to prove
    assertions that required over 400 cycles to close. (!) 

    We have found that formal verification, when targeted at appropriately
    at control logic, significantly outperforms simulation and emulation.

    It cannot replace simulation for all tasks, but its increased capacity
    lets formal take on more of the tedious simulation-based tasks.

    If your previous experiences with formal left you with the notion that
    it requires high effort and is difficult to master, you should take
    another look.  Formal tool capacity has increased significantly and new
    ease-of-use features make anyone with basic SVA and DUT knowledge will
    be productive.

         ----    ----    ----    ----    ----    ----    ----

    Right now, Jasper is more about getting better design quality than in
    saving time.  Our current approach is:
 
    - Run Jasper Gold early before we have our testbenches; great for 
      finding bugs early. 
 
    - Do mid-project RTL simulation; still our biggest focus for 
      uncovering lot of bugs.

    - JasperGold formal comes in again at the end to improve quality
      as we head toward tape out.

    We use formal with simulation; not instead of simulation.
  
         ----    ----    ----    ----    ----    ----    ----

    Before trying Jasper, we had experience with multiple formal tools
    which we used for doing "traditional" formal verification (O-in/Questa,
    CDNS IFV, Magellan) with manually written assertions.   All these
    other formal tools we used previously suffered from capacity problems
    with anything other than small blocks.   

    When we first tried Jasper, surprisingly, it could exhaustively prove
    end-to-end assertions for large blocks and sub-systems, that we had
    never considered running formal on before.

    Case in point, we used Jasper for debugging 4 post-silicon issues and
    validating the 4 fixes (both silicon and software fixes) before then
    recommending them to the customers.  Standard RTL simulations were
    very unproductive in IDing the problems -- as the test cases would 
    run for hours on a board.  For Jasper, by writing a minimal set of
    required end-to-end assertions after brainstorming with designers,
    we were able to use Jasper to hunt identify the issues and try out
    the fixes.  

         ----    ----    ----    ----    ----    ----    ----

Related Articles

    How engineers feel about Formal verification vs. RTL simulation
    Jasper's #1 in #1 "Best of 2016", through killer capacity & debug
    OneSpin's #2 in #1 "Best of 2016", the "we try harder" company
    And how JasperGold compares to OneSpin in the Formal Apps biz

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)