forked from Github_Repos/cvw
		
	plots saved to synthDC/plots instead of shown
This commit is contained in:
		
							parent
							
								
									8506d98bec
								
							
						
					
					
						commit
						887090dbae
					
				@ -198,14 +198,15 @@ def oneMetricPlot(module, var, freq=None, ax=None, fits='clsgn', norm=True, colo
 | 
			
		||||
    if norm:
 | 
			
		||||
        ylabeldic = {"lpower": "Normalized Leakage Power", "denergy": "Normalized Dynamic Energy", "area": "INVx1 Areas", "delay": "FO4 Delays"}
 | 
			
		||||
    else:
 | 
			
		||||
        ylabeldic = {"lpower": "Leakage Power (nW)", "denergy": "Dynamic Energy (nJ-CHECK)", "area": "Area (sq microns)", "delay": "Delay (ns)"}
 | 
			
		||||
        ylabeldic = {"lpower": "Leakage Power (nW)", "denergy": "Dynamic Energy (nJ)", "area": "Area (sq microns)", "delay": "Delay (ns)"}
 | 
			
		||||
 | 
			
		||||
    ax.set_ylabel(ylabeldic[var])
 | 
			
		||||
 | 
			
		||||
    if singlePlot:
 | 
			
		||||
        titleStr = "  (target  " + str(freq)+ "MHz)" if freq != None else " (best achievable delay)"
 | 
			
		||||
        ax.set_title(module + titleStr)
 | 
			
		||||
        plt.show()
 | 
			
		||||
        plt.savefig('./plots/PPA/'+ module + '_' + var + '.png')
 | 
			
		||||
        # plt.show()
 | 
			
		||||
 | 
			
		||||
def regress(widths, var, spec, fits='clsgn'):
 | 
			
		||||
    ''' fits a curve to the given points
 | 
			
		||||
@ -226,9 +227,9 @@ def regress(widths, var, spec, fits='clsgn'):
 | 
			
		||||
    coefs = coefsResid[0]
 | 
			
		||||
    try:
 | 
			
		||||
        resid = coefsResid[1][0]
 | 
			
		||||
        r2 = 1 - resid / (y.size * y.var())
 | 
			
		||||
    except:
 | 
			
		||||
        resid = 0
 | 
			
		||||
    r2 = 1 - resid / (y.size * y.var())
 | 
			
		||||
        r2 = 0
 | 
			
		||||
 | 
			
		||||
    xp = np.linspace(8, 140, 200)
 | 
			
		||||
    pred = []
 | 
			
		||||
@ -338,7 +339,8 @@ def freqPlot(tech, mod, width):
 | 
			
		||||
    ax3.set_ylabel('Area * Delay')
 | 
			
		||||
    ax4.set_ylabel('Area * $Delay^2$')
 | 
			
		||||
    ax1.set_title(mod + '_' + str(width))
 | 
			
		||||
    plt.show()
 | 
			
		||||
    plt.savefig('./plots/freqBuckshot/' + mod + '/' + str(width) + '.png')
 | 
			
		||||
    # plt.show()
 | 
			
		||||
 | 
			
		||||
def squareAreaDelay(tech, mod, width):
 | 
			
		||||
    ''' plots delay, area, area*delay, and area*delay^2 for syntheses with specified tech, module, width
 | 
			
		||||
@ -395,7 +397,8 @@ def squareAreaDelay(tech, mod, width):
 | 
			
		||||
    ax1.plot(xvals, xvals, ls="--", c=".3")
 | 
			
		||||
    ax1.hlines(y=bestAchieved, xmin=xvals[0], xmax=xvals[1], color="black", ls='--')
 | 
			
		||||
 | 
			
		||||
    plt.show()
 | 
			
		||||
    plt.savefig('./plots/squareareadelay_' + mod + '_' + str(width) + '.png')
 | 
			
		||||
    # plt.show()
 | 
			
		||||
 | 
			
		||||
def squarify(fig):
 | 
			
		||||
    ''' helper function for squareAreaDelay()
 | 
			
		||||
@ -438,8 +441,11 @@ def plotPPA(mod, freq=None, norm=True):
 | 
			
		||||
    oneMetricPlot(mod, 'lpower', ax=axs[1,0], fits=modFit[1], freq=freq, norm=norm)
 | 
			
		||||
    oneMetricPlot(mod, 'denergy', ax=axs[1,1], fits=modFit[1], freq=freq, norm=norm)
 | 
			
		||||
    titleStr = "  (target  " + str(freq)+ "MHz)" if freq != None else " (best achievable delay)"
 | 
			
		||||
    n = 'normalized' if norm else 'unnormalized'
 | 
			
		||||
    saveStr = './plots/PPA/'+ n + '/' + mod + '.png'
 | 
			
		||||
    plt.suptitle(mod + titleStr)
 | 
			
		||||
    plt.show()
 | 
			
		||||
    plt.savefig(saveStr)
 | 
			
		||||
    # plt.show()
 | 
			
		||||
 | 
			
		||||
def plotBestAreas():
 | 
			
		||||
    global fitDict
 | 
			
		||||
@ -452,7 +458,8 @@ def plotBestAreas():
 | 
			
		||||
        legend_elements += [lines.Line2D([0], [0], color=colors[i], ls='', marker='o', label=mods[i])]
 | 
			
		||||
    plt.suptitle('Optimized Areas (target freq 10MHz)')
 | 
			
		||||
    plt.legend(handles=legend_elements)
 | 
			
		||||
    plt.show()
 | 
			
		||||
    plt.savefig('./plots/bestareas.png')
 | 
			
		||||
    # plt.show()
 | 
			
		||||
    
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
 | 
			
		||||
@ -469,13 +476,15 @@ if __name__ == '__main__':
 | 
			
		||||
  
 | 
			
		||||
    synthsfromcsv('ppaData.csv') # your csv here!
 | 
			
		||||
 | 
			
		||||
    ### examples
 | 
			
		||||
    # for mod in ['comparator', 'priorityencoder', 'shiftleft']:
 | 
			
		||||
    #     for w in [16, 32]:
 | 
			
		||||
    #         freqPlot('sky90', mod, w) # the weird ones
 | 
			
		||||
    # ### examples
 | 
			
		||||
 | 
			
		||||
    # squareAreaDelay('sky90', 'add', 32)
 | 
			
		||||
    # oneMetricPlot('add', 'delay')
 | 
			
		||||
    # for mod in ['add', 'csa', 'mult', 'comparator', 'priorityencoder', 'shiftleft', 'flop']:
 | 
			
		||||
    #     plotPPA(mod, norm=False) # no norm input now defaults to normalized
 | 
			
		||||
    # plotPPA('add', norm=False)
 | 
			
		||||
    plotBestAreas()
 | 
			
		||||
    
 | 
			
		||||
    mods = ['priorityencoder', 'add', 'csa', 'shiftleft', 'comparator', 'flop', 'mult']
 | 
			
		||||
    for mod in mods:
 | 
			
		||||
        plotPPA(mod, norm=False)
 | 
			
		||||
        plotPPA(mod)
 | 
			
		||||
        for w in [8, 16, 32, 64, 128]:
 | 
			
		||||
            freqPlot('sky90', mod, w)
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user