Ejemplo n.º 1
0
 def trim(self, trim_bits):
     self.dut.trim = trim_bits
     for roc in self.dut.rocs():
         trimming = list()
         for pixel in roc.pixels():
             p = PyPxarCore.PixelConfig(pixel.col, pixel.row,
                                        max(0, pixel.trim))
             trimming.append(p)
         self.updateTrimBits(trimming, roc.number)
Ejemplo n.º 2
0
 def init_roc(self, roc):
     self.logger.info('Initializing ROC: %s' % roc.number)
     pixels = list()
     for pixel in roc.pixels():
         p = PyPxarCore.PixelConfig(pixel.col, pixel.row,
                                    max(0, pixel.trim))
         pixels.append(p)
     self.roc_pixels.append(pixels)
     dacs = {}
     for dac in roc.dacs():
         dacs[dac.name] = dac.value
     self.roc_dacs.append(dacs)
Ejemplo n.º 3
0
def PxarStartup(directory, verbosity):
    if not directory or not os.path.isdir(directory):
        print "Error: no or invalid configuration directory specified!"
        sys.exit(404)
    
    config = PxarConfigFile('%sconfigParameters.dat'%(os.path.join(directory,"")))
    tbparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbParameters")))

    # Power settings:
    power_settings = {
        "va":config.get("va",1.9),
        "vd":config.get("vd",2.6),
        "ia":config.get("ia",1.190),
        "id":config.get("id",1.10)}

    # Pattern Generator for single ROC operation:
    if int(config.get("nTbms")) == 0:
        pg_setup = (
            ("PG_RESR",25),
            ("PG_CAL",106),
            ("PG_TRG",16),
            ("PG_TOK",0))
    else:
        pg_setup = (
            ("PG_REST",15),
            ("PG_CAL",106),
            ("PG_TRG",0))

    # Start an API instance from the core pxar library
    api = PyPxarCore(usbId=config.get("testboardName"),logLevel=verbosity)
    print api.getVersion()
    if not api.initTestboard(pg_setup = pg_setup, 
                             power_settings = power_settings,
                             sig_delays = tbparameters.getAll()):
        print "WARNING: could not init DTB -- possible firmware mismatch."
        print "Please check if a new FW version is available"
        exit

    
    tbmDACs = []
    for tbm in range(int(config.get("nTbms"))):
        for n in range(2):
            tbmparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbmParameters") + "_C" + str(tbm) + ("a" if n%2 == 0 else "b") + ".dat"))
            tbmDACs.append(tbmparameters.getAll())

    print "Have DAC config for " + str(len(tbmDACs)) + " TBM cores:"
    for idx, tbmDAC in enumerate(tbmDACs):
        for key in tbmDAC:
            print "  TBM " + str(idx/2) + ("a" if idx%2 == 0 else "b") + " dac: " + str(key) + " = " + str(tbmDAC[key])

    # init pixel list
    pixels = list()
    for column in range(0, 52):
        for row in range(0, 80):
            p = PixelConfig(column,row,15)
            p.mask = False
            pixels.append(p)

    rocDacs = []
    rocPixels = list()
    for roc in xrange(int(config.get("nrocs"))):
        dacconfig = PxarParametersFile('%s%s_C%i.dat'%(os.path.join(directory,""),config.get("dacParameters"),roc))
        rocDacs.append(dacconfig.getAll())
        rocPixels.append(pixels)

    print "And we have just initialized " + str(len(pixels)) + " pixel configs to be used for every ROC!"

    api.initDUT(int(config.get("hubId",31)),config.get("tbmType","tbm08"),tbmDACs,config.get("rocType"),rocDacs,rocPixels)

    api.testAllPixels(True)
    print "Now enabled all pixels"

    print "pxar API is now started and configured."
    return api
Ejemplo n.º 4
0
def PxarStartup(directory, verbosity):
    if not directory or not os.path.isdir(directory):
        print "Error: no or invalid configuration directory specified!"
        sys.exit(404)

    config = PxarConfigFile('%sconfigParameters.dat'%(os.path.join(directory,"")))
    tbparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbParameters")))
    masks = PxarMaskFile('%s%s'%(os.path.join(directory,""),config.get("maskFile")))
    
    # Power settings:
    power_settings = {
        "va":config.get("va",1.9),
        "vd":config.get("vd",2.6),
        "ia":config.get("ia",1.190),
        "id":config.get("id",1.10)}

    tbmDACs = []
    for tbm in range(int(config.get("nTbms"))):
        for n in range(2):
            tbmparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbmParameters") + "_C" + str(tbm) + ("a" if n%2 == 0 else "b") + ".dat"))
            tbmDACs.append(tbmparameters.getAll())

    print "Have DAC config for " + str(len(tbmDACs)) + " TBM cores:"
    for idx, tbmDAC in enumerate(tbmDACs):
        for key in tbmDAC:
            print "  TBM " + str(idx/2) + ("a" if idx%2 == 0 else "b") + " dac: " + str(key) + " = " + str(tbmDAC[key])

    # init pixel list
    pixels = list()
    for column in range(0, 52):
        for row in range(0, 80):
            p = PixelConfig(column,row,15)
            p.mask = False
            pixels.append(p)

    rocDacs = []
    rocPixels = list()
    rocI2C = []
    config_nrocs = config.get("nrocs").split()
    nrocs = int(config_nrocs[0])
    i2cs = [i for i in range(nrocs)]
    if len(config_nrocs) > 1:
        if config_nrocs[1].startswith('i2c'):
            i2cs = ' '.join(config_nrocs[2:])
            i2cs = [int(i) for i in i2cs.split(',')]
            print "Number of ROCs:", nrocs, "\b; Configured I2C's:", i2cs
    for roc in xrange(nrocs):
        if len(i2cs)> roc:
            i2c = i2cs[roc]
        else:
            i2c = roc
        dacconfig = PxarParametersFile('%s%s_C%i.dat'%(os.path.join(directory,""),config.get("dacParameters"),i2c))
        trimconfig = PxarTrimFile('%s%s_C%i.dat'%(os.path.join(directory,""),config.get("trimParameters"),i2c),i2c,masks.get())
        print "We have " + str(len(trimconfig.getAll())) + " pixels for ROC " + str(i2c)
        rocI2C.append(i2c)
        rocDacs.append(dacconfig.getAll())
        rocPixels.append(trimconfig.getAll())

    # set pgcal according to wbc
    pgcal = int(rocDacs[0]['wbc']) + 6

    # Pattern Generator for single ROC operation:
    if int(config.get("nTbms")) == 0:
        pg_setup = (
            ("PG_RESR",25),
            ("PG_CAL",pgcal),
            ("PG_TRG",16),
            ("PG_TOK",0))
    else:
        pg_setup = (
            ("PG_RESR",15),
            ("PG_CAL",pgcal),
            ("PG_TRG",0))

       # Start an API instance from the core pxar library
    api = PyPxarCore(usbId=config.get("testboardName"),logLevel=verbosity)
    print api.getVersion()
    if not api.initTestboard(pg_setup = pg_setup,
    power_settings = power_settings,
    sig_delays = tbparameters.getAll()):
        print "WARNING: could not init DTB -- possible firmware mismatch."
        print "Please check if a new FW version is available"
        exit

    api.initDUT(int(config.get("hubId",31)),config.get("tbmType","tbm08"),tbmDACs,config.get("rocType"),rocDacs,rocPixels, rocI2C)

    api.testAllPixels(True)
    print "Now enabled all pixels"

    print "pxar API is now started and configured."
    return api
Ejemplo n.º 5
0
def PxarStartup(directory, verbosity):
    if not directory or not os.path.isdir(directory):
        print "Error: no or invalid configuration directory specified!"
        sys.exit(404)

    config = PxarConfigFile('%sconfigParameters.dat' %
                            (os.path.join(directory, "")))
    tbparameters = PxarParametersFile(
        '%s%s' % (os.path.join(directory, ""), config.get("tbParameters")))
    masks = PxarMaskFile('%s%s' %
                         (os.path.join(directory, ""), config.get("maskFile")))

    # Power settings:
    power_settings = {
        "va": config.get("va", 1.9),
        "vd": config.get("vd", 2.6),
        "ia": config.get("ia", 1.190),
        "id": config.get("id", 1.10)
    }

    tbmDACs = []
    for tbm in range(int(config.get("nTbms"))):
        for n in range(2):
            tbmparameters = PxarParametersFile(
                '%s%s' % (os.path.join(directory, ""),
                          config.get("tbmParameters") + "_C" + str(tbm) +
                          ("a" if n % 2 == 0 else "b") + ".dat"))
            tbmDACs.append(tbmparameters.getAll())

    print "Have DAC config for " + str(len(tbmDACs)) + " TBM cores:"
    for idx, tbmDAC in enumerate(tbmDACs):
        for key in tbmDAC:
            print "  TBM " + str(
                idx / 2) + ("a" if idx % 2 == 0 else "b"
                            ) + " dac: " + str(key) + " = " + str(tbmDAC[key])

    # init pixel list
    pixels = list()
    for column in range(0, 52):
        for row in range(0, 80):
            p = PixelConfig(column, row, 15)
            p.mask = False
            pixels.append(p)

    rocDacs = []
    rocPixels = list()
    rocI2C = []
    config_nrocs = config.get("nrocs").split()
    nrocs = int(config_nrocs[0])
    i2cs = [i for i in range(nrocs)]
    if len(config_nrocs) > 1:
        if config_nrocs[1].startswith('i2c'):
            i2cs = ' '.join(config_nrocs[2:])
            i2cs = [int(i) for i in i2cs.split(',')]
            print "Number of ROCs:", nrocs, "\b; Configured I2C's:", i2cs
    for roc in xrange(nrocs):
        if len(i2cs) > roc:
            i2c = i2cs[roc]
        else:
            i2c = roc
        dacconfig = PxarParametersFile(
            '%s%s_C%i.dat' %
            (os.path.join(directory, ""), config.get("dacParameters"), i2c))
        trimconfig = PxarTrimFile(
            '%s%s_C%i.dat' %
            (os.path.join(directory, ""), config.get("trimParameters"), i2c),
            i2c, masks.get())
        print "We have " + str(len(
            trimconfig.getAll())) + " pixels for ROC " + str(i2c)
        rocI2C.append(i2c)
        rocDacs.append(dacconfig.getAll())
        rocPixels.append(trimconfig.getAll())

    # set pgcal according to wbc
    pgcal = int(rocDacs[0]['wbc']) + 6

    # Pattern Generator for single ROC operation:
    if int(config.get("nTbms")) == 0:
        pg_setup = (("PG_RESR", 25), ("PG_CAL", pgcal), ("PG_TRG", 16),
                    ("PG_TOK", 0))
    else:
        pg_setup = (("PG_RESR", 15), ("PG_CAL", pgcal), ("PG_TRG", 0))

    # Start an API instance from the core pxar library
    api = PyPxarCore(usbId=config.get("testboardName"), logLevel=verbosity)
    print api.getVersion()
    if not api.initTestboard(pg_setup=pg_setup,
                             power_settings=power_settings,
                             sig_delays=tbparameters.getAll()):
        print "WARNING: could not init DTB -- possible firmware mismatch."
        print "Please check if a new FW version is available"
        exit

    api.initDUT(int(config.get("hubId", 31)), config.get("tbmType", "tbm08"),
                tbmDACs, config.get("rocType"), rocDacs, rocPixels, rocI2C)

    api.testAllPixels(True)
    print "Now enabled all pixels"

    print "pxar API is now started and configured."
    return api
Ejemplo n.º 6
0
def PxarStartup(directory, verbosity):
    if not directory or not os.path.isdir(directory):
        print "Error: no or invalid configuration directory specified!"
        sys.exit(404)
    
    config = PxarConfigFile('%sconfigParameters.dat'%(os.path.join(directory,"")))
    tbparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbParameters")))

    # Power settings:
    power_settings = {
        "va":config.get("va",1.9),
        "vd":config.get("vd",2.6),
        "ia":config.get("ia",1.190),
        "id":config.get("id",1.10)}

    # Pattern Generator for single ROC operation:
    if int(config.get("nTbms")) == 0:
        pg_setup = (
            ("PG_RESR",25),
            ("PG_CAL",106),
            ("PG_TRG",16),
            ("PG_TOK",0))
    else:
        pg_setup = (
            ("PG_REST",15),
            ("PG_CAL",106),
            ("PG_TRG",0))

    # Start an API instance from the core pxar library
    api = PyPxarCore(usbId=config.get("testboardName"),logLevel=verbosity)
    print api.getVersion()
    if not api.initTestboard(pg_setup = pg_setup, 
                             power_settings = power_settings,
                             sig_delays = tbparameters.getAll()):
        print "WARNING: could not init DTB -- possible firmware mismatch."
        print "Please check if a new FW version is available"
        exit

    
    tbmDACs = []
    for tbm in range(int(config.get("nTbms"))):
        for n in range(2):
            tbmparameters = PxarParametersFile('%s%s'%(os.path.join(directory,""),config.get("tbmParameters") + "_C" + str(tbm) + ("a" if n%2 == 0 else "b") + ".dat"))
            tbmDACs.append(tbmparameters.getAll())

    print "Have DAC config for " + str(len(tbmDACs)) + " TBM cores:"
    for idx, tbmDAC in enumerate(tbmDACs):
        for key in tbmDAC:
            print "  TBM " + str(idx/2) + ("a" if idx%2 == 0 else "b") + " dac: " + str(key) + " = " + str(tbmDAC[key])

    # init pixel list
    pixels = list()
    for column in range(0, 52):
        for row in range(0, 80):
            p = PixelConfig(column,row,15)
            p.mask = False
            pixels.append(p)

    rocDacs = []
    rocPixels = list()
    for roc in xrange(int(config.get("nrocs"))):
        dacconfig = PxarParametersFile('%s%s_C%i.dat'%(os.path.join(directory,""),config.get("dacParameters"),roc))
        rocDacs.append(dacconfig.getAll())
        rocPixels.append(pixels)

    print "And we have just initialized " + str(len(pixels)) + " pixel configs to be used for every ROC!"

    api.initDUT(0,config.get("tbmType","tbm08"),tbmDACs,config.get("rocType"),rocDacs,rocPixels)

    api.testAllPixels(True)
    print "Now enabled all pixels"

    print "pxar API is now started and configured."
    return api