( ESNUG 365 Item 12 ) -------------------------------------------- [02/15/01]

Subject: ( ESNUG 364 #14 )  Why Not Use PKS Instead Of Cadence PBOPT ?

> I read Chris' article on ESNUG 363 with interest as I have been working in
> the area of hierarchical physical design timing closure for a few years
> now.  I have a few questions for my own clarification and some suggestions
> that may help...
>
>     - Lee Keep
>       3Com                                       UK


From: Chris Simon <Chris.H.Simon@gd-is.com>

John,

This is to thank Lee for the response and advice.  Since this is the first
time through a hierarchical design we are still learning, and what he's
written will certainly help.  The designs we are working on are 125 MHz
using IBM 0.25 um CMOS.  Not exactly bleeding-edge but still a challenge for
our Cadence tools, it seems.  As we've refined our results I discovered that
the constraints on paths between blocks did allow for my 1.2 ns per 5mm, but
the paths to the I/Os did not.  I am fixing this.

We did not do top level routing before designing the blocks on the first
chip, but we are in the process of doing just that for the next chips.  We
also discovered the need for buffers at the outputs of all blocks, as near
to the ports as possible.  We will look into how we can force the placer to
put these near the ports in every block.  To try to make this easier on
ourselves we established the rule early on that all block outputs and inputs
are from registers.  There is no logic allowed (other than a buffer) between
any block input and the input register, or between an output register Q pin
and the output port.

The pin optimization on the first chip was done manually, but it was a
simpler chip (i.e., fewer blocks.)  On the next chips we will attempt to
have the tools do pin optimization.

    - Chris Simon
      General Dynamics Information Systems

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

From: Thad McCracken <thad@geocast.com>

Hi John,

I've got a few comments on Chris' repeater-insertion problem that will
hopefully be of some use.  We transitioned from Ambit Buildgates to PKS some
time ago, and use that to do top-level repeater insertion now.  We used to
use a similar flow to Chris, though, so I'll try to comment from memory on
that first.  Finally I include a short description of our experiences
with PKS in this regard mostly for the future reference of Chris and other
ESNUG readers.

  1.) "Black-box" timing models for your P&R blocks.  We use black-box
      timing models for our P&R blocks to drive top-level repeater insertion
      as well.  I have found it important to include in these blocks not
      only timing characteristics (setup/hold, clock-q), but also all
      applicable design-rule constraints (max input transition and pin
      capacitance for all inputs, worst-case transition and max-capacitance
      for all outputs).

      These can sometimes help drive insertion of top-level repeaters.

  2.) We've had similar dissapointments with QPOPT.  On the last chip
      we taped out w/o PKS we ended up putting top-level repeaters in our
      netlist by hand, and controlling their placement with placement
      regions.

In general I've found it to be helpful to put top-level standard cell
rows everywhere possible - don't depend on QPOPT or any other tool to
find the *one* place to put a repeater.  We've found PKS to work reasonably
well for top-level repeater insertion, given the following inputs:

  - top-level flooplan (we use .def format) that places all the IOs, 
    P&R blocks, top-level standard-cell rows, power grid, etc.

 - .lib black-box timing models for all P&R blocks (as well as IOs, etc.)

Using this and top-level timing constraints, we run a quick optimation to
insert and place repeaters.  Different types of optimization seem to work
better for some designs -- sometimes just "do_optimize -pks" works fine.
Other times specifically targeting design rule violations is better.  I've
found setting the steiner mode to 1 or 2 (set_steiner_mode 1 or 2) to
generally yield better results for designs with lots of "macros."  We also
found that tweaking with the following global variables helped for
top-level repeater insertion:

  smoothen_area_gap    (% of placement bin space that must be left
                        un-utilized after placement spreading)
  extra_space_for_opt  (amount by which optimization may overfill a 
                        placement bin)

In v4.x PKS these default to 1 and 0.  We found that setting the former
to 0 and the latter to a very high number (80 in one case) seemed to 
help placement of top-level repeaters on one chip.  I don't fully 
understand why this works, but suspect it has something to do with 
placement bins having mostly "un-usable" area.  I'd like to understand 
it more in the future.  There are other knobs you could try in PKS 
that might help as well, but I haven't played with them enough to say.

    - Thad McCracken
      Geocast Networks Systems, Inc.             Beaverton, OR


 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)