> Looks like Denali's sponsoring the valley's first conference devoted
   > to memories in 2 weeks.  http://www.MemCon.com  I wonder if they'll
   > get a Barbara Streisand impersonator to sing "Memories" at it???
   > (OK, so I'm allowed one really bad joke after getting that DAC Trip
   > Report done, OK????)
   >
   >     - John Cooley on DeepChip.com (10/2/02)


   From: Chris North <Chris.North@pridepost.com>

   Sir,

   I am the San Francisco founding member of the Barbara Streisand
   Fan Web Ring.  Your "bad joke" reference to Ms. Streisand is
   humorless and offensive.  Barbara is not a joke.  In view of your
   insolence, I have put the word out so that none of the Bay Area
   Streisand impersonators will work your conference.  I shall be
   contacting your sponsors to inform them of our boycott of their
   products and services.  Your hate speech shall not stand.

       - Chris North, founder
         Barbara Streisand Fan Web Ring          San Francisco, CA


( ESNUG 400 Subjects ) ------------------------------------------- [10/10/02]

 Item  1: PhysOpt 2002.05 Timing Bug Turns Out To Be Really A DC 2001.08 Bug
 Item  2: A European Superlog Fan Worries About Synopsys Buying Co-Design
 Item  3: Wall Street Asks About The Latest Physical Synopsys Tape-out Count
 Item  4: ( DAC 02 #16 ) An Anon Magma Tapeout Becomes Publically Non-anon
 Item  5: User Openly Wonders "Is This PhysOpt 2002.05 Laughing At Me?"
 Item  6: ( DAC 02 #27 ) Six Users Spank Cooley For Not Covering Denali Well
 Item  7: Huh?  PrimeTime 2001.08-SP1 On HPUX Differs From Linux/Solaris??
 Item  8: ( DAC 02 #24 ) Reason Behind Pallab's Neolinear Comments Questioned
 Item  9: ( DAC 02 #15 ) User Claims Magma Picks Up Where Monterey Falls Off
 Item 10: ( DAC 02 #16 ) User Claims Magma Picks Up Where PhysOpt Falls Off
 Item 11: ( DAC 02 #9 ) Three Users Defend Innologic's ESP-CV Symbolic Tool
 Item 12: ( DAC 02 #12 ) Tharas Rebutts The Anonymous User Comment About It
 Item 13: How Can I Get UNIX-like Shell Capabilities Inside Synopsys Tools?
 Item 14: Wall Street Analysts Should Read The Merrill Lynch SNPS Report
 Item 15: Golson's Comparison Of Formality vs. Chrysalis Design VERIFYer

 The complete, searchable ESNUG Archive Site is at http://www.DeepChip.com


( ESNUG 400 Item 1 ) --------------------------------------------- [10/10/02]

From: Jay Pragasam <jlk@brecis.com>
Subject: PhysOpt 2002.05 Timing Bug Turns Out To Be Really A DC 2001.08 Bug

Hi John,

I see in the ESNUG posts that people are migrating to the 2002.05 version of
PhysOpt.  But I am wondering if anyone is seeing any kind of weird timing
issues just by switching to the new version.  I am facing problems with
designs that meet timing with PhysOpt 2001.08 coming up with bizarre -ve
slacks with 2002.05 for the same floorplan, constraints and run scripts.  I
am still sticking to the same way of specifying RC values using

                   set_delay_estimation_options

in 2002.05 just as we did in 2001.08 even though Synopsys recommends
switching to the 2.5-D extraction model of PhysOpt.  Could this be a problem?

Just wondering if I am the only soul who is being tormented by 2002.05 or is
there a whole community out there?  I am working with Synopsys folks on this,
but just wanted to know if people out there have had similar experiences.

    - Jay Pragasam
      Brecis Communications                      San Jose, CA

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

From: Jay Pragasam <jlk@brecis.com>         

Hi John,

What started out as a problem with 2002.05 version of DC/PhysOpt turned out
to be a 2001.08 sythesis timing issue (as per Synopsys R&D).  Funny that we
haven't had a chance to isolate it in earlier designs.  I would appreciate
if someone else has comments about this.

The .lib for the synthesis libraries have "when" constructs in them which
specify different timing numbers for the cell outputs for different values
of the unrelated pin.

    pin(Z) {
      max_transition : 3.59518 ;
      max_capacitance : 0.8 ;
      function : "! ( A1 ^ A2  )" ;
      direction : output ;
      timing() {
        timing_sense : positive_unate ;
        when : "A1" ;
        timing_label : A2_Z ;
      ....
      related_pin : A2 ;
      }

      timing() {
        timing_sense : negative_unate ;
        when : "!A1" ;
        timing_label : A2_Z_1 ;
      ...
      }
      related_pin : A2 ;
      timing() {
        timing_sense : positive_unate ;
        timing_label : A2_Z_2 ;
      ...
      }

With a timing model like this, A2->Z has three different models depending on
when A1 is 1 or 0 and a default case.  Looks like 2001.08 does not respect
"when" clauses and uses the default all the time.  This is not a problem
during normal runs, but when I force a value using set_case_analysis (1 or
0), then 2002.05 picks up the model associated with the value of A1 instead
of the default model which is picked by 2001.08.  Also in the timing report,
the appropriate edges are chosen depending on the value of A1 and in some
cases you end up with half the clock cycle in lieu of the full cycle
resulting in real timing issues.

Anyone else seeing this??

    - Jay Pragasam
      Brecis Communications                      San Jose, CA


( ESNUG 400 Item 2 ) --------------------------------------------- [10/10/02]

From: Thomas Fairbairn <tomf@pdd.3com.com>
Subject: A European Superlog Fan Worries About Synopsys Buying Co-Design

Hi John,

I find this an interesting development - Synopsys are buying Co-Design,
developers of the Superlog language.   (See EE Times web site
http://www.electronicstimes.com/story/OEG20020828S0018)

I'm a Superlog fan.  From what I seen of the language (at DATE 98 - some
time ago, I'm well aware of that) it seemed to be the one "new design
language" that really seemed to address the problems we've been having
here.  At the time the support for other tools, such as synthesis, was
weak, so I labelled it  "interesting - wait for further developments".

On the surface, Synopsys acquiring Co-Design seems like good news.
Hopefully it will shortly be supported in DC.  The problem is that
Co-Design was pushing hard for multi vendor support.  They were a small
company in the Accellera standards organisation and I was hoping this
would help them push Superlog into a full standard.  With Synopsys buying
it, I can't imagine Cadence/Mentor agreeing to that unless they
absolutely have to.  And Synopsys is pushing SystemC too.

Synopsys say the two are complimentary.  I agree in principle but I see
many ways in which they overlap -- for instance Superlog supports the
import of C functions "as is" into simulation.  If I wanted to start
doing some algorithmic exploration, that's where I'd start, not going
straight to a new language like SystemC.  Which one will Synopsys push
at Accellera?  Will they be pushing for two standards?

Here's hoping Synopsys isn't just killing off a competitor!

    - Tom Fairbairn
      3Com Europe Ltd                            Hemel Hempstead, UK


( ESNUG 400 Item 3 ) --------------------------------------------- [10/10/02]

Subject: Wall Street Asks About The Latest Physical Synopsys Tape-out Count

> Anyway, here's my estimated tape-outs for May, 2002:
>
>  Synopsys PhysOpt  ######################################## 600 tape-outs
>             Magma  ####### 100
>       Cadence PKS  ## 36
>          Monterey  3
>
> Synopsys reported 500 tape-outs at SNUG'02 and just this week they clamed
> 600 tape-outs in a press release.  Magma made the 'over 100 tape-outs'
> claim at the big press event they had 2 weeks ago.  I called them on it
> and they said 50 of them were from TI.
>
>     - 5 months ago from SNUG 02 #15


From: Richard Ong <rong@eaglecap.com>

Hi, John,

I'm wondering if you have any updates on the comparitive physical synthesis
tape-outs since your histogram in SNUG 02 #15.  You didn't make such a table
in your DAC Trip Report.

Synopsys had the early lead with Physical Compiler, but the we read about
some problems ESNUG 374 #7.  Any updates?  Also, any explanation why all of
the cited Magma tape-outs were gates-to-placed-gates, and why Magma
synthesis wasn't used? Has this changed with time?  A follow-on to that
would be does the Magma sales pitch (single technology, single design flow)
come through in reality? 

How important is a single data model (Magma pitch), and can Synopsys and
Avanti deliver a single data model database?

    - Richard Ong
      Eagle Capital Management                   New York, NY

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

From: John Cooley <jcooley@theworld.com>

You're right, Richard, my last DAC Trip Report didn't have a comparitive
histogram for physical synthesis tape-outs.  Sorry.  Here's where I *think*
they're at today (Oct. 10, 2002) from what I see.

      PhysOpt  ############################################### 1200 tape-outs
        Magma  #### 101
  Cadence PKS  ## 54
     Monterey  # 13

I had to estimate the PhysOpt tape-outs by simply graphing the known numbers
and extrapolating to now.  Because there are so many, I have no way to count
them all directly any more.  And besides, the user traffic I see on PhysOpt
confirms to me that it's widely used.

I had a problem with Magma because only one more user wrote me to say he did
a new tape-out.  He was originally anon in DAC 02 #16 (at his request), but
in this issue of ESNUG Simon Matthews of Paxonet decided to become non-anon.

The additional 18 Cadence PKS tape-outs came directly from DAC 02 #14.

The 10 additional Monterey tape-outs came from DAC 02 #15 plus a detailed
Monterey tape-out you'll find in next week's ESNUG post.


I've pretty much stopped tracking tape-outs here in physical synthesis except
for Monterey & PKS.  Once you get past around 100 tape-outs you've pretty
much shown that the technology works and then it becomes more of a Dataquest
marketshare issue than tape-out count issue.


Also, to be fair to Cadence, Monterey, and the old Avanti company, tracking
physical synthesis tape-outs is only *half* the picture here.  There's still
the question of how many tape-outs various floorplanners have, too -- like
First Encounter vs. Jupiter vs. Floorplan Compiler vs. Aristo IC Wizard vs.
the standard older Cadence & Avanti tools used to floorplan before all these
new tools came on the market.

    - John Cooley
      the ESNUG guy


( ESNUG 400 Item 4 ) --------------------------------------------- [10/10/02]

Subject: ( DAC 02 #16 ) An Anon Magma Tapeout Becomes Publically Non-anon

> The first one wrote to say "add one more to the Magma tape-out count", but
> wouldn't let me publish his 2 sentence letter even anonymously.
>
>     - from DAC 02 #16


From: Simon Matthews <simon@paxonet.com>

Hi, John,

You can now publish this -- including my name/company.

Add one more to the Magma tape-out count.  Exclusively Magma from netlist to 
GDS.  2M gates plus 1.2M bits of memory.  600K placeable instances.  All run
flat -- either on Dual-Xeon Linux boxes or Sun Solaris (we ran 32-bit 
programs on Sun, not 64-bit versions).

More info: we used Blast Fusion and Blast Noise.  Most of the work was
performed by engineers who had never used P&R tools before.  Our time from
final netlist to tapeout was 51 days, of which 18 days were DRC/LVS/IR drop.

Integration of noise analysis/repair into the router is a huge improvement 
over the post-processing and repair techniques from other vendors.  This 
saved many weeks of time.

    - Simon Matthews
      Paxonet


( ESNUG 400 Item 5 ) --------------------------------------------- [10/10/02]

From: Joe Gilray <jg@cvs.agilent.com>
Subject: User Openly Wonders "Is This PhysOpt 2002.05 Laughing At Me?"

Hi, John,

For those PhysOpt 2002.05 users having a long day, on an empty design try
typing 'plot_design' at the psyn_shell prompt for some relief.
 
    - Joe Gilray
      Agilent Technologies                       Corvallis, OR


( ESNUG 400 Item 6 ) --------------------------------------------- [10/10/02]

Subject: ( DAC 02 #27 ) Six Users Spank Cooley For Not Covering Denali Well

>  "Best: Denali's party again was a raging college bash.  Pleasent change
>   from the typical DAC parties...  Everyone from CEO's to engineers were
>   there out on the dance floor jamming to the 70's dance tunes of Disco
>   Inferno.  Gets better every year."
>
>       - Sean W. Smith of Cisco Systems


From: Rakesh Mehta <rakesh_mehta@ltx.com>

John,

I'm curious as to why you didn't have much technical coverage on Denali.

    - Rakesh Mehta
      LTX

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

From: Neil Yang <neil.l.yang@intel.com>

Hi John,

I would be interested in more information on Denali.  We're currently using
their memory modeling suite in our design project and have been successful
with their advanced verification sw.  (We've taped out A0 silicon for about
5 months and still have not had any showstopper bugs.)

    - Neil Yang
      Intel

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

From: Yong Wang <yong.wang@artilemicro.com>

Hi, John,

Read your DAC report, outstanding job in provide information and user
experience/feedbacks on all these new tools.

Denali Software asked me to give you my feedback on their behavior.  I
think Denali is providing valuable services and you should probably give
them some coverage on their IPs.

We are currently using Denali's memory models and DDR memory controller.
From our experience, their memory model provided a significant amount of
help for our verification effort by providing complete checks on memory
protocols while retaining good run-time performance.  Their DDR controller
is one of the best among the ones we have evaluated, in terms of
performance, testablility and support. 

Their customer support is outstanding.  Integrating their IPs into our
design and system verification environment was a very good experience. 

    - Yong Wang
      Artile Micro

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

From: King Luk <king.luk@hp.com>                

John,

How about some coverage of Denali for their memory controller IP in the
DAC trip report?

We've been using the Denali's Databahn memory controller IP to interface
to a DDR SDRAM.  Our current project will run the controller at 200 MHz
with DDR400 RAM at .13u process.

Here are my experiences with the Denali controller, having been using it 
in two projects:

 - responsive to enhancement requests.  This has been an important
   area for us as our application is based more on random memory 
   accesses (for table lookup) whereas the Denali controller initially
   was optimized towards sequential accesses (for CPU centric 
   applications).  So we've requested Denali to add auto-precharge
   and other features to cut down on latency and improve upon 
   utilization.  Our requests have been implemented since then.

 - The web interface used to specify the controller is intuitive and
   easy to use.  The response time from specification to delivery
   is generally quick (~1 week)

 - There were some coding practices in their source code that we don't
   quite feel comfortable with. Though they most likely will synthesize
   fine, but might cause simulation/synthesis mismatches...  Like the
   use of #delay in synthesizable code...  Some of the code has been
   changed based on our feedback since then.  But the #delay is still
   in our current release.  Good thing is that they make the #delay
   as `define, so I usually just set it to empty to remove the #delay
   when I run simulation.

To sum it up, though initially there are some shortcomings to the Denali
controller, it has since been fixed and we are very satisfied with Denali
as our supplier of memory controller IP based primarily on their flexible
and responsive support to our requests on enhancements and fixes.

    - King Luk
      HP Roseville

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

From: Daniel Abate <dabate@mc.com>

Hi, John,

I do not see any mention of Denali other than that they had the "Best
Party".  You can do better than that!  I would of like to hear your
impressions and that of DAC attendees on their products.

We use Denali memory models to verify our systems and they have found pretty
wide acceptance within our group.  We use their backdoor mechanism on
"system defined memories" to close our verifications loop.  We also like the
sparse memory model & the ability to inject errors to test our controllers.

The down side to their later NT releases (3.0) is that the System view
pureview GUI has a ways to go before I would consider it good.  The
simulation database approach may be good in the long run but the performance
is not very good when you want to look at database files that are large.
I also do not care for how large the history file can get when doing long
simulations.  In general I like the tool and it is easy to integrate. 

    - Dan Abate
      Mercury Computers

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

From: Kaushik Patel <kaushik@azanda.com>

Hi John,

Great DAC report...  you missed Denali though!

We are having great success with the Data Bahn controller in our optical
networking SAR & Traffic Manager product.  Our chip using the Denali memory
controller is fully functional at speed in first silicon.  We met our
performance target -- our memory interface runs at 200MHz 64 bits DDR.  This
is an outstanding result for first silicon.  Denali support started off slow
at the first, however, as our product development progressed, both quality
of technical support and turnaround time on issues was outstanding.  Based
on the success with the 1st generation Data Bahn, we plan to use Denali
memory controllers in our next product.

    - Kaushik Patel
      Azanda Network Devices


( ESNUG 400 Item 7 ) --------------------------------------------- [10/10/02]

From: Craig Taniguchi <craig.taniguchi@trw.com>
Subject: Huh?  PrimeTime 2001.08-SP1 On HPUX Differs From Linux/Solaris??

Hi John,

Our team is trying to close on timing analysis (using PrimeTime) with our
ASIC vendor on our post-route netlist.  We are using PrimeTime 2001.08-SP1.
Our vendor is running Linux and Solaris and gettings the same results on
either platform.  Here running on HPUX we get different violators from
the vendor using the same constraints and scripts.  We also checked the
violators using the following commands:

  1. report_analysis_coverage ......
  2. report_timing -delay_type min ......
  3. report_constraints -all_violators -verbose ....

All commands show that we have 34 hold violations and they are all the same.
But our ASIC vendor running the same scripts reports zero hold time
violations running under Linux and Solaris.  Does anyone know of any reason
why there would be discreprencies across platforms?

    - Craig Taniguchi
      TRW


( ESNUG 400 Item 8 ) --------------------------------------------- [10/10/02]

Subject: ( DAC 02 #24 ) Reason Behind Pallab's Neolinear Comments Questioned

>  "ADA's 'Genius' products seem to be far ahead of Neolinear's NeoCircuit.
>   The Neolinear products are stuck with just the Cadence simulator, and
>   ADA can use multiple 3rd party simulators; so you can plug in different
>   engines like Silvaco/Mentor/etc in addition to Cadence.  The Neolinear
>   tool can not handle as many variables and process corneers as ADA's so
>   their transistor sizer is a bit limited for trying to do design
>   re-targeting to 130 nm and 90 nm flows with a lot of process options.
>   ADA's tradeoff analyzer, I think it is called "IP Explorer" (do not
>   quite remember) is a lot more robust and easier to use than the one in
>   NeoCircuit -- since you can light up the tool and get around in it
>   faster -- it is also faster to pick a good result from faster."
>
>       - Pallab Chatterjee of SiliconMap


From: Jeff Flieder <jflieder@neolinear.com>

Hi, John,

I read your DAC report today and wanted to respond to Pallab Chatterjee's
review of ADA's Genius product vs. Neolinear's NeoCircuit product.  It is
apparent to me that Pallab has not seen NeoCircuit in quite some time (and
never used NeoCircuit).  Knowing you as well as I do, John, and your
insistence on accuracy, I'd like to post a response to Pallab Chatterjees's
posting.  He is very closely connected with ADA, as you can see from the
"partners" section on ADA's web site.  The information in his DAC report is
grossly inaccurate and obviously from ADA's marketing dept. 

Pallab mentions that NeoCircuit is limited to only Cadence's simulators, and
this is simply not true.  NeoCircuit supports Spectre from Cadence, but also
Synopsys' HSpice, Mentor's Eldo, and proprietary simulators.  In addition,
our NeoCircuit-RF product, which is targeted to higher frequency RF design,
supports Cadence's SpectreRF and ADS from Agilent.  It is also possible for a
customer to request support for their in-house simulation environment.  For
example, NeoCircuit is integrated with Infineon's Titan simulator.  These
are integrated with an API that is probably similar to ADA's approach.

Pallab also contends that ADA's tools can handle a design with more process
corners and variables that NeoCircuit.  We have successfully sized designs
with upwards of 50 design variables, and there is no limit on the number of
corners that can be specified.

I'm not going to bother to comment on the robustness and ease of use issue
between the two tools other than to say that many companies use NeoCircuit
in production and find the UI extremely robust and intuitive to use.

We have, & continue to have, significant success at many types of companies
in various industries, including RF designs, that Pallab mentions at the end
his review.

    - Jeff Flieder
      Neolinear, Inc.


( ESNUG 400 Item 9 ) --------------------------------------------- [10/10/02]

Subject: ( DAC 02 #15 ) User Claims Magma Picks Up Where Monterey Falls Off

> Nobody took them seriously.  Then about 3 months ago, I started receiving
> a number of detailed Monterey user letters.  ESNUG 396 #2 and ESNUG 397 #6
> had 2 Infineon, 2 Canon, and 2 Zoran tape-outs.  Below you'll find 5 more
> tape-outs or near tape-outs from users responding to my DAC survey.
>
>     - from DAC 02 #15


From: [ A Known Magma User ]

John,

Keep me anon on this one.

Many of the issues for Monterey are resolved in Magma.  Here are some items
from the Monterey section of your DAC report and my comments:

     "I don't know any other tool which includes "useful
      skew" except celestry's ClockWise other than Dolphin."

Magma does useful skew, very effectively.

     "A lot of Dolphin steps (e.g. placement, max-trans optimization,
      setup-opt, CTS, hold-opt etc.) are bundled in "macro-commands".
      (For example, their all encompassing command: "run".)"

Magma includes "run" commands. But each one is a script that can be 
modified, or individual commands run separately.  In Magma, one can use TCL 
to build up custom commands, tweak the database, etc. It is very flexible.

     "Dolphin CTS does not provide a whole lot of control on insertion-
      delay.  We had a scenario where there was a block that received a
      late clock, and CTS needed to really reduce the insertion delay,
      even at the expense of worsening the skew a tiny bit.  But we could
      not find a way to do that."

One can control the insertion delay of clocks to individual FFs in Magma or 
one can choose to control only the insertion delay of the boundary FFs and 
let Magma use useful skew to meet all the internal FF-to-FF timings.

     "Monterey does not have Linux port yet."

If you want to run on the fastest platforms, you have to be on Linux.  Magma
mostly develops on Linux and ports to other platforms.

    - [ A Known Magma User ]


( ESNUG 400 Item 10 ) -------------------------------------------- [10/10/02]

Subject: ( DAC 02 #16 ) User Claims Magma Picks Up Where PhysOpt Falls Off

> I went digging & found out that the last time anyone anywhere had written
> about Magma as a user (outside of the controlled environment of a press
> release) was 15 months ago in ESNUG 374 #7.  Huh?  I've found lots of
> PhysOpt/PKS/Dolphin chat going on in that timeframe.  Even Incentia
> (ESNUG 394 #14) and Sequence (ESNUG 399 #7) have had more user discussion
> than Magma has over that past 15 months!
>
>     - from DAC 02 #16


From: [ A Different Known Magma User ]

John,

Sorry, we Magma users don't have time to respond to you.  We're busy using
their tool to get our chips out, and scripting everything up in their open
database -- rather than relying on a promise of a common, open database to
be available for "preferred customers" in Q2 next year and ready for general
release sometime in the Q4 timeframe.  :)  

I'm sorry if its a plus that PhysOpt users have so much free time on their
hands due to their long run times, to write nice DAC wrap ups, or if
Apollo/Astro users are so disappointed in their tool (or worried about
their tool's future) that they actually used DAC to go look around at the
competitors.  I used my DAC to meet with Magma's R&D, and didn't have a need
to go look at other place and route tools or do a comparison.

Ok, I admit I didn't spend ALL DAC talking with Magma R&D.  It was New
Orleans, and I had to take in the culture a little... in the form of
Hurricanes and Hand Grenades.  BTW, if any of your readers could tell me
how to make my own Hand Grenade, it would be greatly appreciated for our
next tapeout party.

(Keep me anonymous if you quote me.)

    - [ A Different Known Magma User ]


( ESNUG 400 Item 11 ) -------------------------------------------- [10/10/02]

Subject: ( DAC 02 #9 ) Three Users Defend Innologic's ESP-CV Symbolic Tool

>  "Innologic sells a PLI that will turn your ordinary Verilog simulator
>   into a symbolic simulator and can also add formal verification
>   capability.  In addition to signals taking on values of "0", "1", "X"
>   or "Z" they can take on any arbitrary string as a value.  If you have
>   an AND gate and the inputs are "0" and "1", the output is "0", just
>   like an ordinary simulator.  If the inputs are "A" and "1", the output
>   is "A".  If the inputs are "A" and "B", the output is "A&B".  If you
>   have a lot of symbols, signal values can turn into big, ugly equations,
>   which can get uglier with each new clock cycle.  They say their formal
>   verification tool will give you the simplest possible example of how
>   an erroneous value can occur.  They say they use very clever BDDs to
>   allow signals to take on really big equations as values, but if you use
>   enough different symbols for enough clocks the tool will run out of
>   steam.  Note however that since you are checking for all possible
>   values of the pins with symbolic values on them, your simulation may be
>   much shorter to effectively check your design."
>
>       - John Weiland of Intrinsix


From: Mayank Gupta <mgupta@shromila.com>

Hi John,

We used the ESP-CV tool from Innologic quite extensively in my past company.
I wanted to offer a slightly different opinion of Innologic's ESP-CV tool
than what was said by John Weiland of Intrinsix:

  1. ESP-CV does not turn your existing "Verilog simulator into a symbolic
     simulator", but includes a symbolic simulator as part of the tool.
     This is a plus as it does not "occupy" a typically constrained resource
     such as Verilog simulator.

  2. I agree, ESP-CV will run out of steam if you run "enough different 
     symbols for enough clocks".  But the whole idea is to NOT run enough
     clocks.  Most datapath designs that we did were verifyable in 4
     symbolic clocks + ~4 binary setup (fast).  A few went to ~8 symbolic
     cycles.  In reality, I even had one design run ~1M cycle because it
     had a unique sequential architecture.

  3a. I used the Innologic ESP-CV tool for equivalency checking between
      RTL (behavioral Verilog) and gate level (Verilog netlist) for full
      custom 64-bit superscaler microprocessor with large on-chip caches.
      We broke the design into ~12 functional datapaths and another ~12
      associated control blocks.  In our methodology, at the "floorplan"
      block level the RTL (Verilog) implementation must match identically
      to the "hand-drawn" custom logic (schematic capture).  We verified
      each of the above datapath blocks in both RTL and gate level netlist
      using Innologic as a equivalency checker.  We did the same for
      synthesized control blocks, too.  The only difference was that we
      had to run more cycles to get adequate coverage.  The control blocks
      required more cycles due to sequential state machines while the
      datapaths were generally straight forward.

  3b. The other application for this tool was as a regression everytime
      RTL or gate level changed for timing, resizing gates, LVS related
      changes etc. etc.  This regression was very effective as it would
      pinpoint the erroneous change in minutes as opposed to hours of
      functional vectors.

  4. Usability: The tool is easy to use once you understand the purpose
     and application of this tool.  To start out we got a tutorial of the
     tool.  We used the default testbench generation feature to put together
     the shell and that typically took care of ~75% of the manual tedious
     work.  For people who do cut and paste style editing it is quite easy
     from that point to put together the rest of it.  Next the designer
     (knowledgeable person) goes in and puts the appropriate reset and
     operating constraints.  In reality, this should be very small for
     properly coded RTL.  The rest the tool takes care of it.  In the final
     stage, the circuit implementor simply generates a gatelevel netlist and
     "checks-out" the RTL and testbench and types one command and gets
     "Pass/Fail" indicator.  I should also point out the "Failing Test
     Vector" in binary verilog or VCD dump is produced for the failing case.
     It literaly is a few cycles of simulation pinpointing the failure.

Personally, I am quite sold on the concept and simulation capability of this
tool as a equivalency checker.  We found a number of bugs in the design at
block level that would have taken a lot longer to find on a full chip level.
Circuit designers actually prefer this tool for verifying initial design and
all changes.  Also, since the setup and run is a lot simpler, it is even
preferred over formal verification.

    - Mayank Gupta
      Shromila

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

From: Jason Su <Jason_Su@pmc-sierra.com>                

John,

As a circuit designer using Innologic's ESP for 2 years and recently having
a successful tapeout on a MIPS microprocessor, I see clearly what the
confusion and fear are in the mind of John Weiland of Intrinsix.  Confusion
about what a symbolic simulator really is, and fear of new things.  If you
first understand there are 4 basic types of verifications: SPICE, Verilog
or VHDL, Formal Verification (such as Chrysalis, Verplex, etc.), and
Symbolic; and what we do with each:

  1. SPICE: analog simulation is accurate on devices but not on systems
     due to drastic simplification often required to be made on the models;
     its limited capacity and speed make it inappropriate for serving as a
     logic verification tool for even a typical RAM design (even with the
     most modification and simplification).
    
  2. Verilog/VHDL: binary digital simulator for logic verification which
     doesn't require high coverage, or CPU time isn't an issue.

  3. Formal Verification: a tool to guarantee 100% coverage, if everything
     in the design is straightforward like static logic; otherwise, like
     SPICE, manipulations such as attribute labeling, black-boxing, etc.
     are required.  This is where you lose your coverage.

  4. Symbolic: just like "2" having the coverage of "3" w/o manipulations.

So it does sound like what John Weiland said, "turn your ordinary Verilog
simulator into a symbolic simulator and can also add formal verification",
is not quite true.  Symbolic simulation is no formal verification tool.  It
is a simulator which makes covering all cases possible (especially with its
hierarchical compression).
 
    - Jason Su
      PMC-Sierra

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

From: Dennis Yau <dyau@t-ram.com>

Dear John,

It is quite interesting to read those comments on Innologic tools.  From
my experience, I think it's more a front-end tool for the back-end
designers.  I have been using ESP-CV from InnoLogic in my current company.
We used it for equivalence checking of our SPICE netlist against our RTL
model for the full custom design blocks including register files, memories,
caches and etc.  ESP-CV requires very minimum logic modeling effort for
custom designed blocks. Most of the net-lists from schematic can just
directly go to the flow, for circuit designers who usually are
uncomfortable with modeling that is a big plus.

    - Dennis Yau
      T-Ram, Inc.                                San Jose, CA


( ESNUG 400 Item 12 ) -------------------------------------------- [10/10/02]

From: Rahm Shastry <rahm@tharas.com>
Subject: ( DAC 02 #12 ) Tharas Rebutts The Anonymous User Comment About It

Hello John,

Please allow me to respond to the statement made by "an Anon Engineer" in
DAC'02 Trip Report (http://www.deepchip.com/items/dac02-12.html): you
published last week. The comments were as follows

  "Moving on to Tharas (a small upstart that seems to be teetering on
   going under) they have a HW accelerator, but no SW simulator.  Thus
   they have to rely on VCS or NC-Verilog to run, and they have to use
   the links to PLI through NC-Verilog and VCS.  Seems akward.  They
   also have their own ASIC, and thus are stuck with re-design to improve
   speed and scale and performance.  Tharas cannot deal with certain
   design constructs like latches, and they are also a cycle-based
   simulator."

       - [ An Anon Engineer ]

a) "a small upstart that seems to be teetering on going under":

Judging from our Q3 02 revenue, we are far from going under -- we have
booked record revenues this quarter and have added marquee customers such as
Sun, Adaptec, Matsushita, and Rohm among others in 2002 alone!

b) "they have a HW accelerator, but no SW simulator.  Thus they have to rely
on VCS or NC-Verilog to run, and they have to use the links to PLI through
NC-Verilog and VCS.  Seems akward.":

This is intentional, John! Think about it -- why should a startup develop
and offer its own s/w simulator when VCS and NC-Verilog together have 90+%
of marketshare. We believe offering a competing s/w simulator is a liability
to a startup, not necessarily an asset. We focus only on hardware
accelerators -- not emulators or s/w simulators.

c) "They also have their own ASIC, and thus are stuck with re-design to
improve speed and scale and performance":

Having your own ASIC means, you can now offer a price/performance that is
unmatched by FPGA-based implementations. This is why, our offering is 1/3rd
the cost of an equivalent FPGA-based system. No wonder in the current "Capex
crunch" environment, we are winning accounts over prohibitively priced
FPGA-based offerings. Not to mention the long compile times and capacity
constraints (due to Rent's rule), one experiences with FPGA-based systems.
This is why Quickturn, the pioneer in acceleration/emulation systems has
moved away from FPGA-based systems.

d) "Tharas cannot deal with certain design constructs like latches, and they
are also a cycle-based simulator".

Tharas handles latch-based designs. We are *not* a cycle-based simulator. We
handle gated clocks, multiple clocks, asynchronous cycles and system calls
(such as $display).

I look forward to the rebuttal in your next installment of ESNUG & DeepChip.

    - Rahm Shastry
      Tharas Systems                             Santa Clara, CA


( ESNUG 400 Item 13 ) -------------------------------------------- [10/10/02]

From: Milan Bhatt <milan.c.bhatt@intel.com>
Subject: How Can I Get UNIX-like Shell Capabilities Inside Synopsys Tools?

Hi John,
 
I've been working with Design Compiler for a while now and I've noticed
that the Synopsys shell is lacking all the great features that are usually
present in the UNIX shell (ie, command/path completion, up arrow/down arrow
history, etc.)  I've found a lot of Perl/TCL wrappers that add these
features, but I'd like to find something that works directly inside the
tool.  I'd like to avoid wrappers since they tend to get messy.
 
So mostly I'm looking for either a TCL script that allows UNIX shell like
features after its been sourced, or to have Synopsys support this natively
within the tool.  Do you know of any scripts that can be sourced to give you
these capabilities or have you heard anything about when Synopsys is going
to have native support for this in the tool?
 
I found a tclreadline module that allows me to get those Shell capabilities.
The problem is that I can't read in the compiled module since Synopsys has
disabled the TCL "load" command.
 
Know of any way to turn on the TCL load command?  :)

    - Milan Bhatt
      Intel


( ESNUG 400 Item 14 ) -------------------------------------------- [10/10/02]

Subject: Wall Street Analysts Should Read The Merrill Lynch SNPS Report

> If you have a couple minutes, I attended the Synopsys Wall St. analyst
> conference last week.  It was rather boring, but would like to compare
> notes w/ you.
>
>     - Cliff Conwell
>       EnTrust Capital                          New York, NY


From: John Cooley <jcooley@theworld.com>

Cliff,

I generally have no problem talking with you Wall Street types, but I'd
like to suggest that you somehow get your hands on the Oct. 8th 2002
Merrill Lynch write up on the SNPS analyst's conference.  It's by Jay
Vleeschhouwer.  Out of all the summaries I've read, Jay's was the best
one around that summarized the issues facing Synopsys and Cadence, plus
he didn't have any of the usual glaring errors I typically find in
analyst's reports.

    - John Cooley
      the ESNUG guy


( ESNUG 400 Item 15 ) -------------------------------------------- [10/10/02]

From: Steve Golson <sgolson@trilobyte.com>
Subject: Golson's Comparison Of Formality vs. Chrysalis Design VERIFYer

Hi, John,

I've been using formal verification for about a year to verify some very
extensive ECOs being made to a multi-million gate netlist.  (More on that
later; I plan on writing a SNUG paper about the methodology.)

We started out using Chrysalis Design VERIFYer, which was subsequently
acquired by Avanti and recently by Synopsys.  I was able to use Synopsys' own
formal verification tool Formality to re-run some of this work.  What follows
is a summary of my experience with the two tools.  I've got some critical
comparisons, and some suggestions for improvements.

I used many versions of Design VERIFYer; most recently all my work has been
with the current version v2001.3.

All my Formality work has been with 2002.05.

1. Formality has much easier setup than Design VERIFYer.  The GUI and "flow"
methodology was pretty intuitive and made it easy to get started.
(Caveat: it probably helped that I was already an experienced Design VERIFYer
user, and understood a lot of the fundamental issues with equivalence
checking.)

2. Formality has a *much* nicer schematic display.  It looks similar to
Design Vision.

3. Formality has nicer Tcl scripting.

4. Formality matching uses syntax stolen from "sed" which allows you to
easily try it out before running the tool (and without consuming a license).
Nice!

5. Design VERIFYer schematic window splits vertically as well as
horizontally.  Also there are buttons to turn off each A/B view
independently.  Very nice when you are just poking around in one netlist.

6. In the Formality schematic, when you roll over an object, the pin name
should appear.  (And when you click on it.)

7. When Formality shows a failing pattern, it doesn't do a very good job
showing equivalent nets.  You need to show the mapping somehow.  Design
VERIFYer does a good job displaying all the logically equivalent names for a
signal.

8. Formality set_equivalence should work on pins.  Also need to allow
set_invert on pins and nets.  I suppose I should just use
create_cutpoint_blackbox and turn all my pins into ports.

9. In Formality when you click the GUI button "3. Setup" button, you aren't
automatically in Setup mode.  At first I thought this was a bug, but now I'm
convinced it's a feature.  Here's a great explanation from a Formality
specialist at Synopsys:

  This is designed to save new users (or harried experienced users, or user
  who are just dumb as posts like me) from themselves.  One of the really
  nice things about Formality is that it allows the user to iterate through
  the major steps without repeating a lot of computation.  The best example
  is the compare point matching stage.  If Formality were unable to fully
  match the designs and you needed to give it help, then after giving it that
  help once you hit the run matching button the tool will only operate on the
  subset of points that were unmatched.
  
  The way Formality used to work and the way I think Design VERIFYer works
  today, if you need to give the tool some help once you matched again the
  tool would start the entire matching process from scratch.  A waste of CPU
  cycles for one thing.  In some cases people got in trouble that way.  Let's
  say they were not as good with SED as they thought they were.  The SED rule
  they applied may have farther reaching affects than planned and caused some
  points to misalign.  The odds of that are greatly reduced if the rule only
  impacts the subset of unmatched points.  Another great benefit is that it
  allows for optional automatic matching techniques to be applied with
  greater success (greatly minimizing the need to ever write a SED rule).
  There is an optional algorithm that matches based on the best subset set of
  a name.  Sometimes the best subset match is not the right match (that is
  why it is optional).  With the iterative approach this can be turned on
  after the first matching has been attempted, therefor it is only working on
  the subset of unmatched points, thus greatly improving the odds that the
  best match is the right match.
  
  OK so iterative matching is a cool thing, what does that have to do with
  the setup button that won't put me in setup mode? Well, changing setup
  variables changes the ground rules for matching, making the matching
  results invalid.  If you revert to setup mode we have to dump the matching
  data and start from scratch again.  Since you are throwing away good work
  we want to be sure that is really what you want to do.  Sometimes people
  want to go to the setup screen just to check on the setup variables, not to
  change them.  By making you forcibly put us in set up mode (by typing setup
  or punching the "revert to setup" button on the setup screen) we allow you
  check without throwing away the matching info.  Make sense? In a flow where
  you end up going back to setup to change things this seems a bit clunky at
  first, but it enables us to implement iterative steps that greatly
  facilitate verification in the normal flow of things.
  
  Did I use the word greatly enough in that explanation?

10. Formality sometimes takes several minutes to exit after the

                  "Thank you for using Formality (R)!"

message.  This is weird.  I can't figure out what it's doing.  Formality
generates a work area and deletes it after its finished (the FM_WORK
subdirectory) so maybe that's what is going on.  Very strange.

11. Formality uses signature analysis to help figure out signals that match
in the two netlists.  This is cool! It can make matching very simple, as you
don't have to specify every little flop equivalence.

12. When Formality shows failing sim patterns, it should show the pin name as
well as the instance name.  Sometimes it's QN rather than Q, and having the
pin name makes it much easier to understand what's going on.

13. Design VERIFYer displays a *VERY* nice comparison of internal nets in rtl
mode!  For example, here's a snippet from a Design VERIFYer log_verify file:

      Equivalence #3787  - The two groups are equivalent.
      ->   NSB        +1 17258     A.$371
                      +1 17258     A.make_it_idle

                      +1 5324      B.n15216
                      -1 13346     B.n15221
                      -1 13346     B.X14130.Z
      ->   NSB        +1 5324      B.X14251.Z

So now I know that my internal rtl signal "make_it_idle" appears on netlist
wire "n15216" and an inverted version on "n15221".  This is great when you
are trying to hack in a gate-level ECO.

Formality doesn't seem to do this (at least I never figured out how).
Perhaps this is because VERIFYer often splits logic cones on non-state point
boundaries (NSB) while Formality mostly uses state points (i.e. flops).  From
the Design VERIFYer manual:

  Non-State Boundaries (NSBs) are intermediate pseudo-statepoints that are
  occasionally used within a logic cone to help manage comparisons between
  usually large logic cones.

My Synopsys specialist tells me:

  On the topic of splitting things on non-state boundaries, Formality can do
  that also.  It happens under the hood sometimes for the same reason noted
  in the Design VERIFYer manual (making large cones more manageable).  As the
  user you can also insert this points in the cone if you want to.  What you
  are doing is inserting a single input/single output black box in the logic
  cone (create_cutpoint_blackbox is the command if memory serves).  Perhaps
  there is some additional reporting we can do in cases where we have done
  this under the hood and therefor know something about the equivalence (or
  non equivalence) of the various subcones.

It would be interesting to see if Design VERIFYer splits things into more
NSBs than Formality (i.e. does Formality tend to have larger logic cones).

14. Design VERIFYer requires separate "build" and "verify" steps.  This
requires two different licenses (normally you get one of each).  This allows
you to parallelize your work (you can build on one machine while you compare
on another).  Very nice.

15. Formality allows you to quickly and easily check just one output, and
ignore all the rest.  You can do this in Design VERIFYer, but it's painful.

16. Formality can read synthesis .db libraries directly, while Design
VERIFYer has to read your sim models.  This adds some time and complexity to
the Design VERIFYer runs.  "But wait!" you say.  What if there is a bug in
the synth library?  Well, simply do a comparison of the two libraries first,
then you know that both representations are equivalent.  Or you can always
have Formality read the sim libs rather than the .db library.  (Reading cell
models on demand can sometimes be more efficient than read in the whole lib
as you have to do with .db libs.) Formality has this cool "-vcs" option where
it can use the same command-line syntax as VCS for specifying files,
libraries, directories, etc.


This brings me to the old canard "Formality shares code with Design
Compiler".  Maybe this was true a long time ago (back when the earth was
still cooling), but is no more.  The *important* and *critical* code is
separate.  Separate development, separate people.

Nevertheless I think that it is a *good* thing if *some* of the code is the
same: I like having the schematic display look like Design Vision, for
example.  Also being able to read .db files is great.  (The paranoid among us
can do a library verification against your sim models to be sure.)


Finally, here's a head-to-head comparison of both tools on a variety of
netlists.  These are all gate-to-gate equivalence checks.

All runs were done with 32-bit executables under Solaris 8 running on a
750MHz Sun Blade 1000.  The CPU time for Design VERIFYer is the sum of the
two build runs plus the verify run.

The following designs are all structurally identical.  Design VERIFYer's
name-based compare mode was used.  Even for rather large designs the runs
only take a few minutes.  Design VERIFYer is consistently faster than
Formality, and also requires less memory.  It appears that Design VERIFYer's
name-based algorithm is much more efficient than Formality's algorithm.

  DV = Design VERIFYer
  FM = Formality

                              CPU time     memory        swap
                               (hours)    (Mbytes)     (Mbytes)
  Design    Cells   Flops     DV    FM    DV    FM     DV    FM
  --------------------------------------------------------------
  M5       100143   20261    0.1   0.2    411   938    449   964
  M8        89507   13128    0.1   0.2    339   897    380   923
  M9        86373   13989    0.1   0.2    369  1105    409  1131
  M11       81557   11798    0.1   0.2    291  1116    314  1142
  M12       75459   11751    0.1   0.1    261   896    291   921
  M14       73636    7745    0.1   0.2    245  1076    273  1101
  M18       58860    6891    0.1   0.1    223   879    263   904
  M20       46704   10065    0.1   0.1    195   865    235   890
  M21       46704   10065    0.1   0.2    202  1055    243  1080
  M24       38041    6224    0.1   0.1    174   868    214   893
  M26       35213    5111    0.1   0.1    155   859    196   884
  M27       32116    5804    0.1   0.2    242  1064    252  1090
  M28       31356    6422    0.1   0.1    160   858    201   883
  M29       31258    5859    0.1   0.1    155   858    196   883
  M34       27740    4120    0.0   0.2     76  1047     86  1072
  M35       26894    5033    0.0   0.1    120   859    131   883
  M39       26558    3079    0.1   0.1    169  1047    179  1072
  M40       25834    2913    0.0   0.1     92  1047    102  1072
  M41       25260    4146    0.1   0.1    130  1047    170  1072
  M44       20754    4455    0.0   0.1    100   859    110   884
  M45       20221    4877    0.0   0.1     71  1047     81  1072
  M46       17341    3083    0.0   0.1     67  1048     77  1073
  M47       16914    1259    0.0   0.1     53  1048     64  1073
  M48       15467    2979    0.0   0.1     16   859     27   884
  M49       15056    2977    0.0   0.1     69   859     79   884
  M50       15056    2977    0.0   0.1     80   859     91   884
  M51       11674    1783    0.0   0.1     16   859     27   884
  M52        9767    1143    0.0   0.1     48  1048     58  1073
  M53        7019    1293    0.0   0.1     16   859     27   884
  M55        4330     864    0.0   0.1     29  1048     39  1073
  M56        4189     575    0.0   0.1     16   860     27   884
  M57        2883     388    0.0   0.1     16   860     27   884
  M58        2529     428    0.0   0.1     16  1048     27  1073
  M60        1178     205    0.0   0.1     16  1048     27  1073
  M61         517       0    0.0   0.1     16   859     27   884
  M62         510       0    0.0   0.1     16  1048     27  1073
  M63         343       0    0.0   0.1     16  1048     27  1073

The following designs are structurally different, requiring much more
computation.  Design VERIFYer was run in "rtl" mode.

                              CPU time     memory        swap
                               (hours)    (Mbytes)     (Mbytes)
  Design    Cells   Flops     DV    FM    DV    FM     DV    FM
  --------------------------------------------------------------
  M1      1282859  165728    ---   3.9    --   2287    --   2622
  M2      1026971  157077    ---   1.4    --   1670    --   1819
  M3       108025   16890  202.2*  0.6   1036  1286   1088  1315
  M4       104761   10388    3.0   0.3   1153  1188   1192  1216
  M6        91340    7403   12.9   0.4   1132  1073   1170  1105
  M7        90412   13862   19.5   1.0   1259  1178   1303  1207
  M10       84832    9167    0.8   0.2    943  1152    983  1181
  M13       73829    5920    0.2   0.2    445  1123    485  1148
  M15       71201    9339    3.8   0.2    611   917    651   943
  M16       66820    5927    3.7   0.3   1021  1254   1058  1283
  M17       64583    7592    4.9   0.1    828   883    867   908
  M19       47202    7346    0.1   0.2    297  1060    335  1085
  M22       43428    6569    0.2   0.2    392  1058    432  1083
  M23       38342    5785    1.0   0.2   1241  1068   1281  1093
  M25       35337    4748    2.9   0.5    736  1126    775  1154
  M30       30390    2811    0.2   0.1    233   898    272   922
  M31       29165    4298    0.4   0.2    356   867    394   892
  M32       28405    5275    0.1   0.1    262   887    300   912
  M33       28281    3911    0.6   0.2    348   920    387   946
  M36       26878    2652    1.1   0.2    986  1047   1025  1072
  M37       26780       0    ---   0.6     --  1145     --  1174
  M38       26780       0    ---   0.7     --  1145     --  1174
  M42       21116    3833    0.1   0.1    268   860    307   884
  M43       20768    2967    0.1   0.1    146   859    187   884
  M54        5912     729    0.0   0.1     17   859     27   884
  M59        1423     393    0.0   0.1     16  1048     27  1073

* Design M3 did not successfully complete when run under Design VERIFYer
(some endpoints had "timeouts").  I was unable to resolve this problem.  Note
that Formality was able to complete this design in under an hour.

Designs M37 and M38 never completed when run under Design VERIFYer (I killed
it after 531 hours).  Designs M1 and M2 were not attempted under Design
VERIFYer.

However Formality had no problem with any of the designs, even the largest
which has over 1.2 million instances.  The Formality run time is much much
less than Design VERIFYer, with all runs (except the largest) taking under an
hour.

In short, Formality capacity is outstanding.  It handles multi-million gate
designs with ease.

Memory usage is similar betweeen the two tools.

Notice that the size of the design (number of cells, number of flops) is
*not* a perfect predictor of how long the run will take.  As always, your
mileage may vary.  The underlying complexity of the design has a huge impact
on the ability of the tool to successfully complete.

My hope is that now that Synopsys owns both Design VERIFYer and Formality,
the strengths of each will be combined into one really outstanding formal
verification tool.

    - Steve Golson
      Trilobyte Systems                          Carlisle, MA


============================================================================
 Trying to figure out a Synopsys bug?  Want to hear how 14,488 other users
  dealt with it?  Then join the E-Mail Synopsys Users Group (ESNUG)!
 
     !!!     "It's not a BUG,               jcooley@TheWorld.com
    /o o\  /  it's a FEATURE!"                 (508) 429-4357
   (  >  )
    \ - /     - John Cooley, EDA & ASIC Design Consultant in Synopsys,
    _] [_         Verilog, VHDL and numerous Design Methodologies.

    Holliston Poor Farm, P.O. Box 6222, Holliston, MA  01746-6222
  Legal Disclaimer: "As always, anything said here is only opinion."
 The complete, searchable ESNUG Archive Site is at http://www.DeepChip.com




 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)