( 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
|
|