From 7447f9fbf45aa7422b9fd565e7359afebedadc76 Mon Sep 17 00:00:00 2001 From: Madeleine Masser-Frye <51804758+mmasserfrye@users.noreply.github.com> Date: Fri, 27 May 2022 20:59:23 +0000 Subject: [PATCH] plotting updates, normalization --- synthDC/ppaAnalyze.py | 119 +++++++++++++++++++++++++++++++----------- synthDC/ppaData.csv | 34 ++++++------ 2 files changed, 107 insertions(+), 46 deletions(-) diff --git a/synthDC/ppaAnalyze.py b/synthDC/ppaAnalyze.py index d7f16180..14ab01ab 100755 --- a/synthDC/ppaAnalyze.py +++ b/synthDC/ppaAnalyze.py @@ -5,6 +5,7 @@ from operator import index import subprocess import csv import re +from matplotlib.cbook import flatten import matplotlib.pyplot as plt import matplotlib.lines as lines import matplotlib.axes as axes @@ -29,7 +30,7 @@ def synthsintocsv(): ''' writes a CSV with one line for every available synthesis each line contains the module, tech, width, target freq, and resulting metrics ''' - + print("This takes a moment...") bashCommand = "find . -path '*runs/ppa*rv32e*' -prune" output = subprocess.check_output(['bash','-c', bashCommand]) allSynths = output.decode("utf-8").split('\n')[:-1] @@ -91,7 +92,7 @@ def cleanup(): def getVals(tech, module, var, freq=None): ''' for a specified tech, module, and variable/metric returns a list of values for that metric in ascending width order with the appropriate units - works at a specified target frequency or if none is given, uses the synthesis with the min delay for each width + works at a specified target frequency or if none is given, uses the synthesis with the best achievable delay for each width ''' if (var == 'delay'): @@ -101,11 +102,12 @@ def getVals(tech, module, var, freq=None): elif (var == 'lpower'): units = " (nW)" elif (var == 'denergy'): - units = " (pJ)" + units = " (nJ)" global widths metric = [] widthL = [] + if (freq != None): for oneSynth in allSynths: if (oneSynth.freq == freq) & (oneSynth.tech == tech) & (oneSynth.module == module): @@ -118,7 +120,7 @@ def getVals(tech, module, var, freq=None): m = 100000 # large number to start for oneSynth in allSynths: if (oneSynth.width == w) & (oneSynth.tech == tech) & (oneSynth.module == module): - if (oneSynth.delay < m): + if (oneSynth.delay < m) & (1000/oneSynth.delay > oneSynth.freq): m = oneSynth.delay osdict = oneSynth._asdict() met = osdict[var] @@ -127,6 +129,8 @@ def getVals(tech, module, var, freq=None): if ('flop' in module) & (var == 'area'): metric = [m/2 for m in metric] # since two flops in each module + if (var == 'denergy'): + metric = [m*1000 for m in metric] # more practical units for regression coefs return metric, units @@ -177,9 +181,20 @@ def oneMetricPlot(module, var, freq=None, ax=None, fits='clsgn'): fullLeg = [] global techcolors global widths + + metrics = ['delay', 'area', 'lpower', 'denergy'] + ind1 = metrics.index(var) + techs = ['sky90', 'gf32', 'tsmc28'] + global norms + for combo in techcolors: tech, c, m = combo metric, units = getVals(tech, module, var, freq=freq) + + ind2 = techs.index(tech) + norm = norms[ind1][ind2] + metric = [m/norm for m in metric] # comment out to not normalize + if len(metric) == 5: xp, pred, leg = regress(widths, metric, combo, fits) fullLeg += leg @@ -191,10 +206,13 @@ def oneMetricPlot(module, var, freq=None, ax=None, fits='clsgn'): ax.set_xticks(widths) ax.set_xlabel("Width (bits)") - ax.set_ylabel(str.title(var) + units) + + ylabeldic = {"lpower": "Leakage Power", "denergy": "Dynamic Energy", "area": "Area", "delay": "Delay"} + + ax.set_ylabel(ylabeldic[var] + units) if singlePlot: - titleStr = " (target " + str(freq)+ "MHz)" if freq != None else " (best delay)" + titleStr = " (target " + str(freq)+ "MHz)" if freq != None else " (best achievable delay)" ax.set_title(module + titleStr) plt.show() @@ -343,31 +361,69 @@ def squareAreaDelay(tech, mod, width): delaysL[ind] += [oneSynth.delay] areasL[ind] += [oneSynth.area] - fig = plt.figure() - ax = fig.add_subplot(111) + f, (ax1) = plt.subplots(1, 1) + ax2 = ax1.twinx() for ind in [0,1]: areas = areasL[ind] delays = delaysL[ind] - freqs = freqsL[ind] - + targets = freqsL[ind] + targets = [1000/f for f in targets] + if ('flop' in mod): areas = [m/2 for m in areas] # since two flops in each module - freqs, delays, areas = noOutliers(freqs, delays, areas) # comment out to see all syntheses + targets, delays, areas = noOutliers(targets, delays, areas) # comment out to see all + + if not ind: + achievedDelays = delays c = 'blue' if ind else 'green' - plt.scatter(delays, areas, color=c) - - legend_elements = [lines.Line2D([0], [0], color='green', ls='', marker='o', label='timing achieved'), - lines.Line2D([0], [0], color='blue', ls='', marker='o', label='slack violated')] - - plt.legend(handles=legend_elements) + ax1.scatter(targets, delays, marker='^', color=c) + ax2.scatter(targets, areas, marker='s', color=c) - plt.xlabel("Delay Achieved (ns)") - plt.ylabel('Area (sq microns)') - plt.title(mod + '_' + str(width)) - ax.set_aspect(1./ax.get_data_ratio()) + bestAchieved = min(achievedDelays) + + legend_elements = [lines.Line2D([0], [0], color='green', ls='', marker='^', label='delay (timing achieved)'), + lines.Line2D([0], [0], color='green', ls='', marker='s', label='area (timing achieved)'), + lines.Line2D([0], [0], color='blue', ls='', marker='^', label='delay (timing violated)'), + lines.Line2D([0], [0], color='blue', ls='', marker='s', label='area (timing violated)')] + + ax2.legend(handles=legend_elements, loc='upper left') + + ax1.set_xlabel("Delay Targeted (ns)") + ax1.set_ylabel("Delay Achieved (ns)") + ax2.set_ylabel('Area (sq microns)') + ax1.set_title(mod + '_' + str(width)) + + squarify(f) + + xvals = np.array(ax1.get_xlim()) + frac = (min(flatten(delaysL))-xvals[0])/(xvals[1]-xvals[0]) + areaLowerLim = min(flatten(areasL))-100 + areaUpperLim = max(flatten(areasL))/frac + areaLowerLim + ax2.set_ylim([areaLowerLim, areaUpperLim]) + ax1.plot(xvals, xvals, ls="--", c=".3") + ax1.hlines(y=bestAchieved, xmin=xvals[0], xmax=xvals[1], color="black", ls='--') + plt.show() +def squarify(fig): + ''' helper function for squareAreaDelay() + forces matplotlib figure to be a square + ''' + w, h = fig.get_size_inches() + if w > h: + t = fig.subplotpars.top + b = fig.subplotpars.bottom + axs = h*(t-b) + l = (1.-axs/w)/2 + fig.subplots_adjust(left=l, right=1-l) + else: + t = fig.subplotpars.right + b = fig.subplotpars.left + axs = w*(t-b) + l = (1.-axs/h)/2 + fig.subplots_adjust(bottom=l, top=1-l) + def adprodpow(areas, delays, pow): ''' for each value in [areas] returns area*delay^pow helper function for freqPlot''' @@ -380,15 +436,15 @@ def adprodpow(areas, delays, pow): def plotPPA(mod, freq=None): ''' for the module specified, plots width vs delay, area, leakage power, and dynamic energy with fits - if no freq specified, uses the synthesis with min delay for each width + if no freq specified, uses the synthesis with best achievable delay for each width overlays data from both techs ''' fig, axs = plt.subplots(2, 2) oneMetricPlot(mod, 'delay', ax=axs[0,0], fits='cg', freq=freq) - oneMetricPlot(mod, 'area', ax=axs[0,1], fits='s', freq=freq) - oneMetricPlot(mod, 'lpower', ax=axs[1,0], fits='s', freq=freq) - oneMetricPlot(mod, 'denergy', ax=axs[1,1], fits='s', freq=freq) - titleStr = " (target " + str(freq)+ "MHz)" if freq != None else " (best delay)" + oneMetricPlot(mod, 'area', ax=axs[0,1], fits='cl', freq=freq) + oneMetricPlot(mod, 'lpower', ax=axs[1,0], fits='cl', freq=freq) + oneMetricPlot(mod, 'denergy', ax=axs[1,1], fits='cl', freq=freq) + titleStr = " (target " + str(freq)+ "MHz)" if freq != None else " (best achievable delay)" plt.suptitle(mod + titleStr) plt.show() @@ -398,13 +454,16 @@ if __name__ == '__main__': Synth = namedtuple("Synth", "module tech width freq delay area lpower denergy") techcolors = [['sky90', 'green', 'o'], ['tsmc28', 'blue', '^']] # add another list here for gf32 widths = [8, 16, 32, 64, 128] + norms = [[43.2, 15, 12.2], [1.96, .351, .252], [1.98, .3116, 1.09], [1, 1, 1]] # [sky, gf, tsmc][fo4, invx1area, leakage, energy] # synthsintocsv() # slow, run only when new synth runs to add to csv synthsfromcsv('ppaData.csv') # your csv here! ### examples - # oneMetricPlot('add', 'delay') - # freqPlot('sky90', 'comparator', 16) - # plotPPA('add') - squareAreaDelay('sky90', 'comparator', 16) \ No newline at end of file + # freqPlot('tsmc28', 'add', 16) + squareAreaDelay('sky90', 'add', 32) + squareAreaDelay('sky90', 'mult', 32) + squareAreaDelay('sky90', 'comparator', 32) + plotPPA('add') + plotPPA('comparator') \ No newline at end of file diff --git a/synthDC/ppaData.csv b/synthDC/ppaData.csv index b5b0435c..1c240ad2 100644 --- a/synthDC/ppaData.csv +++ b/synthDC/ppaData.csv @@ -13,6 +13,7 @@ flopenr,sky90,64,5619,0.204566,4385.500035,2100.0,4.961134631999999 comparator,sky90,128,10,0.842074,1997.240039,243.506,0.001300162256 add,sky90,8,6896,0.144869,331.240005,219.731,0.060410373 shiftleft,sky90,128,3484,0.313597,11188.660188,8590.0,2.418146467 +add,sky90,32,3120,0.320213,1107.40002,307.68,0.18700439200000005 flop,sky90,128,8476,0.070789,4264.959961,2070.0,3.6420232610000003 flopr,sky90,8,11879,0.11919,400.820003,214.285,0.662589129 add,tsmc28,64,3000,0.312507,227.052001,1070.0,0.0621263916 @@ -41,7 +42,6 @@ shiftleft,sky90,8,10222,0.097799,394.940007,435.049,0.06836150099999999 flopenr,sky90,64,4723,0.18608,4327.680086,2230.0,3.9400579199999997 flop,sky90,128,15539,0.070789,4264.959961,2070.0,6.676960058000001 alu,sky90,16,10000,0.304,3555.440059,2890.0,2.593728 -add,sky90,32,4320,0.254861,1716.960028,866.723,0.373881087 add,tsmc28,32,21130,0.080875,367.668003,1860.0,0.15414775 flop,sky90,8,14409,0.070789,266.559998,129.629,0.3870813309 comparator,sky90,64,4636,0.215691,2072.700029,1840.0,0.345752673 @@ -50,6 +50,7 @@ add,tsmc28,8,9092,0.108452,21.42,108.14,0.0057154204 add,sky90,16,4174,0.239287,549.780011,304.811,0.103371984 alu,sky90,16,3524,0.29417,3599.540061,2670.0,0.90839696 priorityonehot,sky90,8,21600,0.054084,157.780003,56.585,0.0190267512 +add,sky90,32,4368,0.268519,1731.660029,883.74,0.399824791 shiftleft,sky90,32,6375,0.159792,3330.040049,3530.0,0.627343392 priorityonehot,sky90,128,5185,0.274609,2437.260036,1210.0,0.250718017 add,tsmc28,128,6900,0.144862,733.320004,3010.0,0.22192858399999998 @@ -59,8 +60,8 @@ csa,sky90,128,16929,0.060643,4264.960083,3260.0,1.3935761400000002 shiftleft,sky90,32,6250,0.159977,2964.500038,3130.0,0.547281317 flopr,sky90,64,6988,0.11201,2728.319991,1360.0,2.4349853899999996 flop,sky90,64,19777,0.070789,2132.47998,1040.0,4.249180514000001 -add,sky90,32,3680,0.271527,1465.100024,591.825,0.289176255 priorityonehot,sky90,8,22800,0.054084,157.780003,56.585,0.0200976144 +add,sky90,32,3744,0.29863,1565.060028,830.413,0.31117246000000004 floprasync,sky90,8,15000,0.071444,362.600007,161.167,0.40944556400000004 mult,sky90,64,657,1.52205,69763.260863,23900.0,57.09818369999999 decoder,sky90,8,26064,0.037953,49.980001,39.023,0.0030893742000000003 @@ -145,7 +146,6 @@ add,sky90,16,4595,0.221986,817.320014,742.91,0.15871998999999998 flopenr,sky90,16,5285,0.169538,1127.000031,688.586,0.8848188220000001 priorityencoder,sky90,128,7500,0.113763,1058.400021,117.974,0.040499627999999996 priorityencoder,sky90,8,10131,0.104625,85.260002,26.481,0.0075225375 -add,sky90,32,4800,0.258491,1955.100033,1070.0,0.5043159410000001 add,tsmc28,8,7880,0.123121,20.538,106.097,0.0054665724 decoder,sky90,8,30334,0.032475,70.560001,88.439,0.006699592499999999 add,tsmc28,16,6443,0.138825,50.274,244.477,0.012882959999999999 @@ -190,6 +190,7 @@ mult,sky90,32,944,1.085045,32407.620517,26800.0,28.648443135 shiftleft,sky90,16,10769,0.131174,1153.460019,1350.0,0.26549617600000003 add,tsmc28,16,3000,0.32096,41.202,203.505,0.0116572672 add,tsmc28,128,8400,0.119042,1050.084009,4830.0,0.29831925200000003 +add,sky90,32,3978,0.280475,1768.90003,1000.0,0.34245997499999997 mult,sky90,32,4000,1.091389,31262.980534,24900.0,123.890113724 priorityencoder,sky90,8,9176,0.104625,85.260002,26.481,0.006821550000000001 floprasync,sky90,128,7500,0.071444,5785.920113,2580.0,3.3043564439999997 @@ -219,7 +220,6 @@ add,sky90,8,6355,0.157048,343.980005,234.605,0.064546728 csa,sky90,64,22360,0.060643,2195.200043,1740.0,0.937237565 priorityencoder,sky90,32,9184,0.111067,293.020006,53.82,0.015460526399999999 decoder,sky90,16,28542,0.039572,499.800013,875.782,0.058249984000000005 -add,sky90,32,4160,0.253175,2031.540036,1240.0,0.41900462499999996 shiftleft,sky90,8,11111,0.091007,491.960005,678.321,0.07371567000000001 alu,sky90,16,2073,0.481803,1688.540032,395.679,0.278963937 priorityonehot,sky90,128,3407,0.293484,1910.02003,670.082,0.107415144 @@ -253,6 +253,7 @@ add,tsmc28,8,7500,0.131988,20.916,106.321,0.0055698936 flopr,sky90,16,9317,0.10124,776.160012,486.897,0.78248396 priorityencoder,sky90,8,9749,0.104625,85.260002,26.481,0.0072505124999999995 csa,sky90,8,15971,0.062613,203.840004,117.131,0.0491950341 +add,sky90,32,4680,0.257118,1882.58003,1100.0,0.439157544 mult,sky90,128,584,1.712328,298800.044147,115000.0,257.92111732800004 priorityonehot,sky90,8,18400,0.054629,109.760001,31.371,0.009920626399999998 comparator,sky90,8,10909,0.11361,387.1,565.114,0.0965685 @@ -274,6 +275,7 @@ comparator,sky90,16,7200,0.15891,771.260013,1090.0,0.12331416 shiftleft,sky90,128,2968,0.33687,9142.420162,5660.0,1.7459972099999999 flop,sky90,32,13279,0.070789,1066.23999,518.516,1.4265894803 decoder,sky90,32,7500,0.115541,147.000003,15.758,0.006470296 +add,sky90,32,3588,0.278585,1182.860022,345.668,0.22342517000000003 decoder,sky90,128,7658,0.130462,549.78001,153.219,0.041225991999999996 mult,sky90,16,1122,0.891172,6478.780105,3540.0,4.677761828 shifter,sky90,16,5000,0.209586,2120.720031,2150.0,0.46528091999999993 @@ -307,8 +309,10 @@ flopr,sky90,128,15000,0.125811,5740.839996,3160.0,11.995198173 flopr,sky90,64,12112,0.101659,2816.520013,1550.0,3.8755460570000007 add,sky90,128,2615,0.390136,6662.040117,2450.0,1.2094216 flop,sky90,128,13561,0.070789,4264.959961,2070.0,5.826996535 +add,sky90,32,3900,0.280206,1679.720027,892.235,0.337928436 comparator,sky90,64,4727,0.225291,2499.000023,2710.0,0.465000624 add,sky90,8,7708,0.161451,407.680008,375.802,0.084923226 +add,sky90,32,4056,0.253823,1918.840034,1040.0,0.38657242900000005 add,tsmc28,16,16300,0.067336,189.63,1050.0,0.04902060799999999 priorityencoder,sky90,32,10000,0.111067,293.020006,53.82,0.016882183999999998 decoder,sky90,8,29973,0.032971,66.640001,78.184,0.0064062653 @@ -337,6 +341,7 @@ add,tsmc28,128,8232,0.121475,945.504008,4240.0,0.27429055 shiftleft,sky90,8,7500,0.132768,218.540002,147.871,0.034785216 priorityencoder,sky90,64,9782,0.112447,546.840011,77.149,0.028561538 add,tsmc28,64,7202,0.138773,305.424001,1310.0,0.09256159100000001 +add,sky90,32,3333,0.299576,1153.460022,384.333,0.20880447200000002 add,tsmc28,128,6720,0.148758,707.742004,2940.0,0.21629413200000003 mult,sky90,32,852,1.173643,23514.120391,12700.0,21.016425201 mult,sky90,32,741,1.349466,17389.120212,4650.0,10.286979318 @@ -380,7 +385,6 @@ priorityonehot,sky90,16,15000,0.086192,739.900005,1110.0,0.11920353600000001 shiftleft,sky90,128,3355,0.309977,11750.200195,9570.0,2.415650761 add,sky90,8,7437,0.151519,495.880011,457.493,0.09409329899999999 flop,sky90,64,14974,0.070789,2132.47998,1040.0,3.217289261 -add,sky90,32,3920,0.273454,2044.280039,1330.0,0.41154826999999994 csa,sky90,64,15971,0.062613,1630.720032,943.002,0.39320964 alu,sky90,16,2764,0.361248,2302.020041,1050.0,0.497438496 add,sky90,16,6307,0.225596,1023.12002,1010.0,0.281769404 @@ -419,7 +423,6 @@ add,tsmc28,8,14791,0.06639,27.468,134.31,0.007946883 flopenr,sky90,16,20000,0.189692,1098.580025,591.454,4.502529312 shiftleft,sky90,64,4348,0.23035,5490.940094,4500.0,1.0674419000000002 flop,sky90,8,14126,0.070789,266.559998,129.629,0.37948567120000004 -add,sky90,32,3200,0.312424,1121.120021,296.836,0.203700448 shiftleft,sky90,16,8154,0.128748,1062.320016,1070.0,0.17020485600000002 shiftleft,sky90,8,11333,0.092595,545.860006,815.115,0.089168985 priorityonehot,sky90,16,10667,0.09706,282.240005,85.616,0.025555897999999997 @@ -431,6 +434,7 @@ csa,sky90,16,17249,0.060643,533.12001,432.126,0.178714921 shiftleft,sky90,8,11778,0.091769,674.240011,1040.0,0.101037669 add,sky90,128,2718,0.407908,7287.280117,3350.0,1.463573904 floprasync,sky90,128,15000,0.071444,5785.920113,2580.0,6.602568704 +add,sky90,32,3666,0.278178,1498.420028,715.058,0.276508932 alu,sky90,32,3128,0.389409,5641.860104,2720.0,1.566592407 priorityonehot,sky90,32,7067,0.141491,1078.980015,1580.0,0.14389634700000004 floprasync,sky90,8,10000,0.071444,362.600007,161.167,0.2729375132 @@ -500,6 +504,7 @@ flopr,sky90,8,10947,0.11919,403.760003,218.217,0.60977604 add,sky90,16,10,2.032906,221.479998,55.29,0.0012902854382000001 flopr,sky90,128,10947,0.172973,5340.020018,2310.0,10.278747551999999 shiftleft,sky90,64,4261,0.234657,5289.060089,3950.0,0.980396946 +add,sky90,32,3822,0.282243,1657.18003,864.512,0.31752337500000005 priorityonehot,sky90,16,13333,0.077249,976.080015,1550.0,0.164694868 flopenr,sky90,128,6637,0.228828,8134.980007,3210.0,11.399295648 shiftleft,sky90,64,6087,0.227478,6715.940117,5940.0,1.7761482240000002 @@ -583,6 +588,7 @@ add,tsmc28,128,5040,0.197577,488.502002,2230.0,0.143045748 add,sky90,16,4144,0.240621,555.660011,274.571,0.092639085 alu,sky90,64,2409,0.452715,12468.540233,6180.0,2.755676205 add,sky90,16,2609,0.375085,405.720008,52.28,0.050598966499999995 +add,sky90,32,4134,0.25292,1966.860033,1110.0,0.40720119999999993 alu,sky90,128,2061,0.515343,27812.400516,13300.0,6.941154867 priorityonehot,sky90,64,4762,0.212289,1107.400013,650.606,0.09828980699999999 mult,sky90,8,1709,0.599356,2453.920037,2010.0,1.442649892 @@ -594,7 +600,6 @@ csa,sky90,32,16929,0.060643,1066.240021,827.644,0.348818536 csa,sky90,32,22360,0.060643,1097.600021,868.175,0.468891676 add,tsmc28,32,15394,0.081095,348.768003,1770.0,0.110694675 add,tsmc28,16,25000,0.066258,202.608001,1140.0,0.082027404 -add,sky90,32,2400,0.41509,958.440019,151.083,0.1286779 csa,sky90,16,12777,0.067531,329.280006,134.949,0.0528362544 decoder,sky90,8,39096,0.030694,184.240003,330.692,0.021700658 add,sky90,128,2359,0.423881,5520.340104,1490.0,0.846490357 @@ -615,7 +620,6 @@ alu,sky90,32,10000,0.384364,6083.84011,3640.0,5.60018348 flopr,sky90,32,20000,0.085865,1540.560029,1070.0,2.7735253650000002 flop,sky90,8,13279,0.070789,266.559998,129.629,0.35677656 csa,sky90,8,18207,0.060643,266.560005,213.306,0.0942877364 -add,sky90,32,6000,0.271774,1746.36003,955.901,0.5761608800000001 flop,sky90,64,13844,0.070789,2132.47998,1040.0,2.974482991 csa,sky90,128,16820,0.060643,4264.960083,3260.0,1.384661619 floprasync,sky90,8,8398,0.071444,362.600007,161.167,0.229263796 @@ -660,15 +664,16 @@ add,sky90,64,2788,0.358537,2637.180048,758.693,0.45928589700000005 flop,sky90,128,14126,0.070789,4264.959961,2070.0,6.069802805000001 flop,sky90,32,12996,0.070789,1066.23999,518.516,1.3962139204 decoder,sky90,8,35838,0.030694,237.160005,420.74,0.025291855999999998 -add,sky90,32,3840,0.291206,1547.420027,784.112,0.299650974 add,tsmc28,64,7500,0.133293,307.944001,1320.0,0.09437144399999998 alu,sky90,32,2398,0.416982,5257.700098,2000.0,1.094160768 add,tsmc28,128,7728,0.129394,854.910008,3690.0,0.25193011800000004 +add,sky90,32,3432,0.290785,1156.400022,335.133,0.20762049 flopenr,sky90,64,2892,0.298899,3245.75997,644.425,1.6744321980000003 priorityonehot,sky90,128,4000,0.253946,2661.680036,1330.0,0.210521234 floprasync,sky90,32,13997,0.071444,1446.480028,643.984,1.539332424 csa,sky90,32,16291,0.060643,1066.240021,825.615,0.33547707600000004 flopenr,sky90,64,4627,0.20887,3954.300054,1660.0,3.0662116000000004 +add,sky90,32,2340,0.42591,958.440019,152.032,0.12734709000000002 mux2,sky90,1,10,0.060639,6.86,1.19,3.1229084999999996e-07 flop,sky90,64,10000,0.070789,2132.47998,1040.0,2.1485735702000004 decoder,sky90,8,33883,0.030694,263.620004,439.421,0.027102802 @@ -695,6 +700,7 @@ decoder,sky90,16,25538,0.039572,265.580003,416.038,0.028729272 flopenr,sky90,64,5836,0.198621,4564.840035,2580.0,4.922821485 shiftleft,sky90,8,10444,0.095384,335.160004,328.601,0.060759608 add,sky90,8,5409,0.182541,209.720004,99.155,0.041436807000000006 +add,sky90,32,4212,0.276372,1701.280028,896.35,0.33496286399999997 add,tsmc28,32,1000,0.912322,67.157999,231.062,0.0220781924 flopenr,sky90,32,5764,0.185375,2024.679996,668.031,1.3873465 flop,sky90,32,15000,0.070789,1066.23999,518.516,1.6115399006000002 @@ -707,6 +713,7 @@ mult,sky90,16,976,1.024406,4960.760064,1320.0,2.087739428 add,tsmc28,16,6443,0.138825,50.274,244.477,0.012882959999999999 csa,sky90,128,18139,0.060643,4264.960083,3260.0,1.492970017 comparator,sky90,64,4364,0.229142,1709.120026,1020.0,0.276803536 +add,sky90,32,5460,0.27667,1690.500029,859.028,0.45456881 alu,sky90,32,2659,0.384337,6206.340103,3560.0,1.485846842 flopenr,sky90,64,5079,0.203824,4340.420085,2230.0,4.60947976 add,tsmc28,8,9056,0.108551,21.42,107.887,0.0057749132 @@ -718,7 +725,6 @@ decoder,sky90,8,24773,0.04026,44.100001,23.272,0.002604822 mult,sky90,8,1855,0.605444,2332.40004,1740.0,1.4470111599999997 flopenr,sky90,64,5013,0.228449,4007.220058,1760.0,3.779231807 add,sky90,8,25000,0.151154,660.520013,864.531,0.39103539800000003 -add,sky90,32,10,4.160501,456.679995,112.161,0.005429453805000001 shiftleft,sky90,16,7231,0.138234,1233.820018,1400.0,0.21619797600000001 add,tsmc28,64,9413,0.106226,423.108003,1900.0,0.12534668 decoder,sky90,8,10000,0.085629,37.240001,2.355,0.0012364827599999997 @@ -853,6 +859,7 @@ add,tsmc28,32,14791,0.079295,378.630002,1900.0,0.11220242500000001 decoder,sky90,8,25279,0.038956,48.020001,35.206,0.0031047931999999994 add,tsmc28,64,7732,0.129331,331.128002,1450.0,0.102042159 flopr,sky90,64,10714,0.17183,2815.540026,1390.0,5.43756035 +add,sky90,32,2631,0.379925,977.060019,169.107,0.140952175 priorityonehot,sky90,16,10000,0.099923,281.260004,117.94,0.02398152 mult,sky90,8,10,2.076433,1009.399998,211.637,0.005689426420000001 decoder,sky90,128,17868,0.101057,1072.12001,985.334,0.202922456 @@ -938,7 +945,6 @@ mult,sky90,8,1091,0.915221,1167.180013,211.892,0.30293815099999993 add,sky90,64,3636,0.330032,3266.340054,1220.0,0.79537712 flop,sky90,128,14692,0.070789,4264.959961,2070.0,6.313033809 add,tsmc28,8,15000,0.06579,28.728,137.18,0.008302698 -add,sky90,32,4080,0.256294,1991.360031,1240.0,0.408532636 shiftleft,sky90,16,10000,0.128994,1192.660017,1420.0,0.242379726 mult,sky90,64,10,14.7933,46798.920227,5460.0,2.7101325599999995 floprasync,sky90,16,14557,0.071444,723.240014,321.992,0.798601032 @@ -948,7 +954,6 @@ mult,sky90,128,10,29.334627,180734.540854,18000.0,22.264981893 flop,sky90,64,15539,0.070789,2132.47998,1040.0,3.3386216070000003 add,tsmc28,8,12074,0.081502,23.31,115.92,0.0062838042000000005 flopr,sky90,128,12811,0.174211,5123.439977,1890.0,10.893762252 -add,sky90,32,5000,0.2505,1933.540033,1030.0,0.4726935 mult,sky90,64,714,1.400528,87215.101373,43900.0,85.31176259200001 alu,sky90,64,2496,0.442869,12618.480223,6700.0,2.9570363129999997 priorityencoder,sky90,8,10323,0.104625,85.260002,26.481,0.0076690125 @@ -977,7 +982,6 @@ alu,sky90,64,2365,0.452964,12152.980222,6200.0,2.5982015040000004 priorityonehot,sky90,16,11111,0.089821,300.860005,305.978,0.029281646 comparator,sky90,32,5474,0.192304,1188.740012,1430.0,0.20691910400000002 flopenr,sky90,32,4803,0.217601,2179.52003,1080.0,2.520907585 -add,sky90,32,4240,0.268332,1829.660028,1090.0,0.373518144 csa,sky90,32,17568,0.060643,1066.240021,827.644,0.36203871 comparator,sky90,128,4000,0.268954,4027.800041,3660.0,0.679377804 decoder,sky90,8,31928,0.031295,106.82,190.81,0.010796775 @@ -988,7 +992,6 @@ add,tsmc28,32,8620,0.115079,146.538001,644.995,0.045571284000000004 flop,sky90,16,16104,0.070789,533.119995,259.258,0.8651406846 add,tsmc28,64,5043,0.178584,231.210001,1080.0,0.06107572799999999 priorityonehot,sky90,16,15556,0.088601,610.540002,811.656,0.097726903 -add,sky90,32,5600,0.254525,1871.800028,877.446,0.50039615 shiftleft,sky90,128,3871,0.303026,12747.840208,11600.0,3.235408602 flop,sky90,8,12996,0.070789,266.559998,129.629,0.34911011129999997 shiftleft,sky90,64,4435,0.24668,5129.320094,4030.0,1.0940258000000003 @@ -1084,7 +1087,6 @@ floprasync,sky90,128,13437,0.071444,5785.920113,2580.0,5.9146344279999985 shiftleft,sky90,128,3032,0.329767,9579.500162,6250.0,1.8898946769999998 flopr,sky90,32,12578,0.101547,1445.500023,882.979,2.039469948 alu,sky90,128,2217,0.514448,27540.940502,14000.0,7.25886128 -add,sky90,32,3760,0.278449,1689.520028,834.387,0.323279289 csa,sky90,128,16610,0.060643,4264.960083,3260.0,1.3673783640000001 floprasync,sky90,64,14557,0.071444,2892.960056,1290.0,3.203048852 flopenr,sky90,16,4228,0.180729,842.799992,176.142,0.3973688523 @@ -1093,6 +1095,7 @@ priorityonehot,sky90,32,7200,0.143094,1101.520018,1470.0,0.16956639 comparator,sky90,8,8545,0.116724,205.800003,165.947,0.041670467999999995 mult,sky90,128,528,1.893939,255011.682875,66500.0,175.06625146500002 shiftleft,sky90,64,10000,0.23373,6486.620108,6060.0,3.09762369 +add,sky90,32,2857,0.349019,998.620019,202.848,0.164736968 flop,sky90,16,13561,0.070789,533.119995,259.258,0.7285179146000001 priorityonehot,sky90,16,5000,0.196212,130.340003,29.8,0.005788254 mult,sky90,8,5000,0.552339,4261.040075,5050.0,5.394142674 @@ -1102,7 +1105,6 @@ comparator,sky90,16,8000,0.158838,801.640006,1190.0,0.15169029 flopenr,sky90,8,9518,0.148606,636.020015,366.016,0.9204655639999999 alu,sky90,16,3455,0.289435,3445.680058,2290.0,0.80289269 add,tsmc28,8,21130,0.050365,90.846,513.587,0.020700015 -add,sky90,32,4000,0.280842,1730.680031,849.828,0.358635234 priorityonehot,sky90,16,10222,0.097791,313.600004,134.808,0.026892525000000004 flopr,sky90,128,12112,0.177282,5399.800033,2390.0,11.989758942 flopr,sky90,8,12112,0.11919,400.820003,214.285,0.675533163