( ESNUG 322 Item 13 ) --------------------------------------------- [6/15/99]

Subject: ( ESNUG 317 #6 ) Propagate_constants Doesn't Work Like You Think

> The propagate_constraints command has already made my life much easier
> by simplifying the application of constraints in a design hierarchy.
> Constraints can be applied at a lower level of the hierarchy and then
> propagated to the top level with the propagate_constraints command.
> Propagate_constraints works as advertised and only as advertised.  So be
> sure to read the documentation.  I had a case in which I segmented timing
> paths using input and output delays on an internal pin.  These constraints
> are not propagated (yet--track STAR 69625).  I was able to get around this
> problem thanks to the the new "-through" option for timing exceptions.
>
>     - Greg Mann
>       Ford Microelectronics                 Colorado Springs, CO


From: London Jin <londonj@eng.adaptec.com>

John,

I learned from ESNUG 317 that propagate_constraints made your life much
easier.  You may be able to shed some light on this.  I tried it, and
wanted to see how it works, and all I got at top-level were clock specs
(which is trivial).  I expected to see set_input_delay & set_output_delay,
too.  (Are these realistic expectations?)  The following is what I did.

   read top.db
   characterize u_bac
   current_design bac_test_1
   write_script -format dcsh > bac.scr
   write -f db -hier -o bac.db
   remove_design -d

   read -f verilog top.v
   remove_design bac_test_1
   read bac.db
   current_design top
   link
   current_design bac_test_1
   include bac.scr
   current_design top
   propagate_constraints -design bac_test_1 -all
   write_script -format dcsh > top.scr

Any hint is greatly appreciated.

    - London Jin
      Adaptec

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

From: gmann@ford.com (Greg Mann)

Hi London,

I was a little vague in my comments in ESNUG 317 which probably lead to your
confusion.  propagate_constraints doesn't propagate set_input_delay or
set_output_delay statements no matter what options are used, but is used to
propagate exceptions such as set_false_path, set_multicycle_path,
set_clock_gating_check etc.  (See the Synopsys On-Line Docs for a
comprehensive list).

The problem that was solved by the -through option solved was a case in
which I needed to apply the constraint:

    set_false_path -through find(pin,U1/A) -to find(cell,out_reg)

The version of Design Compiler I was using when I wrote the original
constraints didn't support the -through option, so the path had to first be
segmented using set_input/output_delay statements followed by a
set_false_path constraint as shown below.

    /* Segment the path */
    set_input_delay 5 -clock CLK find(pin,U1/A)
    set_output_delay 5 -clock CLK find(pin,U1/A)
    /* Apply false path exception */
    set_false_path -from find(pin,U1/A) -to find(cell,out_reg)

Since propagate constraints doesn't yet support set_input_delay and
set_output_delay, it wouldn't propagate my constraints correctly.  But when
I changed my constraint to a simple set_false_path command with
the -through option, propagate_constraints worked correctly.

    - Greg Mann
      Ford Microelectronics                  Colorado Springs, CO



 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)