def measure_PCMRS(folder, folder_link, chip, RSs, warm): if warm: Resistance_measurements, funkygraphlist = mdr.get_Resistance( folder, chip, RSs) return funkygraphlist else: Resistance_measurements, _ = mdr.get_Resistance(folder, chip, RSs, OptionalCurrent=1e-03) for i in range(0, len(RSs)): Resistance_measurements[i] = float(Resistance_measurements[i]) d.save_Resistance_Measurements_PCMRS(chip, Resistance_measurements[i], folder_link, RSs[i]) return False
def check_connections(chip, devices): ''' Simply check that there are no opens. Takes a current sweep from 0 to 3mA saves images and raw numbers. :param chip: Target chip :param devices: Array of target devices ''' current_time = time.strftime("_%Y-%m-%d_%H-%M-%S_connections") folder = dirname + str(chip) + current_time R, oddgraphs = mdr.get_Resistance(folder, chip, devices) print(R) # save to the database here return oddgraphs
def measure_PCM3b_Crossbars(folder, folder_link, chip, Crossbars, warm): ''' Just going 0 to 3Ma and getting resistance ''' Resistance_measurements, _ = mdr.get_Resistance(folder, chip, Crossbars) if warm: for i in range(0, len(Crossbars)): d.save_Crossbar_Measurements_PCM3B_warm( chip, [Resistance_measurements[i]], folder_link, Crossbars[i]) else: for i in range(0, len(Crossbars)): d.save_Crossbar_Measurements_PCM3B_cold( chip, [Resistance_measurements[i]], folder_link, Crossbars[i])
def measure_PCM3b_RS(folder, folder_link, chip, RSs, warm): if warm: Resistance_measurements, _ = mdr.get_Resistance(folder, chip, RSs) ''' Saves to Database, one per device ''' for i in range(0, len(RSs)): d.save_Resistance_Measurements_PCM3B_warm( chip, [float(Resistance_measurements[i])], folder_link, RSs[i]) else: Resistance_measurements = mra.get_resistance_arrays(folder, chip, RSs) # Resistance_measurements=rc.discretepoints(folder,chip,RSs,points) for i in range(0, len(RSs)): d.save_Resistance_Measurements_PCM3B_cold( chip, Resistance_measurements[i], folder_link, RSs[i])
def measure_PCM_chip_warm(chip, devices): ''' This is the main function to call when PCM chip hasn't been dunked. Will measure the continuity of all the Junctions, then the resistances of the resistor arrays and vias, and save the resistances to the database. :param chip: Target chip :param devices: Array of target devices :return: funkygraph2-array of abnormal graphs :Graphs: Continuity Graphs, IV from 0 mA to 300 mA Called By: -Measurement_GUI_v3-warmmeasure Calls On: -Get_Resistance -get_resistance_arrays -get_resistance_Via -save_Resistance_Measurements_warm -save_Via_Measurements_warm ''' current_time = time.strftime("_%Y-%m-%d_%H-%M-%S_warm") folder = dirname + str(chip) + current_time folder_link = web_link + str(chip) + current_time Jc = d.chip_Jc(chip) print("Weblink: %s" % folder_link) # sort the devices into Junctions, Resistors, and Vias JJs = [] RAs = [] Vias = [] for i in range(0, len(devices)): if devices[i].device_type == 'ResistorArray': RAs.append(devices[i]) elif devices[i].device_type == 'Via': Vias.append(devices[i]) else: JJs.append(devices[i]) device_resistance, funkygraphs = mdr.get_Resistance(folder, chip, JJs) # take the sweep to find the resistance of the Resistor Arrays Resistance_measurements = mra.get_resistance_arrays(folder, chip, RAs) #Resistance_measurements = mra.get_resistance_arrays(folder, chip, RAs) # save the resistance measurements for i in range(0, len(Resistance_measurements)): d.save_Resistance_Measurements_warm(chip, Resistance_measurements[i], folder_link, RAs[i]) # take the sweep for the vias Via_measurements = mvr.get_Resistance_Via(folder, chip, Vias) # save the via measurements for i in range(0, len(Via_measurements)): d.save_Via_Measurements_warm(chip, Via_measurements[i], folder_link, Vias[i]) print("Weblink: %s" % folder_link) return funkygraphs