( ESNUG 306 Item 6 ) ---------------------------------------------- [12/3/98]
Subject: ( ESNUG 304 #3 305 #12 ) Find 3 Unloaded Nets Out Of 300,000 Nets ?
> I am looking for a command, or script, to report the nets that have NOT
> been loaded by a set_load command. This is because I want to determine if
> there is any net that escaped the set_load command, and hence the timing
> report may be erroneous.
>
> - Andi Carmon
> Orckit Communications Ltd. Tel Aviv, Israel
From: chris.bohm@analog.com ( Chris Bohm )
Hello John,
The following UNIX shell script can examine a report_net report file and
will filter out all nets which have no annotated capacitances:
touch annotated_nets.report
/usr/bin/rm annotated_nets.report
touch annotated_nets.report
touch not_annotated_nets.report
/usr/bin/rm not_annotated_nets.report
touch not_annotated_nets.report
nawk '
BEGIN{
if (FILENAME == "-")
print "ERROR: specify input file (report containing report_net section)."
else {
print "examining report file: " FILENAME
approaching_report_net_section = 0
in_report_net_section = 0
annotated_count = 0
not_annotated_count = 0
while ((getline < FILENAME) >0)
{
if (next_line_is_in_report_net_section == 1)
{
if ($1 == "----------------------------------------------------")
{
approaching_report_net_section = 0
next_line_is_in_report_net_section = 0
print "... found end of report_net section"
}
}
if (next_line_is_in_report_net_section == 1)
{
if ($7 == "c" || $7 == "c,")
{
print $1, $4 >> "annotated_nets.report"
annotated_count = annotated_count + 1
}
if ($7 != "c" && $7 != "c,")
{
print $1, $4 >> "not_annotated_nets.report"
not_annotated_count = not_annotated_count + 1
print "not annotated " $0
}
}
if ($3 == "annotated" && $4 == "capacitance")
{
approaching_report_net_section =1
}
if (approaching_report_net_section == 1)
{
if ($1 == "----------------------------------------------------")
{
approaching_report_net_section = 0
next_line_is_in_report_net_section = 1
print "... found start of report_net section"
print "... examining"
}
}
}
print " "
print "Summary:"
print "========"
print "Annotated nets: "annotated_count
print "Not annotated nets:"not_annotated_count
print "for more information see output files"
print "not_annotated_nets.report & annotated_nets.report"
}
}' $*
echo " "
echo "... finished."
To use it, do the following:
1) In design compiler do a
report_net -nosplit -transition_times >> report_file
2) run the UNIX script (giving it the "report_file" as an input parameter)
The script will walk through the report file and examine each line. Please
consider the following excerpt from a report_net:
> Attributes:
> c - annotated capacitance
> d - dont_touch
> p - includes pin load
>
> Net Fanout Fanin Load Resistance Pins Attributes
> --------------------------------------------------------------------------
> NET__65 1 1 0.04 0.00 2 c, d, p
If there is an attribute 'c' then this means that a cap value has been
annotated.
Please be aware of the fact that I use the script in a slightly different
way -- you may have to make some minor modifications. It's a good idea to
try it on a small test case. And, of course, I can't accept any legal
responsibility for misinformation reported by this script, use at your
own risk, objects in mirror are larger than they appear, etc., etc., etc.
- Chris Bohm
Analog Devices B.V. Limerick, Ireland
|
|