mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-04-24 05:47:16 -04:00
update wally synth analysis
This commit is contained in:
parent
f458deaf00
commit
aa253748fc
2 changed files with 35 additions and 26 deletions
|
@ -7,6 +7,7 @@ import subprocess
|
|||
from matplotlib.cbook import flatten
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.lines as lines
|
||||
from wallySynth import testFreq
|
||||
|
||||
|
||||
def synthsintocsv():
|
||||
|
@ -26,7 +27,7 @@ def synthsintocsv():
|
|||
writer.writerow(['Width', 'Config', 'Special', 'Tech', 'Target Freq', 'Delay', 'Area'])
|
||||
|
||||
for oneSynth in allSynths:
|
||||
descrip = specReg.findall(oneSynth)
|
||||
descrip = specReg.findall(oneSynth) #[30:]
|
||||
width = descrip[2][:4]
|
||||
config = descrip[2][4:]
|
||||
if descrip[3][-2:] == 'nm':
|
||||
|
@ -46,7 +47,7 @@ def synthsintocsv():
|
|||
nums = [float(m) for m in nums]
|
||||
metrics += nums
|
||||
except:
|
||||
print(config + tech + freq + " doesn't have reports")
|
||||
print(width + config + tech + '_' + freq + " doesn't have reports")
|
||||
if metrics == []:
|
||||
pass
|
||||
else:
|
||||
|
@ -56,7 +57,7 @@ def synthsintocsv():
|
|||
file.close()
|
||||
|
||||
def synthsfromcsv(filename):
|
||||
Synth = namedtuple("Synth", " width config special tech freq delay area")
|
||||
Synth = namedtuple("Synth", "width config special tech freq delay area")
|
||||
with open(filename, newline='') as csvfile:
|
||||
csvreader = csv.reader(csvfile)
|
||||
global allSynths
|
||||
|
@ -110,23 +111,26 @@ def freqPlot(tech, width, config):
|
|||
plt.savefig('./plots/wally/freqSweep_' + tech + '_' + width + config + '.png')
|
||||
# plt.show()
|
||||
|
||||
def areaDelay(width, tech, freq, config=None, special=None):
|
||||
def areaDelay(tech, freq, width=None, config=None, special=None):
|
||||
delays, areas, labels = ([] for i in range(3))
|
||||
|
||||
for oneSynth in allSynths:
|
||||
if (width == oneSynth.width) & (tech == oneSynth.tech) & (freq == oneSynth.freq):
|
||||
if (special != None) & (oneSynth.special == special):
|
||||
delays += [oneSynth.delay]
|
||||
areas += [oneSynth.area]
|
||||
labels += [oneSynth.config]
|
||||
elif (config != None) & (oneSynth.config == config):
|
||||
delays += [oneSynth.delay]
|
||||
areas += [oneSynth.area]
|
||||
labels += [oneSynth.special]
|
||||
else:
|
||||
delays += [oneSynth.delay]
|
||||
areas += [oneSynth.area]
|
||||
labels += [oneSynth.config + '_' + oneSynth.special]
|
||||
if (width==None) or (width == oneSynth.width):
|
||||
if (tech == oneSynth.tech) & (freq == oneSynth.freq):
|
||||
if (special != None) & (oneSynth.special == special):
|
||||
delays += [oneSynth.delay]
|
||||
areas += [oneSynth.area]
|
||||
labels += [oneSynth.width + oneSynth.config]
|
||||
elif (config != None) & (oneSynth.config == config):
|
||||
delays += [oneSynth.delay]
|
||||
areas += [oneSynth.area]
|
||||
labels += [oneSynth.special]
|
||||
# else:
|
||||
# delays += [oneSynth.delay]
|
||||
# areas += [oneSynth.area]
|
||||
# labels += [oneSynth.config + '_' + oneSynth.special]
|
||||
if width == None:
|
||||
width = ''
|
||||
|
||||
f, (ax1) = plt.subplots(1, 1)
|
||||
plt.scatter(delays, areas)
|
||||
|
@ -154,8 +158,11 @@ def areaDelay(width, tech, freq, config=None, special=None):
|
|||
# ending freq in 42 means fpu was turned off manually
|
||||
|
||||
if __name__ == '__main__':
|
||||
synthsintocsv()
|
||||
# synthsintocsv()
|
||||
synthsfromcsv('Summary.csv')
|
||||
freqPlot('tsmc28', 'rv64', 'gc')
|
||||
areaDelay('rv32', 'tsmc28', 4200, config='gc')
|
||||
areaDelay('rv32', 'tsmc28', 3042, special='')
|
||||
freqPlot('tsmc28', 'rv32', 'e')
|
||||
freqPlot('sky90', 'rv32', 'e')
|
||||
areaDelay('tsmc28', testFreq[1], width= 'rv64', config='gc')
|
||||
areaDelay('tsmc28', testFreq[1], special='')
|
||||
areaDelay('sky90', testFreq[0], width='rv64', config='gc')
|
||||
areaDelay('sky90', testFreq[0], special='')
|
|
@ -8,20 +8,22 @@ def runCommand(config, tech, freq):
|
|||
command = "make synth DESIGN=wallypipelinedcore CONFIG={} TECH={} DRIVE=FLOP FREQ={} MAXOPT=0 MAXCORES=1".format(config, tech, freq)
|
||||
subprocess.Popen(command, shell=True)
|
||||
|
||||
testFreq = [3000, 10000]
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
techs = ['sky90', 'tsmc28']
|
||||
bestAchieved = [750, 3000]
|
||||
sweepCenter = [870, 3000]
|
||||
synthsToRun = []
|
||||
|
||||
|
||||
arr = [-8, -6, -4, -2, 0, 2, 4, 6, 8]
|
||||
for i in [0, 1]:
|
||||
tech = techs[i]
|
||||
f = bestAchieved[i]
|
||||
for freq in [round(f+f*x/100) for x in arr]: # rv32e freq sweep
|
||||
sc = sweepCenter[i]
|
||||
f = testFreq[i]
|
||||
for freq in [round(sc+sc*x/100) for x in arr]: # rv32e freq sweep
|
||||
synthsToRun += [['rv32e', tech, freq]]
|
||||
for config in ['rv32gc', 'rv32ic', 'rv64gc', 'rv64i', 'rv64ic']: # configs
|
||||
for config in ['rv32gc', 'rv32ic', 'rv64gc', 'rv64i', 'rv64ic', 'rv32e']: # configs
|
||||
synthsToRun += [[config, tech, f]]
|
||||
for mod in ['FPUoff', 'noMulDiv', 'noPriv', 'PMP0', 'PMP16']: # rv64gc path variations
|
||||
config = 'rv64gc_' + mod
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue