( ESNUG 355 Item 7 ) --------------------------------------------- [7/26/00]

Subject: ( DAC 00 #12 )  Stu Pissed At Cooley; Stu On C/Superlog/PLI/VCS

> PLAYING BOTH SIDES:  While there's a nest of new C-based EDA tools still
> trying to prove themselves, if you went into the Synopsys NDA suite at
> DAC you would have seen how their VCS R&D guys have crafted VCS to be
> able to read in C *without* going through the PLI.  (Although bypassing
> the PLI did seem to piss off one consultant I know...)


From: Stuart Sutherland <stuart@sutherland-hdl.com>

You've put my foot in my mouth for me, John!  It's not so much that you 
misquoted me, but you sure changed the context!  You have associated a 
comment in my report on DAC-2000 with a completely different topic from 
what I was commenting about.  So, I claim the right to both set the record
straight, plus to say what I really think about this other topic.

The topic you inferred that I was referencing was VCS's new, not-officially-
announced C language extensions to the Verilog language.  You stated
"Although bypassing the PLI did seem to piss off one consultant I know...",
followed by my comment that "In the area of PLI support, VCS is the worst
product there is."

My comment was regarding VCS's failure to be IEEE-1364 compliant, and had 
nothing to with possible extensions to the Verilog language.  And I standby 
that comment.  VCS is based on the 1990 OVI Verilog standard, and has never 
been updated to the IEEE 1995 standard.  With the IEEE Verilog-2000 standard
soon to be ratified, VCS is completely obsolete as far as standards are
concerned.  If you want to see a Synopsys sales or marketing person do true
parallel processing, just ask them when VCS will support the 1995 IEEE
standard for the Verilog PLI.  You will probably get three lies all stated
in one fork-join block:  1) "VCS is IEEE compliant."  2) "Synopsys is
working on implementing the PLI VPI routines."  3) "Nobody wants the VPI
routines, so Synopsys does not need to implement them."

Extending VCS to accept C language constructs directly in the Verilog HDL 
has nothing to do with IEEE compliance.  The Verilog 1364 standard has no 
restrictions on a product adding proprietary extensions to the language.
And no, John, these C language extensions do not "piss me off".  To the
contrary, I am in total agreement with adding more C capability to Verilog.
I wish we would have had the time to add more C constructs to the IEEE
Verilog-2000 standard.  But, it takes time to add major new features to a
standard, AND make sure that the new features can be implemented in a
practical way.  (Theoretically, anything can be implemented, but do we
really want something if it has negative trade-offs, such as killing
simulation or synthesis performance.)  We need companies such as Synopsys
and Co-Design (with SuperLog) to prove what extensions to Verilog or VHDL
are really worthwhile before making radical changes to the actual standard.

Though adding C constructs to the Verilog HDL is a good idea, I also think 
it is a very bad idea to try to replace the Verilog PLI.  If replacing the 
PLI is what Synopsys intends to do, then I think they are heading in the 
wrong direction at a high rate of speed.  There is a distinct difference in 
what an INTERFACE does, versus what proprietary language EXTENSIONS do.

Verilog PLI advantages:

 o A standard, portable interface.  A properly written PLI application
   will work with any IEEE compliant Verilog simulator, with no changes
   to the code.  It sure would be nice if VCS were IEEE compliant :(
 o Protection to the internal simulation data structure.  The PLI is a
   layer between user code and the guts of the simulator, and prevents
   user code from corrupting the simulator's internal data structures.
 o Source code protection.  PLI applications can be delivered as object
   files.  No Verilog or C source code needs to be provided to the end
   user of a PLI application.

Verilog PLI disadvantages:

 o OVI's PLI standard was poorly documented.  The IEEE 1995 Verilog
   standard is better, but still full of errata.  These ambiguities mean
   PLI applications are not as portable as they should be.  For
   Verilog-2000, we spent thousands of man hours making the PLI standard
   as accurate as possible (I'm co-chair of the PLI standard task force).
 o The PLI is slow compared to directly interacting with the simulation
   data structure.  That is the price of having an interface layer that
   protects the data structure and gives portability.  The VPI library
   in the 1995 PLI standard is designed to be much faster that the older
   TF and ACC libraries (too bad VCS does not support the VPI library).

Language extension advantages:

 o Better performance compared to the PLI.  Language extensions can
   bypass the interface layer, but at the cost of no protection to the
   data structure.  User code can directly corrupt the simulation.
 o Tight integration with Verilog HDL constructs.  C constructs such as
   pointers, structures and enumerated types become HDL constructs.
   The PLI allows the usage of structures and such, but exchanging data
   between the HDL and a C structure is only possible through the
   interface layer.
 o The capabilities of the HDL are still available.  Time, concurrency,
   design structure, digital logic values, arbitrary vector widths and
   such are natural to Verilog, but are not natural to C.  A PLI
   application is pure C, and while it can access the Verilog information
   (through the interface layer) a PLI application cannot actually model
   with HDL constructs.  Extending the HDL gives the best of both worlds.

Language extension disadvantages:

 o Proprietary to specific products.  Code which uses the extensions will
   not be portable to other software products from other vendors.  Even
   tools such as lint checkers will need to be proprietary.
 o No source code protection.  The same problem that exists with HDL's
   today will continue; End users must have source code to read into
   simulation tools, synthesis tools, etc.
 o A high risk of corrupted simulation data structures.  Give a hardware
   engineer pointers, pointers to pointers, addresses of pointers and
   all the other levels of indirection that C permits, and there are
   going to be unstable models.  Add in C's memory allocation and
   de-allocation, and hardware models will start having memory leaks,
   illegal memory references and all sorts of other issues.

To summarize, C language extensions to Verilog are a good idea, but they do 
not replace the need for a PLI.  The extensions are great for performance, 
abstract bus-functional level models, system level modeling, and test
benches.  A procedural interface provides portability, data structure 
protection and IP protection.  If Synopsys is going to offer both C 
language extensions and *FULL* PLI support in VCS, then they are definitely
on the right track and will have a great product.  If they are 
not...  Well, fortunately, SuperLog IS planning to do both.

Back to my original statement, which was quoted out of context:  As of
today, "In the area of PLI support, VCS is the worst product there is."
Until VCS supports the full IEEE PLI standard, I will continue to 
suggest to my customers that NC-Verilog is a better choice.  If C 
extensions to Verilog are needed for abstract modeling or testing, then 
until VCS is IEEE compliant, I will recommend looking at SuperLog.

    - Stuart Sutherland
      Verilog PLI consultant                     Tualatin, OR


 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)