"Stock prices have reached what looks like a permanently high plateau."

       - economics professor Irving Fisher of Yale University, a few
         months preceeding the October 1929 stock market crash


( ESNUG 359 Subjects ) ------------------------------------------- [9/13/00]

Item  1 :  May God Help You If You Use The Synopsys Dual-Clock DW FIFO Parts
Item  2 :  User Reactions To Cadence's New "cdsdoc" (OpenBook Replacement)
Item  3 :  BOA, simple_compile_mode, Area Recovery, Vera, & Boston SNUG'99
Item  4 :  Tools/Ways To Draw On-Grid 45 Degree Lines In Cadence Layouts
Item  5 :  Designer Seeks DC/PT Script To Detect Paths Across 2 Clock Domains
Item  6 :  How Would You Design An Over 64-bit Multiplier-Accumulator (MAC)?
Item  7 :  My Design's Very Small & I'm Looking For Cheap-But-Good ATPG
Item  8 :  Workaround For A Little Control-C "dc_shell | tee logfile" Gotcha
Item  9 :  Exactly How Did You Use ClearCase For Your Design Data Management?
Item 10 : ( ESNUG 358 #7 ) DW PCI Core Doesn't Work For Both FPGAs & ASICs!

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


( ESNUG 359 Item 1 ) --------------------------------------------- [9/13/00]

From: "Jay Adams" <Jay.Adams@marconi.com>
Subject: May God Help You If You Use The Synopsys Dual-Clock DW FIFO Parts

Hi, John,

You may be aware Synopsys admits 2 bugs in the DesignWare dual-clock FIFOs
and FIFO controller (DW_FIFO_S2_SF and DW_FIFOCTL_S2_SF.)  Those are only
the beginning.  Here are two additional features that they did not tell you
about:

  1) When in the almost_empty state, the pop_ae flag can be deasserted at
     any time there is a push, regardless of the number of words in the
     FIFO.  There is similar behavior for the half_full & almost_full flags.

  2) When pushes and pops are occurring simultaneously, the empty state can
     be mistakenly hit regardless of how many words are in the FIFO.  Yes,
     that's right, the empty state, and if your logic can't tolerate a
     break in the data flow or you don't monitor the empty flag, then you're
     screwed.

In other words, the flags on these Synopsys dual-clock DW FIFO parts are
useless.

I'm not going to explain the nuances of this behavior, I expect Synopsys to
do that and my time is needed to salvage the DISASTER that Synopsys has put
me in.  I am writing this note because it is Synopsys's opinion that the
behavior designed above is as they designed it.  Heres a summary of their
position:

  "Yes, we are coming out with a new version on the next CD release
   that doesn't exhibit these "qualities", but that is in no way is an
   indication that we have done anything wrong in this component.  Since
   the FIFO is working as *we* have always intended it to, we do not
   intend on informing the design community."

And heres one more bit of information.  The FIFO model that they intend on
including in the next CD release will fix the above bugs, but only if the
depth is a power of 2.  If its not a power of 2, then the bugs can still
occur!  They claim that they will document this clearly.  They also claimed
to me that bugs I listed are also documented in the current documentation.
So go read that and decide for yourself what they mean by documentation.

So heres what I say to the design community: If you are using Synopsys's
dual-clock DesignWare FIFO controllers - May God be with you.  This only
applies to the dual clock FIFO controllers, because I'm sure that everything
else in DesignWare is absolutely stable and that they are not holding any
"as designed" behaviors to themselves.

    - Jay Adams, Manager, ASIC Design
      Marconi Communications                     Warrendale, PA


( ESNUG 359 Item 2 ) --------------------------------------------- [9/13/00]

From: jdl@user2.teleport.com (Jay Lessert)
Subject: User Reactions To Cadence's New "cdsdoc" (OpenBook Replacement)

Let me preface this by saying that it *is* possible that I'm the only
Cadence customer in the world that actually likes OpenBook.  :-)

But I've found OpenBook to be far and away superior to any on-line
documentation I've used from Mentor, Avant! or Synopsys.

I just loaded LDV 3.1 (I'm currently running IC 4.4.3/4.4.5 and LDV 3.0
in production), and was surprised to find OpenBook gone, replaced by an
HTML-based thing called cdsdoc.  They fire up an http server (from
Verity, Inc., apparently) on localhost port 9000, attempt to hijack any
web browser you already running, and away you go.

I've no quarrel with the document *content* (which is largely unchanged,
as you would expect).  But I've run into the following miscues, omissions
and differences compared to OpenBook.  I'm not happy.

 1) We fire up an http server running as the user on port 9000.  I know
    nothing about Verity Inc., but if I was in a security-conscious
    environment, I would *never* do that with (e.g.) Apache; it's just
    asking for trouble.

 2) We hijack the existing Netscape browser window if it exists.  Bad
    idea.  Guess what?  I had that window up for a *reason*, and I didn't
    want it to disappear without warning.

 3) cdsdoc is useless unless we have JavaScript enabled on the
    browser.  Blank pages.  Apparently no one at Cadence is aware of
    the vast array of JavaScript security problems embodied in modern
    browsers.  This is really very serious.

    Worse, there is no attempt to warn of this, either in the HTML, or
    in the documentation.

 4) While the content of documents (e.g., Verilog-XL reference manual) is
    the same, the formatting is no where near as good as OpenBook; this
    is to be expected with HTML, of course, and the formatting is not
    bad, considering.  But a loss nonetheless.

 5) The search window is replaced when I say "Go" (replaced by the
    search output).  This makes iterated, increasingly refined searches
    much more painful.  Unforgiveably, when I hit "Back" to return to
    the search page, there is no history.  Hmmm, no, I see.  You only
    get history with cookies enabled, another security problem, and
    no attempt to warn the user.

    Even with cookies enabled, the history is only for the "current"
    search, nothing like OpenBook's history list.

 6) The documents I've looked at so far have no hot-button for Index,
    so I have to go to Contents, *then* Index.  This should be pretty
    trivial to fix, of course.

    The Verilog-XL Reference Index takes 5 seconds to load every single
    time I go to it (Ultra30/300).  This appears to be Netscape rendering
    time, I guess.  OpenBook is instant once the document is loaded.

I think I understand the motivation behind the change (Adobe declines
to port Frameviewer to Linux, right?), and if I only compare cdsdoc to
Mentor & Avant!'s offerings, it still whips 'em pretty good.

But I'm gonna cuss every minute I spend over the next two-three years
getting cdsdoc up to where it needs to be.  C'est la vie, huh?

    - Jay Lessert                                Portland, Oregon

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

> Let me preface this by saying that it *is* possible that I'm the only
> Cadence customer in the world that actually likes OpenBook.  :-)
>
> But I've found OpenBook to be far and away superior to any on-line
> documentation I've used from Mentor, Avant! or Synopsys. ...
>
>     - Jay Lessert                                Portland, Oregon


From: jeffb@el.nec.com (Jeff Buckles)

You're referring *only* to the Cadence doc infrastructure, right?  Their
doc tools, formatting and layout, not the content?  I hope?

At risk of starting a "my docs were worse than your docs" war, I must say
that the only documentation *content* that I found less useful than the
Cadence doc was the old Valid documentation.  Of course nothing could beat
the ASIC vendor's doc that explained an "Item Error" message by "There is
an error in the item".

Here's an example:  The CTGEN documentation uses the expression
"rise_fall_min_max" in the syntax description for some commands.  One could
reasonably expect to find the definition of "rise_fall_min_max" by going to
section "R" in the index.  To quote a co-worker "You could think that.  But
you'd be wrong."

It has been this way *any* time I try to find useful information in
Cadence's OpenBook, among physical verification, physical design, timing,
and P&R tool docs.  Only the Verilog docs come close to having a useful
index.

So, thanks for raising the topic, thereby giving me a chance to vent this
long-suppressed rant.  Now I'll sit back and start watching the flames fly.

Oh, regarding the HTML docs, HLD seems to have gotten it pretty close to
"right".  They still "hijack" your browser ( -remote OpenURL() ) but they
reference a static hierarchy of html files that (IIRC) do not use
javascript.  Too bad Cadence didn't stick with this....

    - Jeff Buckles
      NEC Electronics Inc
      Portland ASIC Design Center

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

> You're referring *only* to the doc infrastructure, right?  The doc tools,
> formatting and layout, not the content?  I hope?

From: jdl@user2.teleport.com (Jay Lessert)

Hmmmm, nope.  I'm talking "percentage of time I find what I need in the
docs, and how long it takes me to find it".


> Here's an example:  The CTGEN documentation uses the expression
> "rise_fall_min_max" in the syntax description for some commands.  One
> could reasonably expect to find the definition of "rise_fall_min_max" by
> going to section "R" in the index.  To quote a co-worker "You could think
> that.  But you'd be wrong."

Use the force... :-)  While it's unfortunate the some of the indices
suck, I just did a full search for "rise_fall_min_max", and hit the
BNF for rise_fall_min_max in the GCF  reference manual:

    rise_fall_min_max	
	::=	NUMBER
	||=	NUMBER NUMBER
	||=	NUMBER NUMBER NUMBER NUMBER

Not that this is terribly exciting...

    - Jay Lessert                                Portland, Oregon

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

From: Barbara Heninger <barbh@cadence.com>

Jay,

Thanks for your comments about using the new web-based online documentation.

Yes, change is annoying, and using a new system is always frustrating when
you're used to another.  I'm appending an HTML file that outlines how to do
similar tasks in OpenBook and in the new web-based system.  It was our goal
to avoid losing any features that were in the previous system.  The
differences between the two browsers mean that we do have to do some things
differently.

Regarding some of the specific comments:

 * If you prefer a "page"-like look and feel, we do provide PDF versions
   of each of the documents. Click "View/Print PDF" from any document
   and you'll open a PDF version of the entire book in Acroread/Acrobat.
   The PDF versions include a hyperlinked table of contents, and hyperlinks
   within that document are supported. The PDF versions are optimized
   for printing part or all of a book.

 * It's not clear how running a local http server compromises your system's
   security. Can you explain your concerns in more detail?

 * Over the years, we've received comments from customers both saying
   we open "too many" windows, and saying we should always open
   additional windows whenever opening any document. We get slightly
   more comments asking us to re-use windows (that's why OpenBook
   reuses its windows by default). We're going to add a "Preferences"
   command to the next iteration of cdsdoc that lets you choose:

    - Whether to open a new browser window when starting the system
    - Whether to open a new browser window when showing Search results

   At present, you can use your browser's New command to open a second
   window and then start cdsdoc. Not optimum, I grant you.

 * We use JavaScript 1.3 by default, which is available if you use Netscape
   4.51 or higher or Internet Explorer 5.0 or higher. The requirements for
   the browsers is stated in the documentation, but it doesn't state
   explicitly that one reason is due to use of Javascript; I will add that
   to the documentation now! Thanks for pointing this out.

 * Cookies are not required, but as you note, turning them off means
   any changes or entries you made in the Search form will not be
   kept. Accepting cookies internally shouldn't be a security issue,
   but I understand if your browser is on the web you may have turned
   cookies off. I will add a note to the documentation about the
   use of cookies.

 * Yes, we are going to add a navigation button for "Index." We had
   omitted it only because, at the time this system was developed,
   many writing groups were not creating indices due to lack of manpower.

 * You are correct, one reason for the change is that supporting a
   separate browsing tool that is not always available on all platforms
   is a big issue for us. But we also changed because, since 1996,
   customers have been asking us when we would provide HTML-based
   documentation. They preferred to use a single browser and were
   familiar with web browsers, and they wanted to be able to link
   directly to Cadence documents from internal sites.

   At the International Cadence User's Group meetings in 1997 and 1998,
   more than half of the users said they would like a web-based system.
   Even more wanted a central website from which they could view documents,
   but supporting that is more difficult due to issues regarding
   which user has access to what document. We are still looking
   into how to support this.

   At the ICUG meeting in 1999, we showed a prototype of this system
   and told users that this would be the future system. We asked for
   feedback and got responses like "We've needed this for a long time!"
   We asked users to try the system and a clear majority ("Yes" answers
   ranged from 91% to 99% of responses) said that they thought the
   new system would meet their needs for tasks like finding information
   about their products, finding information in specific books, and
   generally browsing installed documentation. Granted, looking at a
   system in a demo is different than installing it on your own machine.

I appreciate your comments and hope that some of this information
can help you with the new system.  I will also make the changes you
suggested in the documentation.

    - Barbara Heninger
      Sr. Tech Pubs Consultant
      Cadence Design Systems                     San Jose, CA


[ Editor's Note: I put Barbara's html file in the "Downloads" section of
  http://www.DeepChip.com to save space in this ESNUG post.  - John ]

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

From: jdl@user2.teleport.com (Jay Lessert)

Barbara,

Thank you so much for your follow-up, it is greatly appreciated.

> * If you prefer a "page"-like look and feel, we do provide PDF versions
>   of each of the documents. Click "View/Print PDF" from any document
>   and you'll open a PDF version of the entire book in Acroread/Acrobat.
>   The PDF versions include a hyperlinked table of contents, and hyperlinks
>   within that document are supported. The PDF versions are optimized
>   for printing part or all of a book.

I haven't noticed that yet.  Yes, that should take care of the times
when you're doing extended reading and format matters more.  At the
expense of a fair bit of disk, I suppose.  :-)

    % du -s ldv30/doc
    61825   doc
    % du -s ldv31/doc
    120665  /tools/ldv31/doc

Yup!


> * It's not clear how running a local http server compromises your system's
>   security. Can you explain your concerns in more detail?

This matters in organizations that need to enforce host-by-host
security.  Universities are the extreme example, but some corporations
operate this way.

cdsdoc ends up with something like this:

    katra:/home/jayl 6> bps | egrep 'PID|https'
    USER   PID %CPU %MEM  VSZ  RSS TT     S    STIME  TIME COMMAND
    jayl 11246  0.7  1.5 7128 3672 pts/6  S 13:56:11  0:00 ./https -port 9000 -silent -p cdsdoc

and anyone can connect to it:

    katra:/home/jayl 7> telnet katra 9000
    Trying 192.168.17.51...
    Connected to katra.
    Escape character is '^]'.
    HTTP / 1.0
    HTTP/1.0 200 OK
    Date: Tue, 01 Jun 1999 10:10:10 GMT
    Expires: Tue, 01 Jan 1980 10:10:10 GMT
    Server: Verity CDPub Search Engine 4.0
    MIME-version: 1
    Content-type: text/html

Since the server runs as the local user, the concern is that (for
example) a buffer overflow/stack-smashing exploit on the server would
be able to run commands or read files as that local user.  There are
any number of such exploits available for various versions of Apache,
IIS, Netscape/Enterprise, etc. this is one reason why a normal Unix
Apache or Netscape/Enterprise installation usually runs as user
"nobody".

A Google search for +exploit +apache, or +exploit +iis may be
illuminating.  Even a search for +exploit +verity looks interesting,
though I didn't do any detailed reading.  :-)


>  Over the years, we've received comments from customers both saying
>  we open "too many" windows, and saying we should always open
>  additional windows whenever opening any document.  We get slightly
>  more comments asking us to re-use windows (that's why OpenBook
>  reuses its windows by default).

My sympathies, I know you can't make 'em all happy.  There is a bit
of qualitative difference between hijacking a Frameviewer window
(which is most likely not being used for anything besides OpenBook)
and hijacking a Netscape window (which is almost certainly being used
for 10 things besides cdsdoc).


>  We're going to add a "Preferences"
>  command to the next iteration of cdsdoc that lets you choose:
>
>  - Whether to open a new browser window when starting the system
>  - Whether to open a new browser window when showing Search results

Terrific.  That goes a long way.  Make sure I can set a default for
the full installation, then let users override if they need to.


>  At present, you can use your browser's New command to open a second
>  window and then start cdsdoc.

Yup, I'm opening training myself to grab Netscape and do an alt-N before I
click help.


> * We use JavaScript 1.3 by default, which is available if you use Netscape
>   4.51 or higher or Internet Explorer 5.0 or higher. The requirements for
>   the browsers is stated in the documentation, but it doesn't state
>   explicitly that one reason is due to use of Javascript; I will add that
>   to the documentation now! Thanks for pointing this out.

The issue with JavaScript is security, not available versions.
In the paragraph below you can basically s/cookies/JavaScript/g.


> * Cookies are not required, but as you note, turning them off means
>   any changes or entries you made in the Search form will not be
>   kept. Accepting cookies internally shouldn't be a security issue,
>   but I understand if your browser is on the web you may have turned
>   cookies off. I will add a note to the documentation about the
>   use of cookies.

That's a good start.  Both JavaScript and cookies need to be in
doc/cdsuser/trouble.html, for sure.  And it would be preferable
if the server could check and generate warnings, as well.

> * Yes, we are going to add a navigation button for "Index." We had
>   omitted it only because, at the time this system was developed,
>   many writing groups were not creating indices due to lack of manpower.

Good, thanks.  You do have existing OpenBook documents that do have
good indexes (Verilog-XL reference manual comes to mind in the current
context), there's no reason to handicap it just because other documents
are deficient.


> * You are correct, one reason for the change is that supporting a
>   separate browsing tool that is not always available on all platforms
>   is a big issue for us. But we also changed because, since 1996,
>   customers have been asking us when we would provide HTML-based
>   documentation. They preferred to use a single browser and were
>   familiar with web browsers, and they wanted to be able to link
>   directly to Cadence documents from internal sites.

Hmmm, we've been running tools/bin/viewer from our .mailcap for years:

    application/framemaker;viewer.netscape %s
    application/msword;soffice %s
    application/pdf;acroread %s
    application/postscript;ghostview %s
    application/vnd.ms-access;soffice %s
    application/vnd.ms-excel;soffice %s
    application/vnd.ms-powerpoint;soffice %s

>  At the International Cadence User's Group meetings in 1997 and 1998,
>  more than half of the users said they would like a web-based system.

Well, I guess you've finally given me a reason to go to ICUG. :-)

Thanks again for responding publically.

    - Jay Lessert                                Portland, Oregon

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

From: "stockg" <stockg@yahoo.com>

The real reason for changing is neither User Group nor everything else
mentioned by the Cadence doc writer.  They are follows in the order they
appear:

 1. Adobe had said they would not support ANY FrameMaker from 2000 onwards.
    Cadence had to look at other alternatives.  Licensing for Framemaker
    could have been the issue.

 2. Speed of OpenBook.  And here the web-page feel nad look had an advantage
    over PDF.  Although if I know correctly, Cadence is still working on
    getting the PDF version too later.

This is also a good time to request for any changes like a new browser.  And
it should be easy to implement even for a hotfix.  I believe this way they
also introduce a mechanism to give a doc for hotfix, too.  Else we were
stuck with the same doc for the 100th hotfix of the same release.

    - "stockg"

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

> The real reason for changing is neither User Group nor everything else
> mentioned by the doc writer.  They are follows in the order they appear:
>
> 1. Adobe had said they would not support ANY FrameMaker from 2000 onwards.


From: jdl@user2.teleport.com (Jay Lessert)

"stockg",

Can you provide a reference for this claim please?  No sign of dropping
FrameMaker on www.adobe.com that I can find, and there are a large
group of manual and databook writers back at my day job that will be
most unhappy if they have to start working in Word or StarWriter or
such.

    - Jay Lessert                                Portland, Oregon


( ESNUG 359 Item 3 ) --------------------------------------------- [9/13/00]

From: [ Original Author Unknown ]
Subject: BOA, simple_compile_mode, Area Recovery, Vera, & Boston SNUG'99

 [ Editor's Note: This is a user trip report from last year's Boston SNUG
   (1999).  I accidentally found it on a search of my database and, after
   reading all the technical meat, thought it worthy of ESNUG.  - John ]

This is a quick trip report, for the Boston SNUG.  In general the two-day
conference was very useful, and has highlighted some areas that we may want
to think about.

Big technology "takes" - described below.

  a) compile_sequential_area_recovery = true
  b) hdlin_use_cin = true
  c) Multibit Register Inference
  d) Don't use full_case parallel_case
  e) Plan verification early, and have a dedicated team to do it.

The first day was a day of tutorials, and the second day was user sessions.
I have the entire proceedings on my desk if anyone is interested in reading
the presentations.  I will only comment on the sessions I attended, although
some of the others looked useful, and may well be worth a look.

The first tutorial I attended was the "Getting the most from Design
Compiler: Area optimizing techniques and synthesis for high performance
designs". This tutorial was basically talking about, designs that are
multi-instance, multi-channel, parallel, designs running less than 100Mhz. 


Set_Max_Area
------------

Set to 0 to enable the best area recovery.

DC now has three compile steps now, with delay being prioritized over area;
they are:

  1) Delay optimization TNS
  2) Design rules fixing 1 ( delay highest priority)
  3) Design rules fixing 2 ( design  rules highest priority)
  4) Area optimization.

TNS is the Total Negative Slack of a design (i.e. the sum of all the worst
negative slacks per endpoint.)  DC can prioritize area over TNS by the
set_max_area -ignore_tns.  A critical range can be set to further optimize
critical paths, BUT an overly aggressive value will hurt run-time.  TNS is
also shown as a column in the compile log.


Simple_Compile_Mode
-------------------

Simple_compile_mode has the following benefits compiles faster, reduces
area, does not need a uniquify, and automatically does a bottom up compile.
This is for designs that don't have aggressive timing goals, have multiple
instances, spends significant time during High-Level optimization, and
doesn't spend significant time in top-level optimizations such as DRC,
set_fix_hold, and global nets.

We may not be able to use this, but it may be a good "initial compile"
thought.  It is set PRIOR to a compile by set_simple_compile_mode true.


Area_Effort
-----------

Compile has a new switch -area_effort  [none | low | med | high].  Focuses
compile onto area, by taking advantage of wide fanin gates.  This follows
the value of -map_effort, and vice-versa. 


Sequential Area Recovery ( THIS COULD BE GOOD)
----------------------------------------------

Enabled by compile_sequential_area_recovery = true.  It remaps all the
sequential cells to try and recover area, but doesn't hurt critical path
slack, and may reduce positive slack.


Behavioral Optimization of Arithmetic (BOA)
-------------------------------------------

This is a set of arithmetic transformation techniques that optimizes the
implementation of arithmetic functionality performed by transform_csa.  It
uses Carry Save Arithmetic (CSA).


Behavioral Retiming (BRT)
-------------------------

This moves registers around combinational cells, using sequential
optimization techniques. Has a primary goal of timing, with a secondary goal
of area. It preserves functionality at I/O boundaries.


Other Switches To Control Area
------------------------------

  hdlin_use_cin = true (this looks good for us - not the default either)

  hdlin_infer_mux = default (this is the default, and OK)

  hlo_resource_allocation = area_only (not advisable, let the default be)

  hlo_resource_allocation = area_only (not advisable, let the default be)

  compile -top   This only optimizes paths through the top level.  This
     could be good for us.

The big "takes" for this were compile -sequential_area_recovery, and
hdlin_use_cin.  It may also be good to have a look and see how the compile
-area_effort works for us.  BOA and BRT look good, but probably won't do
anything for our designs.  Also some of these need the DC ultra license,
which we have fewer of.


The afternoon session that I attended was "Breaking the Verification
Bottleneck: Hierarchical Functional Verification".  This was primarily a
high level overview, and really did not tell anything that we had not really
thought about before. Maybe an interesting read in your spare time. 

Friday brought two user sessions and the keynote speech from Aart de Geus.
The speech was good, and focused on the direction Synopsys is heading in.
There are three areas that they are trying to link together - Physical
Synthesis, IP design and re-use, and High level verification.  This has been
enabled by a bunch of new products - TetraMAX, VERA, Chip Architect,
FlexRoute, Core Consultant, and Core Builder.

The first user session was "Synthesis / Design Productivity", which was
split into three presentations.

  1) Using Multibit Register Inference.  This was good, and is something
     that I think we would really want to do.  It revolves around using
     bus wide cells in the library, instead of using single bit cells.
     Ultimately the best implementation is to have wide cells in the
     library (which I have begun to pursue), but it can have an impact with
     out this.  Turned on by hdlin_infer_multibit = default_all.  Usage of
     the automatic multibit inference capabilities available in Synopsys
     leads to a fully-automated flow of inferring gated clocks with
     associated power savings of up to 60%.  Combined with an innovative
     cell design, the inference technique provides area savings of up to
     50% in storage elements area, which in turn lead to area savings of
     up to 15% in chip area.  Tight control over the structure of the
     multibit elements enables low-skew CTS, even when combined with
     non-gated storage elements.

  2) "full_case parallel_case", the Evil Twins of Verilog Synthesis.  Two
     of the most over used and abused directives included in Verilog models
     are the directives "// synopsys full_case parallel_case".  The popular
     myth that exists surrounding "full_case parallel_case" is that these
     Verilog directives always make designs smaller, faster and latch-free.
     This is false!  Indeed, the "full_case parallel_case" switches
     frequently make designs larger and slower and can obscure the fact that
     latches have been inferred. These switches can also change the
     functionality of a design causing a mismatch between pre-synthesis and
     post-synthesis simulation, which if not discovered during gate-level
     simulations will cause an ASIC to be taped out with design problems.
     This paper details the effects of the "full_case parallel_case"
     directives and includes examples of flawed and inefficient logic that
     is inferred using these switches.  This was EXCELLENT, and when the
     electronic version comes out, I will pass it on.

  3) Understanding your cell library.  This was boring, totally irrelevant
     to our needs, and incomprehensible. 


The next user session was "Design Reuse/IP Prototyping", which was again
split into three presentations.

  1) VHDL Coding Styles for Synthesizable, Reusable Designs.  Behavioral
     (RTL).  VHDL has features that can greatly enhance the process of
     reusing a design.  High-level languages provide ways to optimize and
     modify reusable designs without compromising the integrity of the
     underlying design.  In this paper, we explore several methods of
     coding designs that allow user-customizable features and optimal
     synthesis (performance and gate count), using the native language
     features of VHDL.  We examine the use of the following features that
     render reusability to the code and at the same time does not hamper
     the synthesizability: - Generics - A Package of constants - Generate
     statements - Tying of ports and leaving ports "open" - Unconstrained
     arrays and aggregates - Configuration specifications - VHDL
     attributes - Block statements.  This paper also presents real-life
     examples of such reusable constructs and the results of synthesis using
     Synopsys.  Designers can apply any or all of these ideas to make their
     designs more feature-rich, efficient, and highly reusable to create
     multi-million gate System-On-A-chip designs.  This was an excellent
     presentation, and maybe we should look into it.

  2) Design Methodology for Developing IP in FPGA's for ASIC Production. 
     This was all about trying to keep the ASIC flow and the FPGA flow as
     near to identical as possible.  Interesting, but not applicable to us.

  3) Designing for Flexibility.  This was about busses, and the different
     schemes available.  It was badly presented, and I lost the thread.  It
     presented three busses - Non-Pipeline, Pipelined, and Out of Order, and
     that was essentially it. If you are interested in busses, then this may
     be interesting.

The last user session was "High-Level Verification", which was again split
into three presentations.

  1) A Recipe for Multi-million Gate ASIC Verification.  Was interesting,
     and came away with the following conclusions a) Have a verification
     plan, and make it at the beginning of the project b) Set up the
     verification infrastructure early, and allow the RTL designers to
     regress against it. c) Use Buss Functional Models, and simple
     behavioral models that everyone has access to. d) Have a verification
     team

  2) Object Oriented Approach to Verification.  The task of verifying the
     correct behavior of an Application Specific Integrated Circuit (ASIC)
     is challenging.  A hardware verification team must interpret the
     specification of one or more bus protocols and the ASIC, then verify
     that the ASIC behaves as specified while adhering to the bus protocols.
     Typically the verification process involves modeling the bus protocols
     and ASIC in a hardware simulator using a hardware description language.
     Hardware description languages are well suited to describe the behavior
     of circuits, but fall short when used as a verification language.
     Hardware description languages don't provide any high level programming
     support such as strong type checking, user defined data types and
     generic programming.  These features are beginning to become a
     necessity to create an effective verification test environment.  This
     paper will discuss how Verilog, C++ and Object Oriented methodologies
     have been used to create verification environments at Sun.  It will
     also discuss Object Oriented methodologies that can be used to help
     decrease development time and increase the quality of verification
     environments.  These methodologies aren't language dependent and will
     work for Vera as well as they do for C++.  Interesting, could be useful.

  3) Application of MicroPlatform Engineering Techniques in the Development
     of VGA Compatible Cores.  By working on multiple abstraction levels
     the hardware-software co-verification of the INT416-SM and INT416-EX
     VGA compatible cores was accelerated.  Device drivers for the VGA and
     the VGA HDL model developed concurrently, communicating through the
     Primitive Device Drivers/Hardware Abstraction Layer/Bus interface.  Our
     system initially modeled the RTL for the VGA core using VCS, using a
     PLI/socket interface to the PDD. The CPU, bridge, and memory subsystems
     were initially abstracted as software processes, and later added to the
     RTL HDL simulation.  Foundation Express/FPGA Express was used to
     implement the INT416-SM configuration onto a Xilinx Virtex XCV300 FPGA.
     The key point out of this talk was develop models concurrently.  My
     brain was fried trying to follow this guy, and decipher the project
     specific information.  I don't think totally useful.

And that was it.

    - [ Original Author Unknown ]


( ESNUG 359 Item 4 ) --------------------------------------------- [9/13/00]

Subject: Tools/Ways To Draw On-Grid 45 Degree Lines In Cadence Layouts

> Does anyone have a fix/work around for drawing diagonal lines in a Cadence
> layout, say on a metal layer, at a 45 degree angle but has the corners of
> the bends on grid?
>
> Currently I can draw the 45 no problem, but have to draw a polygon around
> the corners to get it to DRC etc... changing the grid spacing is not an
> option as it violates the technology rules.
>
>     - A. Jale


From: Jos Hesdal <jos@hl.siemens.de>

My opinion is that there is no solution.  Even the boundaries of the 45 path
are not on grid.  That has to be, simple mathematics.  The only thing you
can do is: draw polygons.

    - Jos Hesdal
      Siemens AG

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

From: reb@cypress.com

Long ago we wrote our own tool (in Cadence Skill code) including that
capability.  I'd expect some commercial tools may do it also (browse
Connections Partners on the Cadence site)?  As a fun basic starting point,
develop a pcell to emulate the path (points, width, layer, grid, etc.) but
keep it on grid.  (One of the 4.4.x releases has (will have?)
mouse-draggable "handles" on pcells?  Anyone play with that yet?)

    - Reb

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

From: "Chuck King" <charles.a.king@intel.com>

There is a "fix" that is commercially available.  You can find this at
http://www.stxcadware.com/ (a connections partner).  They have written, in
SKILL, a series of programs one of which is called "polypath".  Using that
program, you enter a path and when you have completed your entry the path is
converted into a polygon automatically, design rule correct and with the 45
degree angles made properly.  The width of the 45 degree segment will be
slightly wider depending upon working grid and of course the square root of
2 issue.

This is not an endorsement of Stx Cadware, I am simply, as a fellow user,
offering a suggestion.

    - Chuck King
      Intel


( ESNUG 359 Item 5 ) --------------------------------------------- [9/13/00]

From: Subha Pindiproli <Subha.Pindiproli@emulex.com>
Subject: Designer Seeks DC/PT Script To Detect Paths Across 2 Clock Domains

John,

I have a world with two clock domains:

             SysCLK Domain                   PCI CLK Domain
                                       
        ------                         
        |    |                        
     -->| ff |-------->|----------|   
    |   ------         |          |
    |                  | comb.    |         Sync  FF's
    |   ------         | logic    |        ------    ------
    |   | ff |         |          |        |    |    |    |
    |-->|    |-------->|          |------->|    |--->|    |----> FSM
    |   ------         |          |        |    |    |    |
    |                  |          |        ------    ------
    |   ------         |          |          |__________|________ PCI_CLK
    |   | ff |-------->|__________|
    |-->|    |                        
    |   ------                        
    |                                 
  SYSCLK                             

As you can see from the above diagram, the output of SYSCLK FFs go into some
combinational logic and feed into FFs clocked by PCI_CK.  The outputs of
the PCI_CLK FFs go into a FSM.

Let's say a glitch were to occur at the posedge of SYSCLK:

  1) This could trigger a false (high) start signal and the output of
     combinational logic would register a high.  Because PCI_CLK has no
     way to verify that this is a glitch, not a valid signal, it would
     start the PCI_CLK FSM.

  2) The correct solution is to put another FF after the combinational logic
     clocked to the SYSCK, thereby preventing this glitch.

Are there any DRC tools out there that might catch this type of problem?  Do
your users have any DC scripts that could test for this type of problem?

    - Subha K. Pindiproli
      Emulex Network Systems                     Costa Mesa, CA


( ESNUG 359 Item 6 ) --------------------------------------------- [9/13/00]

From: "Neel Das" <neeldas98@yahoo.com>
Subject: How Would You Design An Over 64-bit Multiplier-Accumulator (MAC)?

Dear John,

I would love to hear from your readers how they'd design a large Multiplier-
Accumulator (MAC) for over 64-bit operands.  I'm considering Module
Compiler.  Our implementation technology is not decided yet, but I'm
guessing 0.18um or smaller.  We're targeting a freq in excess of 133MHz.

In terms of speed/power, any pointers/numbers would be greatly appreciated,
as also techniques to verify this type of circuit.  (Obviously, we're not
circuit designers, and would probably do a very poor job at a custom
multiplier.)  Ideas?  Pointers?

    - Neel Das


( ESNUG 359 Item 7 ) --------------------------------------------- [9/13/00]

From: Morgan Monks <MMonks@Gain.com>
Subject: My Design's Very Small & I'm Looking For Cheap-But-Good ATPG

Hi John,

Long time no email.  I am now at a small company having left the "Bat Wing"
palace and am in need of a "cheap but good" ATPG tool. 

Do any of your many well educated and knowledgeable readers have some
cheaper ATPG tools to recommend?  I won't be generating scan for a million
gate ASIC so a small tool would work nicely.  We can't afford the Mentor,
Cadence, or Synopsys products, and our design is small.  Right now I'm
working on a very small, specialized design that's only 7 kgates.  I don't
need to buy a $300K suite of tools for this.  Ideas?

    - Morgan Monks
      Gain Technology                            Phoenix, AZ


( ESNUG 359 Item 8 ) --------------------------------------------- [9/13/00]

From: "Robert Wiegand" <rwiegand@nxtwavecomm.com>
Subject: Workaround For A Little Control-C "dc_shell | tee logfile" Gotcha

Hi John,

I got hit by a little gotcha recently that I thought I should share.

I've got into the habbit of using the "dc_shell | tee logfile" syntax for
interactive debugging so I can have a logfile for the session.  One nice
thing about interactive sessions, is that a control-C will allow you to
checkpoint, or stop something that is compiling into oblivion and see what's
wrong.  This may be very obvious to some, but I found out the hard way that
when using the " | tee" syntax, the control-C is passed to the "tee" instead
of the dc_shell session.  This basically breaks the pipe and stops the job,
with no way that I could find to recover.  Any UNIX gurus out there know
how to recover if this happens?  To prevent this from happening, make sure
to use the -i switch on tee, which tells it to ignore interrupts as follows:

                       "dc_shell | tee -i logfile"

This allows the use of control-C for dc_shell.

    - Bob Wiegand
      NxtWave Communications                     Langhorne, PA


( ESNUG 359 Item 9 ) --------------------------------------------- [9/13/00]

From: Shuhui Lin <Shuhui.Lin@usa.alcatel.com>
Subject: Exactly How Did You Use ClearCase For Your Design Data Management?

Hi John,

I was searching through ESNUG archives and found several people recommending
the ClearCase configuration management tool for hardware design [ESNUG 345
& ESNUG 281].  I would appreciate it if  anyone who is using ClearCase could
elaborate on the usage model  for ASIC design.  Specifically, is the entire
ASIC database  (including Synopsys .db files and other miscellaneous files 
and directories created by various ASIC tools) under ClearCase management or
just the HDL source?  Managing the entire database seems to be overkill, but
if a file is not managed it is not easily  visible to other users working in
other "views".

    - Shuhui Lin 
      Alcatel USA                                Raleigh, NC


( ESNUG 359 Item 10 ) -------------------------------------------- [9/13/00]

Subject: ( ESNUG 358 #7 ) DW PCI Core Doesn't Work For Both FPGAs & ASICs!

> We're looking for a soft PCI master-target core.  The idea is to implement
> it in Xilinx Virtex, test it, then migrate it to ASIC.  The frequency we
> need is 33 MHz and the bus width 32 bits.  We tried with Synopsys DWPCI.
> Unfortunately, we were unable to implement it in the Virtex.
>
> At first I used the constraints files and synthesis scripts provided by
> Synopsys, and later I changed the scripts to try different options and
> strategies.  After a lot of tries, I got, in the best case, a pad-to-setup
> slack of -20 ns (after place and route).  As for the synthesis software, I
> used both FPGA Compiler (Design Compiler for FPGAs) and FPGA Compiler II
> (the results were very alike in both cases).  It seems there is a lot of
> combinational logic at the inputs, and, as you might imagine, I am
> somewhat disappointed.
>
> Does anybody know a good PCI soft core that can be implemented in FPGA and
> later migrated to ASIC?
>
>     - Angel Ramiro
>       Systems on Silicon, Inc.


From: "jok" <jok@erols.com>

With regard to PCI cores, John, it seems that the devil lies in the fact
that the clock latency can kill you when you are trying to meet the tight
clock to q times.  This same clock is used for pulling data into the bus
interface.

It would appear that most core vendors assume a low latency clock, or maybe
this is not a consideration at all.  The other constraint surfaces when
considering I/O timing, which can be application specific.  But, the bottom
line is that core vendors may not add this I/O variable into their synthesis
scripts.

From what I have read, it would appear that many FPGA vendors are hand
tweaking the cores on the physical end to fix some of the variation in
I/O timing and clock distribution.  The other issue which I don't have a
handle on is on what technique is used for the FIFO, if needed. If registers
are used, this could cause more load on the clock and variation in the
route.  If a FIFO is used, the loading might be fixed, but you are still
presented with FPGA vs. ASIC timing.

The optimum solution might be to have a core with paramters on how much
margin one has in these various areas.  Robbing Peter to pay Paul, if you
will.  But at least you would know the budget.

Just some thoughts off the top off my head.

    - Jim Jok


============================================================================
 Trying to figure out a Synopsys bug?  Want to hear how 11,000+ other users
    dealt with it?  Then join the E-Mail Synopsys Users Group (ESNUG)!
 
       !!!     "It's not a BUG,               jcooley@world.std.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)