Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perlmod / AnalyzeDiag / 1.07 / man / man3 / AnalyzeDiag.3
CommitLineData
86530b38
AT
1.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "AnalyzeDiag 3"
132.TH AnalyzeDiag 3 "2004-05-07" "perl v5.8.0" "User Contributed Perl Documentation"
133.SH "NAME"
134AnalyzeDiag \- Perl module for analyzing diag log files
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use AnalyzeDiag;
139.Ve
140.PP
141.Vb 2
142\& my $dir = '.';
143\& my $analyzer = AnalyzeDiag::Analyzer->new(dir => $dir);
144.Ve
145.PP
146.Vb 7
147\& $analyzer->add_measurements
148\& (
149\& AnalyzeDiag::Measurement->new(name => 'PointerChase',
150\& start => 'chase_start',
151\& end => 'chase_end')
152\& );
153\& my %results = $analyzer->analyze();
154.Ve
155.PP
156.Vb 1
157\& my @times = @{ $Results{PointerChase} };
158.Ve
159.PP
160.Vb 1
161\& # Do something with times
162.Ve
163.PP
164.Vb 1
165\& script_exit;
166.Ve
167.SH "ABSTRACT"
168.IX Header "ABSTRACT"
169.Vb 3
170\& This module exports some functions that analyze diag log
171\& files. It is intended to be used by diags that write
172\& their own post-processing scripts.
173.Ve
174.SH "DESCRIPTION"
175.IX Header "DESCRIPTION"
176The AnalyzeDiag module contains two user-accessible classes:
177AnalyzeDiag::Analyzer and AnalyzeDiag::Measurement.
178.PP
179The general usage is to create an AnalyzeDiag::Analyzer diag, given a
180directory argument (see the example in the previous section). You
181then add AnalyzeDiag::Measurement objects to the analyzer. Finally,
182the call to the analyze method will produce a hash where the keys are
183names of measurements and the values are arrays of times (in cycles)
184for those measurements.
185.PP
186The AnalyzeDiag::Measurement object has a contructor called 'new'.
187Its argument is a hash with keys 'name', 'start', and 'end'. The name
188field is used to identify the measurement. The 'start' and 'end'
189values define PCs at which the measurement should start and end. They
190may be virtual addresses (hex numbers without 0x) or labels.
191.Sh "\s-1EXPORT\s0"
192.IX Subsection "EXPORT"
193.IP "verbose( [$level] )" 4
194.IX Item "verbose( [$level] )"
195If \f(CW$level\fR is specified, set verbose level to that. Returns verbosity
196level.
197.IP "script_say(@msg)" 4
198.IX Item "script_say(@msg)"
199Print the message always.
200.IP "chat(@msg)" 4
201.IX Item "chat(@msg)"
202Print the message if verbose level >= 1.
203.IP "debug(@msg)" 4
204.IX Item "debug(@msg)"
205Print the message if verbose level >= 2.
206.IP "script_warning(@msg)" 4
207.IX Item "script_warning(@msg)"
208Print a warning message.
209.IP "script_die(@msg)" 4
210.IX Item "script_die(@msg)"
211Print an error message, print a stack backtrace, and exit with status
2122.
213.ie n .IP "diag_ok( $bool\fR, \f(CW$name )" 4
214.el .IP "diag_ok( \f(CW$bool\fR, \f(CW$name\fR )" 4
215.IX Item "diag_ok( $bool, $name )"
216Perform a test named '$name'. Test passes if \f(CW$bool\fR evaluates to true
217and fails otherwise.
218.ie n .IP "diag_is($got, $expected\fR, \f(CW$name)" 4
219.el .IP "diag_is($got, \f(CW$expected\fR, \f(CW$name\fR)" 4
220.IX Item "diag_is($got, $expected, $name)"
221Perform a test called '$name'. Test passes if \f(CW$got\fR eq \f(CW$expected\fR (yes,
222that is a string comparison) and fails otherwise. This is a special
223case of \f(CW$diag_ok\fR, but it produces much better output since the
224function actually knows what is being compared.
225.ie n .IP "diag_is_numeric($got, $expected\fR, \f(CW$name, [$tolerance])" 4
226.el .IP "diag_is_numeric($got, \f(CW$expected\fR, \f(CW$name\fR, [$tolerance])" 4
227.IX Item "diag_is_numeric($got, $expected, $name, [$tolerance])"
228Same as diag_is except the comparison is numeric. If \f(CW$tolerance\fR is
229specified, the test passes if \f(CW$got\fR is within \f(CW$tolerance\fR of \f(CW$expected\fR.
230.IP "script_exit" 4
231.IX Item "script_exit"
232Prints the exit status and exits with that status. Exit status will
233be 0 unless one or more tests have failed, in which case it will be 1.
234.SH "SEE ALSO"
235.IX Header "SEE ALSO"
236\&\fIperl\fR\|(1).