( ESNUG 297 Item 12 ) --------------------------------------------- [7/30/98]

From: janick@qualis.com (Janick Bergeron)
Subject: A Review Of The Infamous Synopsys/Mentor "Reuse Methodology Manual"

Dear John,

At the recent DAC'98, Synopsys and Mentor created an awful lot of hype
around their so-called "Reuse Methodology Manual" (and I use that term
lightly!)  Here's my completely biased review of their manual from the
perspective of someone who _actually_ has to do this stuff instead of
just selling the reuse concept to managers.

First the strengths: "Reuse Methodology Manual for System-on-a-Chip
Designs", which is jointly authored by Synopsys and Mentor Graphics, is
clear, concise and to the point.  Keating & Bricaud propose valuable
guidelines and rules that can only improve any design methodology.  The
book's main achievement is its promotion of a systematic approach to
specification, modeling, and verification in sections 2.3, and 4.2, and
chapters 7 and 11.  These are integral activities in high-quality designs.
No longer should these important tasks be relegated to the end of the
project, to be done as time or schedule allows, or by junior engineers
because they are not the fun or sexy part of the design process.  These
tasks are the most critical component of the designprocess, the ones that
ensure that the efforts spent on the design proper are not misdirected or
wasted.

The book's greatest failure is its unfulfilled promise to cover issues 
faced by the user of reusable blocks.  A single chapter (10) is devoted to 
this much broader audience and presents little beyond what has already been 
known from experience of using silicon-compiled memories.  With Synopsys 
and Mentor pushing reuse so strongly, why don't they have more to offer
to users of reuseable blocks?

Anyone who has followed the SNUG, VIUF, or IVC conferences for the past few 
years, or has several years of experience designing ASICs using synthesis 
and HDLs, will find familiar techniques, guidelines and rules outlined in 
chapters 5 through 7.  The book's contribution is to collect, consolidate, 
and present all of the various sets of guidelines published in recent 
years.  It sins in making all guidelines very Design Compiler centric.
Verification techniques and testbench structures presented in chapter 7 
concentrate on the stimulus half of the problem.  The more difficult 
component, the validation of the output, is briefly discussed in the very 
weak section 7.2.4.  This section describes a technique that relies on 
comparison with a rarely available reference design.

Starting with section 4.3.1, little value is put in behavioral models.  That 
is an area where I passionately disagree.  Behavioral models are a precious 
enabler of system-level simulation, of parallel testbench development, and 
provide an audit for the specification.  Furthermore, a behavioral model of
a reusable macro could also be formidable marketing tool that would enable 
customers to functionally integrate a macro into their design without 
revealing implementation details or trade secrets.

The book puts a lot of emphasis on the RTL model (rightly so), but it goes 
too far in recommending in section 7.3 that testbenches be written in RTL as 
much as possible in some situations.  The book should not dismiss in so 
cavalier a fashion the powerfulness of behavioral models and testbenches.

Some sections in the book show some misconceptions of the VHDL/Verilog 
languages.  For example, in section 4.6.2, the authors recommend simulating 
a macro on several simulators "particularly important for the 
VHDL simulators".  It is just as important for the Verilog simulators.  The 
text should mention the unspecified behaviors in the Verilog language that 
make it inherently non-portable to various simulators (or to the same 
simulator with different command-line options).  Specific guidelines are 
needed to make Verilog models portable, yet none are outlined in the 
subsequent chapters.

Another example is in section 5.5.4 where the text mentions only the VHDL 
signal assignment and the Verilog non-blocking assignment, but it fails to 
mention the VHDL variable assignment and the Verilog blocking assignment.

In addition, the "poor style" example in section 5.5.6 is very poor: the 
entire guideline is completely meaningless for VHDL.  Assuming that the 
synthesis tool is bug-free, it is impossible for the pre- and post-synthesis 
simulation behavior to be different given the semantics of the VHDL language.  
The whole guideline probably comes from a literal translation of a similar 
guideline for Verilog in section 5.5.5.

There are a few contradictory statements and recommendations throughout the 
book.  For example, section 2.4 describes a linear design process just after 
a spiral design process has been recommended in section 2.2.  Another example 
is the relative importance given to the macro and sub-block level 
verification tasks.  In section 4.4.1, very high verification requirements 
are put on the sub-block design, yet section 7.2.1 states that the
sub-block testbenches tend to be ad hoc, with the entire chapter focused on 
the macro-level verification.  Ad hoc testbenches cannot achieve high 
verification requirements.  Solid verification can only be reached through a 
formal verification process -- which is well described in chapter 7.

Readers interested in marketing and sales material should refer to sections 
6.4 and 10.4 for Module Compiler.  Those interested in VMC can refer to 
section 8.6.1; those interested in CBA can read section 8.7.  Formality is 
the only formal verification tool mentioned in sections 4.6.2, 6.2.9, and 
11.5.2 with no reference to the market-leading tools from Chrysalis.  
InterHDL's linting tools receive honorable mentions in sections 4.4.2 and 
6.2.8, but they are not given their proper due as to the value they can
bring to a design process.  The text often implies that linting is an 
after-thought activity.  However, if linting is an ongoing, up-front 
activity, then it will detect several problems in a few seconds without a 
single simulation cycle being spent.

Throughout, the book provides an excellent description of the various tasks, 
tools, and activities involved in completing today's complex ASIC designs, 
from specification, to verification, and to implementation and physical 
design.  Every company should require any new hire or any engineer with less
than two years of experience to read this book.  The investment is well worth 
it.  Managers and design leaders should also read it.  These readers should 
pay special attention to the section about specification and verification.

The book would benefit from the additions of rules and guidelines 
specifically targeted toward design-for-testability using full scan or BIST 
techniques and toward formal verification and static timing analysis to 
eliminate gate-level simulation.

But as a book about reuse methodology, it falls short in two areas:

  -  First, most of the book is devoted to the producer or creator of           
     reusable blocks.  Only one chapter is directly addressed to the users      
     and integrators of reusable blocks.
      
  -  Second, the book does not seem to present any new information that      
     would not be known to companies with a lot of experience in high-         
     quality HDL-based design.

For example, all of the concepts, rules, and guidelines presented in this 
book are in use at a large, well known telecommunications company, yet they 
have been struggling with the concept and mechanisms of design reuse for 
years.  To this day, very little design reuse happens there.  On the other 
hand, a small telecommunication component company is very successful at 
design reuse because of a historical reuse strategy.  Yet they lack modern 
HDL design techniques, specification, or verification procedures.

Why then, if a company does everything the book recommends, can reuse fail to 
happen?  In contrast, how can a company be successful at reuse, while 
breaking several of the rules and guidelines presented in the book?  For the 
user, non-technical, non-design issues must be addressed such as:

  -  What are the characteristics of an engineering culture that promotes      
     reuse?

  -  How do you reward for reuse?

  -  How should systems be designed to make maximum use of available blocks?

  -  What infrastructure is required to properly support reuse?

  -  How far should reuse be carried?

  -  How does a company protect itself from legal liability issues in an      
     externally sourced block?
      
Overall Conclusion: Excellent book, wrong title.  A more appropriate title
would have been "Best-In Class ASIC Design Practices". 

  - Janick Bergeron
    Qualis Design Corporation


P.S.  John, I'm writing another longer, very detailed technical review to
discusses the design reuse ideas they proposed and how they clashed with our
real world experiences.  (It's about 900 lines long.  This review was ~150
lines.)  Do you think your readers would be interested in it?  



 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)