( DAC'20 Item 04c ) ----------------------------------------------- [03/09/21]

Subject: OneSpin extensible ABV plus formal linting is the Best of 2020 #4c

YOU CAN TWEAK IT: The core strength OneSpin ABV has is that it's tweakable
as a tool overall.  For example, one user talks about tweaking OneSpin such
that his company has a custom app just so DV-Verify auto-generates assertions
for their proprietary internal programming language.
A different customer loves DV-Verify because he can access it at such a deep
low-level, he can create their own in-house OneSpin extensions to create a
whole set of custom formal tools just for his company's unique design style.

Try doing this with JasperGold or Questa Formal or VC Formal!  (Good luck!)

Why can you tweak OneSpin SW?  Because years ago OneSpin originally started
out as a "formal parts" EDA tool vendor.
        - from "My Cheesy Must See List for DAC 2016"
KICKASS FORMAL LINT: The other thing the users liked in this year's survey is
OneSpin's main app, DV-Inspect, which is a formal linter that does functional
checks that complement what a normal RTL linter does.

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

      QUESTION ASKED:

        Q: "What were the 3 or 4 most INTERESTING specific EDA tools
            you've seen in 2020?  WHY did they interest you?"

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

    Hi, John,

    A few years ago I saw the user comments on DeepChip saying OneSpin was
    a powerful tool.  I told my management and that started us looking at
    it.  It's now my turn to pay it forward to others.  

    OneSpin DV-Verify takes your RTL code and the companion assertions and
    verifies that your assertions hold true 100% of the time for your RTL 
    code.  

    Here's our case where we had two assertions hold true and all the others
    failed.
    If DV-Verify finds a failure, you double click on it, and it creates
    a counterexample (Witness) to show you exactly how: 

        - all the signals that lead to the assertion fail, and
        - the sequence that causes that assertion to fail

    OneSpin gave us a two-day training on DV-Verify.  After day two, I went
    home, wrote an assertion, and ran the tool.  I got immediate results for
    something I would not have found until downstream in the flow otherwise.

(click on pic to enlarge image)
    The tool has complex menus, but once you have a working example, it's 
    easier to use.  You *must* keep your file size reasonable, as it's easy
    to overwhelm a formal tool.  I've run 600 assertions on a small file in
    only 30 seconds.  

    If you have enough assertions covering your design, you can make sure it
    works before running dynamic HDL simulations.  For certain cases you'd
    still need to run simulations, e.g. for system-level verification vs.
    the nitty gritty in your design blocks.

    You can run endless simulations and still not find a bug.  However, if
    you run formal using good assertions, you *know* you have a good design.

    That's the power of formal verification.  Each year OneSpin puts out a
    holiday puzzle and you can solve it using simulation techniques (the 
    long way) or with OneSpin (the fast way).  It always emphasizes the 
    power of a formal tool.

    OneSpin has great customer service -- starting during the sales process
    through using the tool, and well after the sale.  They have a personal
    touch.  With OneSpin I get same day meeting with our AE (Sasha), who is
    always willing to listen to our problems and help us overcoming them.

    For example, we have a custom programming language.  OneSpin created a
    custom app to auto-generate assertions for us for our specific needs. 
    Then DV-Verify will verify it.

    In contrast, with a big company, we submit a ticket and must then wait
    a day for a response.  No, thanks.

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

    ONESPIN DV-VERIFY

    We use OneSpin DV Verify to verify design IP after our design cycle is 
    complete -- in parallel with other verification methodologies.  We 
    primarily use Verilog, SV, SVA languages, and occasionally PSL/VHDL.

    We do IP verification for the DoD.  This is critical to the Air Force's
    plan for high re-use rather than continually re-purchasing the same IP
    for each project.  

    This approach puts increased pressure on us assuring each highly re-used
    IP is correct.  To verify the IP, we use DV-Verify for block 
    verification, integration verification, and equivalence checking.

    We are working towards developing our own in-house extensions as well as
    partnering with OneSpin to develop specific IP verification capabilities.
  
    OneSpin DV-Verify's biggest strength is the deep low-level control we
    can get by using Tcl and through our OneSpin partnership.

    Capacity / Performance

    We've used DV-Verify on a 4 million gate design.  OneSpin performance 
    was good, but keep in mind that the tool must be used appropriately.  
    We had to use black boxing to prevent unused parts of our design from
    limiting DV-Verify's scope / performance.
  
    Key Features & Apps

    Quantify Observation Coverage.  It uses a mutation algorithm.  We are
    currently branching out to use Quantify to actively verify IP.

    DV-Inspect App.  The automated structural and safety checks this
    app provides is underrated in terms of utility.  Much of the code we
    evaluate is machine generated, which can lead to some surprising
    mismatches.  This app catches those mismatches!

    The checks have been indispensable in evaluating such code on a large 
    scale and hunting down bugs.  It can be quite time consuming, as the
    errors would require a concerted effort to develop the tests to reveal
    the problem.  Just reviewing the DV-Inspect results is a great first
    step in recognizing the true behavior of our design.

    Connectivity App.  Checks and assesses the connectivity between source
    and destination signals laid out in the design specifications.  

    It provides a relatively simple workflow to write out the connectivity 
    specifications in a csv file, upload the csv file into the tool and 
    then automatically generate and verify the formal specifications against
    the design.  The IP assurance team has been able to perform and verify 
    connectivity checks with the RTL test articles provided to us by our DoD
    customers.

    Learning Curve

    There are two distinct learning curves for DV-Verify.  

        - The learning curve associated with learning formal methods.
        - The learning curve associated with learning OneSpin's tool suites.

    Learning formal techniques is required for all formal verification 
    tools, regardless of the EDA vendor.  It's easy to blame that curve on 
    the vendor, but I think it is inappropriate; it is important to learn it
    all right away to prevent undetected errors or misinterpretation of 
    results.  

    Conclusion

    I highly recommend OneSpin DV-Verify.  OneSpin has been a critical 
    partner for us, both in supporting their tools and in prioritizing
    new developments.  

    As a great example of that prioritization is there rapid development
    of their RISC-V app.  It was initially motivated by the DoD.

    I especially recommend OneSpin products for people involved in sensitive
    government projects.  It's unusual in our industry to have both 
    excellent tool support and the ability to modify and expand the tool 
    lineup to meet emerging government needs so quickly.  

    They are a growing company that continues to operate with a startup 
    mindset.  This is something we wish we could find a lot more of in the 
    EDA landscape.

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

    I'm German.  DV-Verify is good stuff!  I recommend it.

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

    I've known Raik for close to 15 years.  

    I am amazed how he and Jim Hogan took a failed OneSpin and not
    only brought OneSpin back to life, but remade it into a successful
    standalone EDA start-up in its own right.

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

    ONESPIN DV-INSPECT

    We use OneSpin DV-Inspect for coding rule checks, such as dead code and
    redundant code, and for System-Verilog based formal verification, such 
    as APB4 bus protocol formal verification.

        - It verifies that we have no unreachable design functions.
          Our standard RTL linting tool cannot run dead code checks,
          but DV-Inspect can.

        - It also run tests for stuck signals and FSM transitions/states
          before we do our full coverage simulation.

    The largest block I've run through DV-Inspect it had several thousand
    lines of code.  In most cases, we don't need to write any assertions
    to use it.

    I'd recommend it -- it's a good tool to help to find design issues
    before tape-out.  

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

    OneSpin DV-Inspect gives us an early, fast, and automatic way to detect
    implementation issues with our RTL code.

    Performance example:

        - 8 blocks of 1656 lines
        - Running a formal check with assertions took 0.99 seconds

    We use it for the following checks.

        1. RTL code syntactic and semantic analysis

            e.g. Mismatch, Signal truncation / no sync, Sensitivity 
                 issues, Unused signals and parameters

        2. Activation/Coverage -- Ensures specific design functions can
           be executed and are not blocked by unreachability.  

            e.g. Dead code checks, Stuck signals, FSM transitions & states

    DV-Inspect is very convenient to use for early-stage design checks, even
    before verification starts.  OneSpin's support is quite good.  

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

    OneSpin's DV-Inspect is a formal app that our designers use for linting
    their RTL source code; it checks their RTL for common mistakes.  

        - DV-Inspect is formal, so it can do many more checks than
          a normal structural linter.  

        - You do not need to write assertions to use it.  

        - You also do not need to buy OneSpin's DV-Verify (their
          main ABV tool) to use the DV-Inspect app.  (Even though
          we have both tools.)

    DV-Inspect can be used by designers -- you don't have to learn how to do
    formal verification or write assertions.  Even so, it is a multi-level 
    tool, so takes some learning and expertise to use it fully.  

    It uses formal methods, so it takes longer to get good, detailed checks
    than a standard linting tool.  We do NOT run it block-by-block.  Instead
    I wait to use DV-Inspect at the top-level before doing heavy simulation
    or formal.  If you have a very large design, you'd need to break it up.

    == DV-Inspect's Autochecks ==

    1. Finite State Machines (FSM)

    This check will show you dead RTL code that cannot be reached.  For 
    example, if you have three state machines, A, B, and C, can you get from
    state A to state C? 

    DV-Inspect also shows the different conditions to transition from state
    to state.  Finally, it will give you a warning that your RTL files have
    changed since the last run.

    2. Stick (Toggle) Coverage  

    This function shows you flip-flops or registers that stay constant at 
    either 0 or 1, instead of transitioning.  Standard (non-formal) linting
    tools don't offer this check.  

    If the tool finds no transition/toggle activity, it could because the 
    specification for the register was set to always be high.  

    However, it is more likely to be a mistake, such as a width issue.  For
    example, 

        - You may have allocated 10 registers, where only the lower
          5 are used, while the upper 5 are not moving. 

        - You have too many leading bits in a calculation.

    There are occasional false failures.  E.g. in one case, I found a 
    failure related to an asynchronous loop -- formal doesn't know about 
    timing.  

    I've run this check on every project and I've found something every 
    time.  Sometimes it is just junk code from a prior project, but
    usually there is a legit problem that needs fixing.

    3. General Checks

    These are mostly math checks.  For example, for an adder, DV-Inspect 
    will prove that the adder:

        - Never overflows.  E.g. if 2+2 assigned to a 3-bit field.  This
          stops it being truncated with not enough bits.

        - No leading redundant bits.  If 5+5 is assigned to 32 bits, the
          tool will flag a width mismatch.  DV-Inspect's formal analysis
          would look at every single operation and determine that you 
          never have a large enough number to require 32 bits.  

    == Lint Browser ==

    Although DV-Inspect's biggest "plus" is in its "Autochecks" functions, 
    it also has a lint browser.  This is actually the first step I run.  

    This lint browser is closer in functionality to a normal linter.  It 
    does have some noise, but less than a normal linter.  To help reduce
    the noise typical of normal lint checks, DV-Inspect lets you filter 
    between categories of checks, e.g. truncation, shift, and integer.

    The structural checks are all available out-of-the-box.  You don't need
    to write any assertions.  Below are examples of what DV-Inspect will 
    automatically find and flag "as is"..

    1. Unused Parameters 

       The tool will highlight any unused parameters in your RTL. 
    2. "No sink" (a Signal is Not Used) 

       This can happen because you forgot to use the signal, or you just 
       mistyped it.  It includes path details.  The example below also
       shows an asynchronous feedback loop.
    3. Unused Module on Output Port 

       The tool will identify unused modules on your output port.
    4. Init (Initialization) Checks

       Checks that all flip-flops reset to a known value.  For each 
       named group of flip-flops, the tool proves that every register
       is reset to a known state -- or not.
    5. Array Signals

       Array of bits, or of registers (or other variables).  Uses 
       formal techniques to determine if the value goes out of bounds
       from what you allocated.  Are you in bounds or did you overrun
       it and try to access something that doesn't exist, such as 
       accessing memory beyond what you have?
    6. Dead Code Checks

       To debug dead code checks, you can double click to access the
       built-in browser to view the actual RTL code for context.

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

    We use DV-Inspect as a very detailed formal lint after SpyGlass.

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

    Due to the runtimes required, we run 95% Synopsys SpyGlass
    followed by 5% One-Spin DV-Inspect.

        ----    ----    ----    ----    ----    ----    ----
        ----    ----    ----    ----    ----    ----    ----
        ----    ----    ----    ----    ----    ----    ----
SYNOPSYS VC FORMAL AND SIEMENS QUESTA FORMAL

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

    I suppose I should say VC Formal and Formality because we use it a lot.

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

    Except for Calibre DRC/LVS, we're all most an all Synopsys house.

    Frontend -- VCS, SpyGlass, ZeBu, VC Formal, Formality, PrimeTime

    Backend -- Design Compiler, Fusion Compiler, Star-RC, Calibre

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

    Our purchasing department says Synopsys VC Formal is good enough.

    I'd rather we used JasperGold.  It'd look better on my resume.

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

    We were going to do JasperGold and Conformal LEC until our SNPS sales
    guy dropped his pants and gave us VC Formal and Formality for a song.

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

    I'm an olde tyme 0-in user who's been put on the Questa Formal train.

    It works.

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

Related Articles

    OneSpin's "going where Cadence isn't" approach is Best of 2020 #4a
    Users say Jasper's 200K register block signoff is Best of 2020 #4b
    OneSpin extensible ABV plus formal linting is the Best of 2020 #4c

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)