( ESNUG 421 Item 3 ) -------------------------------------------- [12/10/03]

Subject: ( ESNUG 403 #5 ) HAL, LEDA, Verilint, HDLLint, Surelint, SpyGlass

> Our little company will soon be looking for a Verilog linter.  We don't
> need a 5-figure, GUI-heavy "Design Analysis tool".  We just want a
> linter.  Preferably something straightforward and inexpensive  (ideally,
> like Verilint before it was sold to Avanti.)  I'm guessing there are
> some good tools out there filling the price/functionality space that
> Verilint left behind, but being from smaller outfits they may not be
> well marketed.  I was wondering if anyone had any recommendations.  I
> was also wondering what experience people have had with Cadence's "HAL"
> Linter.
>
>     - Jeff Winston
>       Engim, Inc.                                Acton, MA


From: Jeff Winston <jwinston=user  domain=engim spot calm>

Hi John,

Since the ESNUG community helped me start my search for a worthy lint tool,
I thought it was appropriate to let you all know how it turned out.

Background: I started by searching the web and polling ESNUG users for
possible options.  I ruled out Verilint and Surelint because at the time
neither had Verilog 200x in their roadmap.  I also ruled out Verity-Check
Designer and SpyGlass as they seemed to have a different primary focus
than pure linting.  (My apologies if I mis-read their websites).  This
left me with HAL, VnCheck, HDLLint, and LEDA. I tried out all four tools
last spring (sorry for the delay in the writeup), and my assessments are
below.

What I was looking for:

I was a past fan of Verilint, and so I was looking for an easy-to-use,
minimal-setup, command-line based Verilog linter.  GUIs did not interest
me, and I did not check them out.  It had to be easy to review the output,
and there needed to be a minimum of false positives and bugs.

For rules, I wanted a tool that came, out-of-the-box, with a rule set
slightly more conservative than I needed.  If it was a lot more
conservative it would take me forever to pare the rule list down, and
if it was less conservative I would be missing checks that I needed.

I didn't expect any tool to have exactly the rule set I wanted, but I
wanted to be able to reduce the rule set to something usable with a
limited amount of effort.  I also wanted to be able to block it from
checking part of the design (the best way, in all cases, turned out to
be to simply not load the files I didn't want it to check).  I tested the
linters on completed designs, as well as on some fractured first-pass
code.  Here's what I found:

  Cadence HAL -- I checked this tool (from Cadence) out briefly last fall.
  At the time, it required prior successful elaboration (using ncelab) and
  so had limited use as a syntax checker on first-pass code.  I understand
  that they are improving the tool and adding some syntax checking, but I
  didn't have time to check it out again.  Others looking for a linter, who
  already have NC-Verilog in-house, should probably check out HAL (and
  please publish your findings!)


  TransEDA VnCheck -- This tool is part of the VnNavigator suite.  I got the
  sense that the GUI was slick (including something that converts RTL state
  machines to state diagrams), but the lint functionality had some issues.
  It was hard to find an out-of-the-box rule set that met my requirements,
  and to modify the rule sets I had to make local copies of the rules
  files and edit them (not a big deal as they were ASCII).  One pain was
  that most lines in the reports were in excess of 240 characters with the
  important information on the far end.  The tool was also the slowest I
  used (its Java-based). The largest problem was that many rules generated
  false positives.  To TransEDA's credit, they put me in contact with a
  developer. He was already aware of almost all of the tools' drawbacks,
  and said all my concerns would be addressed in a major Q4 '03 update.
  So, their Q4 release may well be worthwhile, and people shopping after
  its release should probably check it out and publish your findings!  :)


  Synopsys LEDA -- This was the most thorough and robust tool I tested, and
  I used its output as the reference to check the other tools.  For the site
  that wants to set up and maintain its own rule sets, LEDA provides plenty
  of capability and documentation to do this.  Out-of-the-box, its standard
  rule sets overlap somewhat, so some single problems can each generate more
  than one error message, and if you're not interested in a rule, you may
  have to turn it off several places.  However, all of this can be mitigated
  if you do your own rule management.

  LEDA is the only checker that copies the line that generates the message
  to the output file, and actually underlines the offending section of the
  line. However, LEDA does generate rather large output files, and its
  format doesn't lend itself to quick review. A problem with a bus can
  generate messages for each bit of a bus, and an LHS variable in a case
  statement without a default produced a message each time the variable
  was used. LEDA also sometimes lumps different conditions into the same
  message, like "Missing or redundant signal in the sensitivity list of an
  always block", or "Non driven output ports or signals detected" (the
  latter could be an (nasty) undriven wire, or just an (inconvenient)
  unused wire). The tool also generated a few false positives, most
  notably around asynchronous loop detection, but I think LEDA was the
  only tool that tried to do this check.

  Like other linters, LEDA makes multiple passes, so the information about
  one construct and/or module can be in several places. I'm told LEDA
  provides an option to write the messages related to each module to a
  separate file, so if you used this option and concatenated the outputs
  you'd have something more organized. Overall, LEDA was the most solid
  tool I used as it ran fairly fast, had no hangs, and a minimum of
  obvious bugs. If you have the resources to manage your rules, and are OK
  with the output, LEDA is a safe choice.


  Veritools HDLlint -- This tool is closest in spirit to Verilint.  It's
  available with a GUI (called G-Lint) for additional cost.  When I did the
  evaluation they had planned to support Verilog 2001 this year.  Unlike
  LEDA, the parser doesn't stop on a syntax error, so you can check all of
  a poorly-written file in one pass. The rule set out-of-the-box was close
  to what I needed, and trimming it down was a straightforward 1-2 hour
  task. The output was concise and easy to read. It was the only tool that
  used summarization so that an error on a 32-bit bus produced one error
  rather than 32. A LHS variable in a case statement without a default
  produced one message rather than one message for each time the variable
  is used. Their "one-line" format was well organized and easy to read.
  Like the other tools, HDLLint makes multiple passes, but it's easy to
  sort the one-line-per-message output.

  The biggest minus was that I found a few bugs. These included problems
  with how it flagged un-driven or floating signals, a situation where
  disabling one message could inadvertently disable others, and another
  where the existence of some high-priority "Error" problems would mask
  other important "Warning" messages. Also, a few rare but valid
  constructs were flagged as having problems. To the credit of Everest
  Design Solutions, they were interested in my bug reports, and fixed all
  my bugs within a couple of weeks. They even added a feature I requested
  (un-truncated one-line-per-message reporting). Although there seems to
  be little sense to how messages are assigned "Error", "Warning", or
  "Note" status, this designation is easy to ignore, and so my only
  remaining peeve is that there's no way to get a readable index of all
  the rules.

Bottom line, though, if you want something inexpensive, easy to setup and
use, and are OK with something a bit less authoritative than LEDA, HDLLint
is a reasonable choice.

Thanks to everyone in ESNUG 403 #5 who replied to my original request.

    - Jeff Winston
      Engim, Inc.                                Acton, 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)