3 # Copyright (c) 2017 ARM Limited
6 # The license below extends only to copyright in the software and shall
7 # not be construed as granting a license to any other intellectual
8 # property including but not limited to intellectual property relating
9 # to a hardware implementation of the functionality of the software
10 # licensed hereunder. You may use the software subject to the license
11 # terms below provided that you ensure that this notice is replicated
12 # unmodified and in its entirety in all distributions of the software,
13 # modified or unmodified, in source code or in binary form.
15 # Redistribution and use in source and binary forms, with or without
16 # modification, are permitted provided that the following conditions are
17 # met: redistributions of source code must retain the above copyright
18 # notice, this list of conditions and the following disclaimer;
19 # redistributions in binary form must reproduce the above copyright
20 # notice, this list of conditions and the following disclaimer in the
21 # documentation and/or other materials provided with the distribution;
22 # neither the name of the copyright holders nor the names of its
23 # contributors may be used to endorse or promote products derived from
24 # this software without specific prior written permission.
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # Authors: Radhika Jagtap
40 import PlotPowerStates
as plotter
43 from subprocess
import call
45 parser
= argparse
.ArgumentParser(formatter_class
=
46 argparse
.ArgumentDefaultsHelpFormatter
)
48 parser
.add_argument("--statsfile", required
=True, help="stats file path")
50 parser
.add_argument("--bankutils", default
="b1 b2 b3", help="target bank " \
51 "utilization values separated by space, e.g. \"1 4 8\"")
53 parser
.add_argument("--seqbytes", default
="s1 s2 s3", help="no. of " \
54 "sequential bytes requested by each traffic gen request." \
55 " e.g. \"64 256 512\"")
57 parser
.add_argument("--delays", default
="d1 d2 d3", help="string of delay"
58 " values separated by a space. e.g. \"1 20 100\"")
60 parser
.add_argument("--outdir", help="directory to output plots",
63 parser
.add_argument("--pdf", action
='store_true', help="output Latex and pdf")
66 args
= parser
.parse_args()
67 if not os
.path
.isfile(args
.statsfile
):
68 exit('Error! File not found: %s' % args
.statsfile
)
69 if not os
.path
.isdir(args
.outdir
):
72 bank_util_list
= args
.bankutils
.strip().split()
73 seqbyte_list
= args
.seqbytes
.strip().split()
74 delays
= args
.delays
.strip().split()
75 plotter
.plotLowPStates(args
.outdir
+ '/', args
.statsfile
, bank_util_list
,
81 ### Time and energy plots ###
82 #############################
83 # place tex and pdf files in outdir
85 texfile_s
= 'stacked_lowp_sweep.tex'
87 outfile
= open(texfile_s
, 'w')
90 outfile
.write("\\begin{figure} \n\centering\n")
91 ## Time plots for all delay values
94 filename
= plotter
.stateTimePlotName(str(delay
) + '-')
95 outfile
.write(wrapForGraphic(filename
, textwidth
))
96 outfile
.write(getCaption(delay
))
97 outfile
.write("\end{figure}\n")
99 # Energy plots for all delay values
100 outfile
.write("\\begin{figure} \n\centering\n")
103 filename
= plotter
.stateEnergyPlotName(str(delay
) + '-')
104 outfile
.write(wrapForGraphic(filename
, textwidth
))
105 outfile
.write(getCaption(delay
))
106 outfile
.write("\end{figure}\n")
111 print "\n Generating pdf file"
112 print "*******************************"
113 print "\tpdflatex ", texfile_s
114 # Run pdflatex to generate to pdf
115 call(["pdflatex", texfile_s
])
116 call(["open", texfile_s
.split('.')[0] + '.pdf'])
119 def getCaption(delay
):
120 return ('\caption{' +
121 'itt delay = ' + str(delay
) +
124 def wrapForGraphic(filename
, width
='1.0'):
125 # \t is tab and needs to be escaped, therefore \\textwidth
126 return '\includegraphics[width=' + width
+ \
127 '\\textwidth]{' + filename
+ '}\n'
129 def startDocText(outfile
):
132 \documentclass[a4paper,landscape,twocolumn]{article}
134 \usepackage{graphicx}
135 \usepackage[margin=0.5cm]{geometry}
138 outfile
.write(start_stuff
)
140 def endDocText(outfile
):
147 outfile
.write(end_stuff
)
150 if __name__
== '__main__':