Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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])
Beispiel #4
0
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])
Beispiel #5
0
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