From 84422f3859f399ef0bad545bd1349d103375f199 Mon Sep 17 00:00:00 2001 From: mmasserfrye Date: Wed, 18 May 2022 17:01:55 +0000 Subject: [PATCH] added support for plotting and fitting power --- pipelined/src/ppa/ppa.sv | 2 +- synthDC/ppaAnalyze.py | 32 ++++++++-- synthDC/ppaData.csv | 134 +++++++++++++++++++-------------------- synthDC/ppaFitting.csv | 5 +- synthDC/ppaSynth.py | 6 +- 5 files changed, 101 insertions(+), 78 deletions(-) diff --git a/pipelined/src/ppa/ppa.sv b/pipelined/src/ppa/ppa.sv index 96b2581b..0207c99f 100644 --- a/pipelined/src/ppa/ppa.sv +++ b/pipelined/src/ppa/ppa.sv @@ -361,7 +361,7 @@ module ppa_decoder #(parameter WIDTH = 8) ( end endmodule -module ppa_mux2 #(parameter WIDTH = 8) ( +module ppa_mux2_1 #(parameter WIDTH = 1) ( input logic [WIDTH-1:0] d0, d1, input logic s, output logic [WIDTH-1:0] y); diff --git a/synthDC/ppaAnalyze.py b/synthDC/ppaAnalyze.py index 9dc7399f..edad94dd 100755 --- a/synthDC/ppaAnalyze.py +++ b/synthDC/ppaAnalyze.py @@ -1,4 +1,5 @@ #!/usr/bin/python3 +from distutils.log import error import subprocess import csv import re @@ -6,6 +7,7 @@ import matplotlib.pyplot as plt import matplotlib.lines as lines import numpy as np + def getData(): bashCommand = "grep 'Critical Path Length' runs/ppa_*/reports/*qor*" outputCPL = subprocess.check_output(['bash','-c', bashCommand]) @@ -15,20 +17,28 @@ def getData(): outputDA = subprocess.check_output(['bash','-c', bashCommand]) linesDA = outputDA.decode("utf-8").split('\n')[:-1] + bashCommand = "grep '100' runs/ppa_*/reports/*power*" + outputP = subprocess.check_output(['bash','-c', bashCommand]) + linesP = outputP.decode("utf-8").split('\n')[:-1] + cpl = re.compile('\d{1}\.\d{6}') f = re.compile('_\d*_MHz') wm = re.compile('ppa_\w*_\d*_qor') da = re.compile('\d*\.\d{6}') + p = re.compile('\d+\.\d+[e-]*\d+') allSynths = [] for i in range(len(linesCPL)): line = linesCPL[i] mwm = wm.findall(line)[0][4:-4].split('_') + power = p.findall(linesP[i]) oneSynth = [mwm[0], int(mwm[1])] oneSynth += [int(f.findall(line)[0][1:-4])] oneSynth += [float(cpl.findall(line)[0])] oneSynth += [float(da.findall(linesDA[i])[0])] + oneSynth += [float(power[1])] + oneSynth += [float(power[2])] allSynths += [oneSynth] return allSynths @@ -38,9 +48,17 @@ def getVals(module, freq, var): if (var == 'delay'): ind = 3 units = " (ps)" - else: + elif (var == 'area'): ind = 4 - units = " (square microns)" + units = " (sq microns)" + elif (var == 'dpower'): + ind = 5 + units = " (mW)" + elif (var == 'lpower'): + ind = 6 + units = " (nW)" + else: + error widths = [] ivar = [] @@ -53,7 +71,7 @@ def getVals(module, freq, var): def writeCSV(allSynths): file = open("ppaData.csv", "w") writer = csv.writer(file) - writer.writerow(['Module', 'Width', 'Target Freq', 'Delay', 'Area']) + writer.writerow(['Module', 'Width', 'Target Freq', 'Delay', 'Area', 'D Power (mW)', 'L Power (nW)']) for one in allSynths: writer.writerow(one) @@ -118,6 +136,8 @@ def makePlots(mod): plotPPA(mod, 5000, 'delay') plotPPA(mod, 5000, 'area') plotPPA(mod, 10, 'area') + plotPPA(mod, 5000, 'lpower') + plotPPA(mod, 5000, 'dpower') def regress(widths, var): @@ -136,9 +156,9 @@ def regress(widths, var): def makeCoefTable(): file = open("ppaFitting.csv", "w") writer = csv.writer(file) - writer.writerow(['Module', 'Variable', 'Freq', '1', 'N', 'log(N)', 'Nlog(N)', 'R^2']) + writer.writerow(['Module', 'Metric', 'Freq', '1', 'N', 'log(N)', 'Nlog(N)', 'R^2']) - for mod in ['add', 'mult', 'comparator']: + for mod in ['add', 'mult', 'comparator', 'shifter']: for comb in [['delay', 5000], ['area', 5000], ['area', 10]]: var = comb[0] freq = comb[1] @@ -155,5 +175,5 @@ writeCSV(allSynths) makePlots('shifter') -# makeCoefTable() +makeCoefTable() diff --git a/synthDC/ppaData.csv b/synthDC/ppaData.csv index d5232bb4..3ea5648b 100644 --- a/synthDC/ppaData.csv +++ b/synthDC/ppaData.csv @@ -1,67 +1,67 @@ -Module,Width,Target Freq,Delay,Area -add,128,10,7.100851,1867.879976 -add,128,5000,0.389771,7007.980119 -add,16,10,2.032906,221.479998 -add,16,4000,0.249839,551.74001 -add,16,5000,0.228259,924.140017 -add,16,6000,0.225754,1120.140018 -add,32,10,4.160501,456.679995 -add,32,4000,0.280842,1730.680031 -add,32,5000,0.2505,1933.540033 -add,32,6000,0.271774,1746.36003 -add,64,10,8.474034,927.079988 -add,64,4000,0.323267,3758.300065 -add,64,5000,0.334061,3798.480071 -add,64,6000,0.328457,3749.480066 -add,8,10,0.940062,103.879999 -add,8,5000,0.199689,197.960003 -comparator,128,10,0.842074,1997.240039 -comparator,128,5000,0.260142,5215.56005 -comparator,16,10,0.576329,252.840005 -comparator,16,4000,0.249312,280.280005 -comparator,16,5000,0.199026,313.600006 -comparator,16,6000,0.166568,422.380007 -comparator,32,10,0.765874,495.88001 -comparator,32,4000,0.24995,608.580012 -comparator,32,5000,0.205372,919.240014 -comparator,32,6000,0.2012,1248.520016 -comparator,64,10,0.561562,1008.42002 -comparator,64,4000,0.249905,1437.660027 -comparator,64,5000,0.219296,2738.120023 -comparator,64,6000,0.221138,2341.220025 -comparator,8,10,0.29577,118.580002 -comparator,8,5000,0.195502,129.360003 -mult,128,10,9.334627,180734.540854 -mult,128,5000,1.78322,314617.244472 -mult,16,10,4.730546,3869.040009 -mult,16,4000,0.821111,9132.620147 -mult,16,5000,0.820059,9583.420143 -mult,16,6000,0.831308,8594.600132 -mult,32,10,7.575772,12412.680067 -mult,32,4000,1.091389,31262.980534 -mult,32,5000,1.092153,31497.200524 -mult,32,6000,1.084816,33519.920555 -mult,64,10,4.7933,46798.920227 -mult,64,4000,1.411752,93087.261425 -mult,64,5000,1.404875,94040.801492 -mult,64,6000,1.415466,89931.661403 -mult,8,10,2.076433,1009.399998 -mult,8,5000,0.552339,4261.040075 -shifter,128,10,2.577935,8113.420158 -shifter,128,5000,0.395847,16602.180268 -shifter,16,10,0.0,0.0 -shifter,16,10,0.0,0.0 -shifter,32,10,1.906335,1656.200032 -shifter,32,10,1.906335,1656.200032 -shifter,32,10,1.906335,1656.200032 -shifter,32,4000,0.260606,3490.760054 -shifter,32,4000,0.260606,3490.760054 -shifter,32,4000,0.260606,3490.760054 -shifter,32,5000,0.238962,4985.260077 -shifter,32,5000,0.238962,4985.260077 -shifter,32,5000,0.238962,4985.260077 -shifter,32,6000,0.241742,4312.000069 -shifter,32,6000,0.241742,4312.000069 -shifter,32,6000,0.241742,4312.000069 -shifter,8,10,0.0,0.0 -shifter,8,5000,0.0,0.0 +Module,Width,Target Freq,Delay,Area,D Power (mW),L Power (nW) +add,128,10,7.100851,1867.879976,0.00501,465.925 +add,128,5000,0.389771,7007.980119,3.309,2.77 +add,16,10,2.032906,221.479998,0.000575,55.29 +add,16,4000,0.249839,551.74001,0.239,302.479 +add,16,5000,0.228259,924.140017,0.519,641.631 +add,16,6000,0.225754,1120.140018,0.739,1.01 +add,32,10,4.160501,456.679995,0.00118,112.161 +add,32,4000,0.280842,1730.680031,0.735,849.828 +add,32,5000,0.2505,1933.540033,1.049,1.03 +add,32,6000,0.271774,1746.36003,1.138,955.901 +add,64,10,8.474034,927.079988,0.00246,230.083 +add,64,4000,0.323267,3758.300065,1.523,1.75 +add,64,5000,0.334061,3798.480071,1.917,2.18 +add,64,6000,0.328457,3749.480066,2.346,1.77 +add,8,10,0.940062,103.879999,0.000241,24.765 +add,8,5000,0.199689,197.960003,0.113,83.576 +comparator,128,10,0.842074,1997.240039,0.00087,243.506 +comparator,128,5000,0.260142,5215.56005,3.708,6.0 +comparator,16,10,0.576329,252.840005,0.000144,31.402 +comparator,16,4000,0.249312,280.280005,0.0581,55.248 +comparator,16,5000,0.199026,313.600006,0.0859,78.893 +comparator,16,6000,0.166568,422.380007,0.255,301.506 +comparator,32,10,0.765874,495.88001,0.000226,66.41 +comparator,32,4000,0.24995,608.580012,0.168,130.613 +comparator,32,5000,0.205372,919.240014,0.43,840.47 +comparator,32,6000,0.2012,1248.520016,0.928,1.48 +comparator,64,10,0.561562,1008.42002,0.000449,127.626 +comparator,64,4000,0.249905,1437.660027,0.462,558.66 +comparator,64,5000,0.219296,2738.120023,1.989,2.95 +comparator,64,6000,0.221138,2341.220025,1.343,2.59 +comparator,8,10,0.29577,118.580002,6.83e-05,16.053 +comparator,8,5000,0.195502,129.360003,0.0358,21.443 +mult,128,10,9.334627,180734.540854,0.428,1.8 +mult,128,5000,1.78322,314617.244472,997.34,1.63 +mult,16,10,4.730546,3869.040009,0.0107,641.517 +mult,16,4000,0.821111,9132.620147,14.407,8.03 +mult,16,5000,0.820059,9583.420143,20.175,8.5 +mult,16,6000,0.831308,8594.600132,21.106,7.15 +mult,32,10,7.575772,12412.680067,0.0229,1.18 +mult,32,4000,1.091389,31262.980534,65.471,2.49 +mult,32,5000,1.092153,31497.200524,79.554,2.58 +mult,32,6000,1.084816,33519.920555,103.798,2.91 +mult,64,10,4.7933,46798.920227,0.103,5.46 +mult,64,4000,1.411752,93087.261425,227.876,6.05 +mult,64,5000,1.404875,94040.801492,298.667,6.16 +mult,64,6000,1.415466,89931.661403,337.302,5.63 +mult,8,10,2.076433,1009.399998,0.00206,211.637 +mult,8,5000,0.552339,4261.040075,5.543,5.05 +mux2,1,10,0.060639,6.86,5.15e-06,1.19 +mux2,1,10,0.060639,6.86,5.15e-06,1.19 +shifter,128,10,2.758726,9722.580189,0.00789,720.698 +shifter,128,5000,0.401118,19106.080347,6.94,1.23 +shifter,16,10,1.237745,681.100013,0.000441,52.029 +shifter,16,5000,0.209586,2120.720031,1.025,2.15 +shifter,32,10,1.906335,1656.200032,0.00115,118.773 +shifter,32,4000,0.260606,3490.760054,1.282,2.57 +shifter,32,4000,0.260606,3490.760054,1.282,2.57 +shifter,32,4000,0.260606,3490.760054,1.282,2.57 +shifter,32,5000,0.238962,4985.260077,2.489,4.9 +shifter,32,6000,0.241742,4312.000069,2.411,3.71 +shifter,32,6000,0.241742,4312.000069,2.411,3.71 +shifter,32,6000,0.241742,4312.000069,2.411,3.71 +shifter,64,10,2.919486,4346.300085,0.00297,210.734 +shifter,64,5000,0.358993,9471.700156,4.518,6.94 +shifter,8,10,0.622998,244.020005,0.00019,26.943 +shifter,8,5000,0.198885,495.88001,0.285,300.128 diff --git a/synthDC/ppaFitting.csv b/synthDC/ppaFitting.csv index 58a3d036..88297724 100644 --- a/synthDC/ppaFitting.csv +++ b/synthDC/ppaFitting.csv @@ -1,4 +1,4 @@ -Module,Variable,Freq,1,N,log(N),Nlog(N),R^2 +Module,Metric,Freq,1,N,log(N),Nlog(N),R^2 add,delay,5000,0.23935453005464438,0.015973094945355207,-0.058207695467226296,-0.002593789781151714,0.9902532112478974 add,area,5000,-1032.1274349672115,64.4386855922132,374.6678949053879,-3.2579193244904823,0.9999180068922152 add,area,10,-13.720004131149423,14.699999256147343,3.6067390521177815e-06,9.312480709428003e-08,1.0 @@ -8,3 +8,6 @@ mult,area,10,-24112.991162714883,-8735.874000034026,30452.017533199683,1892.3032 comparator,delay,5000,0.18302939890710385,-0.001793523907103751,0.00950014684425352,0.0004195522734073458,0.9999387049502957 comparator,area,5000,1831.2076391201958,303.59984869227907,-1617.4342555852443,-44.475154143873425,0.9990603962758624 comparator,area,10,-0.23027509289593326,18.299023530396347,-8.48304611908023,-0.4881808064440773,0.9999674500675539 +shifter,delay,5000,0.4107033934426204,0.03923479405737683,-0.19848886911558317,-0.006549393512462493,0.989283342171845 +shifter,area,5000,-3612.7138133224103,-65.6549821150965,1929.186263038338,35.02443853718661,0.9998392000511572 +shifter,area,10,806.0687632950834,120.52125970491868,-682.1783666753405,-5.1440062238735225,0.9998176364985187 diff --git a/synthDC/ppaSynth.py b/synthDC/ppaSynth.py index b2479fed..cf7e430b 100755 --- a/synthDC/ppaSynth.py +++ b/synthDC/ppaSynth.py @@ -14,9 +14,9 @@ def deleteRedundant(LoT): bashCommand = synthStr.format(*synth) outputCPL = subprocess.check_output(['bash','-c', bashCommand]) -widths = ['8', '16', '32', '64', '128'] -modules = ['shifter'] -freqs = ['10', '5000'] +widths = ['1'] +modules = ['mux2'] +freqs = ['10'] tech = 'sky90'