( Post 91 Item 1 ) ------------------------------------------------------

From: jcooley@world.std.com (John Cooley)
Subject: How "characterize" Command Really Works

While compiling a hierarchical design and using "characterize" and
"write_script" to pass upper level constraints down to lower level
modules, I found myself questioning what was really meant by the
Commands Reference Manual's write-up of the "characterize" command.

If you read the description for the "characterize" command and then
read the description of the "-constraints" switch on that command,
one is given the impression that without "-constraints", "characterize"
didn't function!  (The wording on this write-up is confusing.  I
had three different engineers read it and interpret it and no one
quite understood what was correct.)

After a few days of working with the Synopsys hotline and doing some
checking things out for myself, we worked out the following description
of the characterize command and how to use it's switches.



The following groups are the information that characterize can potentially 
pass to a lower level module:

1)  max_area, max_delay, min_delay, max_period, dont_touch_network, 
    set_max_fanout, set_fanout_load, set_max_transition

2)  set_drive, set_load, set_arrival
    set_wire_load, set_timing_ranges, set_operating_conditions

3)  set_equal, set_opposite, set_logic_one, set_logic_zero, set_unconnected



The following combinations of "flags" on the characterize will select the 
indicated group:

Flags Used				Groups Passed Down

none					2

-constraints				1 and 2

-connections				2 and 3

-constraints -connections		1, 2 and 3

-no_timing				none

-no_timing -constaints			1

-no_timing -connections			3

-no_timing -constraints -connections    1 and 3



What this effectively boiled down to was that I wanted to use:

           dc_shell> characterize -constraints -connections

to have all compilation derived information making it down to the lower 
level modules.


(If you compare this write-up with what's in the Synopsys 2.2b documentation,
you'll find there's a significant difference.

To test what this write-up saying, all you have to do is to take a (at least)
once compiled ".db" hierarchical design and do each of these combinations
of switches with the "characterize" command and then look at what one gets
when one does a "write_script".)

I hope this helps prevent duplicated effort on behalf of some of the other 
members of the Synopsys user community out there! Just because I've had to 
go through some grief to get this information shouldn't mean that you 
should also have to do the same!

                                            - John Cooley
                                              ESNUG Moderator



 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)