( DVcon 07 Item 6 ) --------------------------------------------- [ 04/24/07 ]

Subject: Nusym "DeNibulator"

THE OTHER OTHER COVERAGE TOOL -- These are the comments on the other "other"
coverage tool.  (In the preceeding section of this report, I wrote about
finding the Certess Certitude other coverage tool.)  On a close read the
users here are reporting about a Nusym demo; not actual use.  And since I
can't find any mention of the name of the mystery Nusym tool anywhere, I've
decided to christen it the Nusym "DeNibulator" -- a safe made-up name as
anything else.  What does it do?  It denibulates your RTL code!  What?  You
haven't denibulized your source code yet?  Oh, man, your project is in such
big trouble with all those dangerous undiscovered nibs still in it...


  I recently saw a demo of Nusym's beta verification product.  Here is
  my first impression of their stuff.

  1) Nusym automates both coverage and test generation.  To run Nusym in
     this mode, you'll need a testbench that already includes BFMs and
     checkers.  When you run the test generation part of Nusym, you can
     rerun the transactions created with much lower overhead in
     regression mode.  The tool will still collect supplemental coverage,
     so you can look at the regression run and make sure you are covering
     everything that you hit with your original analysis runs, plus make
     sure you haven't created new coverage holes in your design.  Nusym
     works in conjunction with testbenches written in Verilog or Vera.

  2) If you run Nusym in analysis mode, it will provide some architectural
     analysis of your design, giving insight as to how some signals in the
     design are being used.  E.g. it distinguishes between "persistent"
     signals where the values are stored from one transaction to the next,
     and "temporary" signals where values are only kept while a transaction
     is pending.  For this mode, Nusym requires only that the testbench is
     able to drive transactions.  No checkers are required.  It then
     outputs a report showing which signals are of which type.  Then you
     can easily see whether your signals are being used as expected.

  3) Nusym's debug lets you runs single, specific transactions to recreate
     a bug, rather having to running long sequences or transactions to get
     to a bug.

  4) Their "path tracing" feature also has some useful debug.  If the tool
     isn't covering something that it should, it will tell you why and
     show you the path.  For example, if you have a branch in your code
     that is not covered, Nusym will indicate that it can't be covered
     because the controlling variable is a constant.  Since the constant
     may be tied to signals passing through multiple layers of logic and
     it may not be obvious, the tool shows you what the original constant
     was and the path to get to the branch.

  I didn't see any major functionality missing.  As it is still in beta,
  it does still need some work on usability and polish.  For example,
  the user must still sift through extra data in the reports, but I
  expect that this will be refined as it moves closer to production.

      - Steve Pearlmutter of TwoTents Systems


  I recently saw a demo of Nusym's verification product.  I haven't had
  any hands on experience yet, but I can tell you my impressions based
  on the demo.

  First off, our projects take about a year, and a good 6 months of it
  is verification - verification can be bigger than the design effort!

  Our current verification methodology is:

  1) Write the testbench, borrowing from the previous project but
     adding support for many new features with each chip.

  2) Write a series of directed tests at the block and chip level
     that sift out many of the easy bugs.

  3) Do random testing for different configurations and packet types
     using Synopsys VERA and VCS.  These random tests always run a really
     long time before finding any faults.  Plus they are harder to debug
     than directed tests, because the tests have larger traces to look at,
     and a lot of the errors that pop up are just illegal configurations.
     So we have to sort through the errors to see if they are real.

  Based on the demo I saw, there are two ways to run Nusym:

  1. You can use it to build a test bench from scratch.  Building the
     verification environment can be like building the chip (!) and the
     Nusym environment lets you do it very quickly.  Nusym looks at
     your design up front and automates the test generation, trying for
     100% coverage.  For example, it will look specifically at a coverage
     point, e.g. part of an IF clause, and automatically generate the
     test to exercise it.

     Nusym's algorithms look at the design and automatically generate
     tests, e.g. covering every IF statement in your design.  For the
     small test design (simple state machine) that they demoed, I was
     impressed with how quickly it created test stimulus that would
     exercise the design completely.  It will be interesting to see
     how it scales.  Most current formal verification tools have a hard
     time scaling to larger designs, but since Nusym is more of a
     simulator, it should scale much better.

     Nusym has a command line interface to drive the tool.  They don't
     have a GUI yet, but that doesn't really matter because with
     verification tools, we tend to use the GUI the first time to see
     the features, then we write scripts to actually run the tool.

  2. The second method is to use Nusym with your existing environment
     (test bench and checker), targeting 100% coverage.  Most testbenches
     are flawed and can't reach all coverage points.  Nusym very quickly
     tells you what kind of coverage you can get.  Nusym said they will
     support Vera and Verilog for the first release.  It will read in
     testbenches in Vera and analyze the design to determine the coverage
     points.  If it can't reach a certain state, it will give you a trace
     to the original problem in your testbench.

  I've found with most formal tools you need to write a description of what
  your design is supposed to do in their language, and it is not always
  easy to understand how to do this.  Plus it is hard to write assertions
  that completely describe the design you are trying to test.  Unlike formal
  tools, Nusym doesn't require you to learn a new language or change our
  methodology, which I liked. We can leverage our verification environments
  by reusing them from project to project.  Nusym has the potential to save
  us a lot of time there and get a better quality result.

      - [ An Anon Engineer ]


  I saw a demo of Nusym's verification tool recently, and wanted to share
  what they are doing.

  Functionality: From the demo, Nusym does automated coverage closure.  It
  automatically directs the random constraints so as to target coverage
  points.  It can also direct you to bugs.  It turns an error statement
  into a coverage point, and then targets it as if it were a coverage
  point -- i.e. automatic bug finding.

  Nusym could save us from having to modify our constraints to improve
  coverage.  It could also improve our verification environment by
  simplifying the generation component that you must code, because we
  wouldn't need to put in hooks for modification later.  It automates the
  process of going between coverage goals and determining what constraints
  to modify, then modifying the constraint.

  Automated coverage closure versus Formal Verification:

  There are 2 types of formal algorithms

    1) those looking for exhaustive proofs

  and

    2) those looking for counter examples, e.g. traces showing what's wrong.

  Nusym is like a bug hunting formal tool - except that unlike a formal tool
  it can work with testbench constructs, plus it is not just limited to
  synthesizable RTL.

  If the Nusym tool does what it claims, it could potentially replace the
  bug hunting algorithms of formal tools, but not the proof algorithms.

  Features from the demo:

   - Debug.  Nusym's has a pretty neat debug feature that gives short and
     specific tests for functionality, and lets you replay the bug.  With
     traditional simulation, you might find a bug after 4 hours of run
     time.  Then when you fix it, you must run the 4 hours of simulation
     again to make sure it works.

     Nusym says it not only helps you find the bug in minutes, but it also
     only takes minutes to rerun it again.

   - Replaying non-bugs.  Nusym also lets you replay non-bugs (which has
     its place but is not as useful.)  You can use it to document what
     the design does if you don't believe the checkers, or if you want
     to show the design to someone else.

   - Replaying regression.  It makes sure everything keeps working as you
     get the design more stable.  You must run millions of test vectors to
     run a regression today, which takes hours and hours.  Nusym claims it
     is precise in terms of which sequence of test vectors hit the coverage
     point, which saves you from running the other 95% of test vectors.

  Nusym works with Open Vera testbench constructs and Verilog 2001.  They
  also claim to be working on testbench constructs for System Verilog.  It
  should be easy to come up to speed on, rather than having to learn a new
  methodology as you do with formal tools.  I am looking for them to add
  support for System Verilog Assertions (SVA) next.

      - [ An Anon Engineer ]

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)