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() | ||||
|     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