( ELSE 06 Item 21 ) -------------------------------------------- [ 06/23/06 ]

Subject: Sierra Pinnacle

THEY'RE LEGIT NOW -- In last year's report, quite a few users voiced cautious
skepticism about Sierra in DAC 04 #17.  Actually they weren't actual hands-on
users of Sierra, but instead they were tire-kicking potential users.  It was
that iffy.  Pinnacle's since had its first tapeout and looks like it might
be a viable placer now.  Their MCMM stuff competes directly with the "new"
Synopsys IC Compiler; but no surprizes there.  Most of the Sierra founders
worked in the exact same Synopsys R&D group that IC Compiler comes from.


    Sierra Pinnacle is apparently some ex-Synopsys folks who have created a
    physical synthesis tool.  It goes from gates to placed gates.  The tool
    optimizes concurrently over multiple modes and corners and can do up to
    10 million gates flat overnight.  They claim 2X to 3X better memory
    utilization and speed than competitors but their key selling point is
    design for variability.

        - John Weiland of Intrinsix Corp.


    We've been using Sierra's Pinnacle tool recently to handle multi-corner,
    multi-mode (MCMM) optimizations, having worked with Sierra for a couple
    of years now.  In terms of supporting variability, I think Sierra is
    ahead of the pack in terms of features and underlying architecture. 

    PTV variations are generally modelled through the use of multiple cell
    libs and multiple RC extraction decks.  Derating to achieve the same
    effect can be pretty complicated, as the derating is not the same across
    all cells in a library.  Nor is the derating the same across layers in 
    the extraction deck.  Derating is also not always linear, so corner
    libraries are usually characterized from SPICE decks representing
    min/typ/max corners (e.g 2 or 3 sigma process variation, -40/25/125
    degrees C, 1.1V/1.2V/1.3V, etc.)  Extraction decks can be made for max
    or min RC and combinations thereof.

    The Sierra tool supports concurrent optimization and analysis across a
    number of extraction corners, operational modes, and libs -- without the
    exponential increase in memory for each combination -- a real plus. 

    Pinnacle sets up with "n" extraction corners, (not just 2) such as
    minR/maxC, maxR/maxC, minR/minC, maxR/maxC.  These extraction corners
    can then be applied to any number of operational modes and/or library
    combinations.  Also, all the optimization and analysis can be done
    with OCV and CRPR (which can be enabled on a per-corner basis).  The
    overhead associated with OCV and CRPR is minimal so far.  In our case
    we worked 4 MCMM corners: 2 extraction corners and 2 operational modes.

            Cell Library     Extraction      Mode      Check
            --------------------------------------------------------
            worst            maxR/maxC       func      setup & hold
            best             minR/minC       func      hold
            worst            maxR/maxC       test      hold
            best             minR/minC       test      hold

              worst = Slow Process, Low Voltage, High Temperature
               best = Fast Process, High Voltage, Low Temperature

    To do this inside Pinnacle, we used following commands:

       # set all the .libs read in with "_s_.*" in the name to the 
       # slowSetup corner

       set_analysis_corner -enable true -crpr setup \
                           -setup true -hold false \
                           -corner slowSetup \
                           -process_technology CS101_10_wee \
               -corner_max_library "[getDotLibPattern {_s_.+max}]" \
               -corner_min_library "[getDotLibPattern {_s_.+min}]"
  
       # set all the .libs read in with "_s_.*" in the name to the 
       # slowHold corner 
  
       set_analysis_corner -enable true -crpr hold \
                           -setup false -hold true \
                           -corner slowHold \
                           -process_technology CS101_10_wee \
               -corner_max_library "[getDotLibPattern {_s_.+max}]" \
               -corner_min_library "[getDotLibPattern {_s_.+min}]"
  
       # set all the .libs read in with "_f_.*min" in the name to 
       # the fast corner 
  
       set_analysis_corner -enable true -crpr hold \
                           -setup false -hold true \
                           -corner fast \
                           -process_technology CS101_10_wee_min \
               -corner_max_library "[getDotLibPattern {_f_.+max}]" \
               -corner_min_library "[getDotLibPattern {_f_.+min}]"

       # create functional and test modes

       define_design_mode -design_mode functional define_design_mode 
                          -design_mode test
  
       # enable functional mode, for setup and hold corners 

       set_design_mode -design_mode functional \
                       -enable true \
            -corner [get_corner -filter "@enable && (@setup || @hold)"]
  
       # enable test mode hold analysis only

       set_design_mode -design_mode test \
                       -enable true \
            -corner [get_corner -filter "@enable && @hold"]
  
       read_constraints -mode functional $sdcDir/functional.sdc 
       read_constraints -mode test $sdcDir/testMode.sdc

    Obviously if our design had multiple functional modes we would have added
    these into the mix, but it didn't.  Then again, a functional mode isn't
    really a variability issue.

        - Paul Little of Fujitsu Microelectronics America, Inc.


    We used Pinnacle's MCMM to tapeout one of our designs recently when we
    were in serious trouble with our existing flow.

    Design Specs: ~800 K instances, 2 modes (TBI & CDR), 4 corners
                  (slow corner for max condition, fast corner for min
                  condition, hold best & hold worst corners for hold
                  with OCV in min and max conditions), 6% OCV

    Our old flow was:

            Design Compiler (RTL synthesis)
            FE (floorplanning, placement, CTS)
            NanoRoute (detail routing)
            Simplex (RC extraction)
            PrimeTime (timing and IPO)
            Voltage Storm (SI / noise check)
            PrimeTime (signoff)

    Some of the problems with this flow:

         1. non-convergence -- FE could take only one timing constraint
            file at a time, setup/hold time is fixed sequence, a lot of
            manual work to adjust cell placement, useful skew manually, and
            many unnecessary iterations.  Even if we did fix hold in some
            corner, it made the setup worse in some other corner.  Flow was
            not converging.
         2. large clock skews -- which created large hold time problems.
            Moreover, hold buffers were added in high utilization area
            causing congestion, de-tour routing and new setup problems.
         3. correlation Issues -- there were large differences between FE
            and PrimeTime timing.  Big capacitance / long nets causing
            large differences resulting in new setup/hold time problems
            and more iterations.
         4. noise on clock nets -- large amount of noise observed on the
            clock nets created by FE.  1) Some clock nets created be FE CTS
            were large in span and had large fanout, therefore they picked
            up mode noise.  2) roots of CTS are defined after clock MUX
            logic; long wire/big cap net were left unbuffered between real
            clock source and root of CTS and caused noise problem later. 
 
    Our new flow:

            Design Compiler (RTL synthesis)
            FE (floorplanning)
            Pinnacle (CTS, post-route optimization)  <-- added Sierra here
            NanoRoute (detail routing)
            Simplex (RC extraction)
            PrimeTime (timing and IPO)
            Voltage Storm (SI / noise check)
            PrimeTime (signoff)

    What it got us:

          1. MCMM -- (TBI and CDR) and corners (slow corner for max
             condition, fast corner for min condition, hold best & hold
             worst corners for OCV).  Pinnacle reduced the 500 psec
             setup violation in FE to less than 90 psec in the first run.
          2. Pinnacle CTS reduced the skew by reducing the number of hold
             buffers added in high utilization areas.  Correlation was
             much better since the number of long detour nets was
             drastically minimized.
          3. Pinnacle correlated very well to our signoff tool PrimeTime,
             and it minimized timing violations post-route.  We used a
             margin of 100 psec on setup and 20 psec on hold.

    The final results were -100 psec setup violation with 300 psec clock
    jitter and -60 psec hold violations in IO with margin.  All hold was
    closed inside the core.  Our old flow was stuck at -500 psec for setup
    and the hold fixing was not possible because of bad correlation.  The
    results were achieved in days instead of months with the old flow.


    After our tapeout was done, we re-ran the same design in Pinnacle from
    the beginning.  This included placement + pre-CTS + CTS + post-CTS
    optimization.  The results were better than our tapeout database.

                                 Old Flow             Pinnacle flow
                              --------------         ----------------
       final Si utilization      79.0 %                  76.4 %
       congestion                0.08 %                  0.03 %
       worst setup slack          -90 psec               +183 psec
       total setup slack        -2500 psec                  0 psec
       worst hold slack          -110 psec                +44 psec
       total hold slack          -320 psec                  0 psec
       runtime                    - - - -                12.5 hrs
        
    Here was the final MCMM variability report from Pinnacle.  This timing is
    with additional margins (500 psec for setup and 50 psec for hold).

        ---------------------------------------------------------------
        |                 | WNS  | TNS    | #Viol | WHS | THS | #Viol | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | TBI(slow)       | -317 | -17983 | 196   | 85  | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | TBI(fast)       | -ne- | -ne-   | -ne-  | 1   | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | TBI(hold_worst) | -ne- | -ne-   | -ne-  | 0   | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | TBI(hold_best)  | -ne- | -ne-   | -ne-  | -6  | -23 | 7     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | CDR(slow)       | -317 | -17983 | 196   | 85  | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | CDR(fast)       | -ne- | -ne-   | -ne-  | 1   | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | CDR(hold_worst) | -ne- | -ne-   | -ne-  | 0   | 0   | 0     | 
        |-----------------+------+--------+-------+-----+-----+-------|
        | CDR(hold_best)  | -ne- | -ne-   | -ne-  | -6  | -23 | 7     | 
        ---------------------------------------------------------------

    "-ne-" : Not Enabled

    We want to try the latest Candence Encounter in multi-mode optimization
    capability and compare the results in the future.  As far as IC Compiler
    is concerned since it can handle only 2 scenarios it won't work for us;
    we typically have 3-5 modes and 3-5 corners in our designs.  Since we
    have variability issues from multiple corners/modes, Pinnacle is the
    only way to go (for now.)

        - [ An Anon Engineer ]
Index    Next->Item





   
 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)