# Agilent B1500 Semiconductor Parameter Analyzer

## General Information

This instrument driver does not support all configuration options of the B1500 mainframe yet. So far, it is possible to interface multiple SMU modules and source/measure currents and voltages, perform sampling and staircase sweep measurements. The implementation of further measurement functionalities is highly encouraged. Meanwhile the model is managed by Keysight, see the corresponding “Programming Guide” for details on the control methods and their parameters

### Command Translation

Alphabetical list of implemented B1500 commands and their corresponding method/attribute names in this instrument driver.

Command | Property/Method
--- | ---
`AAD` | `SMU.adc_type()`
`AB` | `abort()`
`AIT` | `adc_setup()`
`AV` | `adc_averaging()`
`AZ` | `adc_auto_zero`
`BC` | `clear_buffer()`
`CL` | `SMU.disable()`
`CM` | `auto_calibration`
`CMM` | `SMU.meas_op_mode()`
`CN` | `SMU.enable()`
`DI` | `SMU.force()` mode: `'CURRENT'`
`DV` | `SMU.force()` mode: `'VOLTAGE'`
`DZ` | `force_gnd()`, `SMU.force_gnd()`
`ERRX?` | `check_errors()`
`FL` | `SMU.filter`
`FMT` | `data_format()`
`*IDN?` | `id()`
`*LRN?` | `query_learn()`, multiple methods to read/format settings directly
`MI` | `SMU.sampling_source()` mode: `'CURRENT'`
`ML` | `sampling_mode`
`MM` | `meas_mode()`
`MSC` | `sampling_auto_abort()`
`MT` | `sampling_timing()`
`MV` | `SMU.sampling_source()` mode: `'VOLTAGE'`
`*OPC?` | `check_idle()`
`PA` | `pause()`
`PAD` | `parallel_meas`
`RI` | `meas_range_current`
`RM` | `SMU.meas_range_current_auto()`
`*RST` | `reset()`
`RV` | `meas_range_voltage`
`SSR` | `series_resistor`
`TSC` | `time_stamp`
`TSR` | `clear_timer()`
`UNT?` | `query_modules()`
`WAT` | `wait_time()`
`WI` | `SMU.staircase_sweep_source()` mode: `'CURRENT'`
`WM` | `sweep_auto_abort()`
`WSI` | `SMU.synchronous_sweep_source()` mode: `'CURRENT'`
`WSV` | `SMU.synchronous_sweep_source()` mode: `'VOLTAGE'`
`WT` | `sweep_timing()`
`WV` | `SMU.staircase_sweep_source()` mode: `'VOLTAGE'`
`XE` | `send_trigger()`

## Examples

### Initialization of the Instrument

    from pymeasure.instruments.agilent import AgilentB1500

    # explicitly define r/w terminations; set sufficiently large timeout in milliseconds or None.
    b1500=AgilentB1500("GPIB0::17::INSTR", read_termination='\r\n', write_termination='\r\n', timeout=600000)
    # query SMU config from instrument and initialize all SMU instances
    b1500.initialize_all_smus()
    # set data output format (required!)
    b1500.data_format(21, mode=1) #call after SMUs are initialized to get names for the channels

### IV measurement with 4 SMUs

    # choose measurement mode
    b1500.meas_mode('STAIRCASE_SWEEP', *b1500.smu_references) #order in smu_references determines order of measurement

    # settings for individual SMUs
    for smu in b1500.smu_references:
        smu.enable() #enable SMU
        smu.adc_type = 'HRADC' #set ADC to high-resoultion ADC
        smu.meas_range_current = '1 nA'
        smu.meas_op_mode = 'COMPLIANCE_SIDE' # other choices: Current, Voltage, FORCE_SIDE, COMPLIANCE_AND_FORCE_SIDE

    # General Instrument Settings
    # b1500.adc_averaging = 1
    # b1500.adc_auto_zero = True
    b1500.adc_setup('HRADC','AUTO',6)
    #b1500.adc_setup('HRADC','PLC',1)

    #Sweep Settings
    b1500.sweep_timing(0,5,step_delay=0.1) #hold,delay
    b1500.sweep_auto_abort(False,post='STOP') #disable auto abort, set post measurement output condition to stop value of sweep
    # Sweep Source
    nop = 11
    b1500.smu1.staircase_sweep_source('VOLTAGE','LINEAR_DOUBLE','Auto Ranging',0,1,nop,0.001) #type, mode, range, start, stop, steps, compliance
    # Synchronous Sweep Source
    b1500.smu2.synchronous_sweep_source('VOLTAGE','Auto Ranging',0,1,0.001) #type, range, start, stop, comp
    # Constant Output (could also be done using synchronous sweep source with start=stop, but then the output is not ramped up)
    b1500.smu3.ramp_source('VOLTAGE','Auto Ranging',-1,stepsize=0.1,pause=20e-3) #output starts immediately! (compared to sweeps)
    b1500.smu4.ramp_source('VOLTAGE','Auto Ranging',0,stepsize=0.1,pause=20e-3)

    #Start Measurement
    b1500.check_errors()
    b1500.clear_buffer()
    b1500.clear_timer()
    b1500.send_trigger()

    # read measurement data all at once
    b1500.check_idle() #wait until measurement is finished
    data = b1500.read_data(2*nop) #Factor 2 because of double sweep

    #alternatively: read measurement data live
    meas = []
    for i in range(nop*2):
        read_data = b1500.read_channels(4+1) # 4 measurement channels, 1 sweep source (returned due to mode=1 of data_format)
        # process live data for plotting etc.
        # data format for every channel (status code, channel name e.g. 'SMU1', data name e.g 'Current Measurement (A)', value)
        meas.append(read_data)

    #sweep constant sources back to 0V
    b1500.smu3.ramp_source('VOLTAGE','Auto Ranging',0,stepsize=0.1,pause=20e-3)
    b1500.smu4.ramp_source('VOLTAGE','Auto Ranging',0,stepsize=0.1,pause=20e-3)

### Sampling measurement with 4 SMUs

    # choose measurement mode
    b1500.meas_mode('SAMPLING', *b1500.smu_references) #order in smu_references determines order of measurement
    number_of_channels = len(b1500.smu_references)

    # settings for individual SMUs
    for smu in b1500.smu_references:
        smu.enable() #enable SMU
        smu.adc_type = 'HSADC' #set ADC to high-speed ADC
        smu.meas_range_current = '1 nA'
        smu.meas_op_mode = 'COMPLIANCE_SIDE' # other choices: Current, Voltage, FORCE_SIDE, COMPLIANCE_AND_FORCE_SIDE

    b1500.sampling_mode = 'LINEAR'
    # b1500.adc_averaging = 1
    # b1500.adc_auto_zero = True
    b1500.adc_setup('HSADC','AUTO',1)
    #b1500.adc_setup('HSADC','PLC',1)
    nop=11
    b1500.sampling_timing(2,0.005,nop) #MT: bias hold time, sampling interval, number of points
    b1500.sampling_auto_abort(False,post='BIAS') #MSC: BASE/BIAS
    b1500.time_stamp = True

    # Sources
    b1500.smu1.sampling_source('VOLTAGE','Auto Ranging',0,1,0.001) #MV/MI: type, range, base, bias, compliance
    b1500.smu2.sampling_source('VOLTAGE','Auto Ranging',0,1,0.001)
    b1500.smu3.ramp_source('VOLTAGE','Auto Ranging',-1,stepsize=0.1,pause=20e-3) #output starts immediately! (compared to sweeps)
    b1500.smu4.ramp_source('VOLTAGE','Auto Ranging',-1,stepsize=0.1,pause=20e-3)

    #Start Measurement
    b1500.check_errors()
    b1500.clear_buffer()
    b1500.clear_timer()
    b1500.send_trigger()

    meas=[]
    for i in range(nop):
        read_data = b1500.read_channels(1+2*number_of_channels) #Sampling Index + (time stamp + measurement value) * number of channels
        # process live data for plotting etc.
        # data format for every channel (status code, channel name e.g. 'SMU1', data name e.g 'Current Measurement (A)', value)
        meas.append(read_data)

    #sweep constant sources back to 0V
    b1500.smu3.ramp_source('VOLTAGE','Auto Ranging',0,stepsize=0.1,pause=20e-3)
    b1500.smu4.ramp_source('VOLTAGE','Auto Ranging',0,stepsize=0.1,pause=20e-3)

## Main Classes

Classes to communicate with the instrument:

- `AgilentB1500`: Main instrument class

- `SMU`: Instantiated by main instrument class for every SMU

All query commands return a human readable dict of settings. These are intended for debugging/logging/file headers, not for passing to the accompanying setting commands.

class pymeasure.instruments.agilent.agilentB1500.AgilentB1500(adapter, name='Agilent B1500 Semiconductor Parameter Analyzer', **kwargs)

  Bases: `SCPIUnknownMixin`, `Instrument`

  Represents the Agilent B1500 Semiconductor Parameter Analyzer and provides a high-level interface for taking different kinds of measurements.

  property smu_references

    Returns all SMU instances.

  property smu_names

    Returns all SMU names.

  query_learn(query_type)

    Queries settings from the instrument (`*LRN?`). Returns dict of settings.

    Parameters:

      query_type (int or str) – Query type (number according to manual)

  query_learn_header(query_type, **kwargs)

    Queries settings from the instrument (`*LRN?`). Returns dict of settings in human readable format for debugging or file headers. For optional arguments check the underlying definition of `QueryLearn.query_learn_header()`.

    Parameters:

      query_type (int or str) – Query type (number according to manual)

  reset()

    Resets the instrument to default settings (`*RST`)

  query_modules()

    Queries module models from the instrument. Returns dictionary of channel and module type.

    Returns:

      Channel:Module Type

    Return type:

      dict

  initialize_smu(channel, smu_type, name)

    Initializes SMU instance by calling `SMU`.

    Parameters:

      - channel (int) – SMU channel

      - smu_type (str) – SMU type, e.g. `'HRSMU'`

      - name (str) – SMU name for pymeasure (data output etc.)

    Returns:

      SMU instance

    Return type:

      `SMU`

  initialize_all_smus()

    Initialize all SMUs by querying available modules and creating a SMU class instance for each. SMUs are accessible via attributes `.smu1` etc.

  pause(pause_seconds)

    Pauses Command Execution for given time in seconds (`PA`)

    Parameters:

      pause_seconds (int) – Seconds to pause

  abort()

    Aborts the present operation but channels may still output current/voltage (`AB`)

  force_gnd()

    Force 0V on all channels immediately. Current Settings can be restored with RZ. (`DZ`)

  check_errors()

    Check for errors (`ERRX?`)

  check_idle()

    Check if instrument is idle (`*OPC?`)

  clear_buffer()

    Clear output data buffer (`BC`)

  clear_timer()

    Clear timer count (`TSR`)

  send_trigger()

    Send trigger to start measurement (except High Speed Spot) (`XE`)

  property auto_calibration

    Enable/Disable SMU auto-calibration every 30 minutes. (`CM`)

    Type:

      bool

  data_format(output_format, mode=0)

    Specifies data output format. Check Documentation for parameters. Should be called once per session to set the data format for interpreting the measurement values read from the instrument. (`FMT`)

    Currently implemented are format 1, 11, and 21.

    Parameters:

      - output_format (str) – Output format string, e.g. `FMT21`

      - mode (int, optional) – Data output mode, defaults to 0 (only measurement data is returned)

  property parallel_meas
    Enable/Disable parallel measurements.

      Effective for SMUs using HSADC and measurement modes 1,2,10,18. (`PAD`)

    Type:

      bool

  query_meas_settings()

    Read settings for `TM`, `AV`, `CM`, `FMT` and `MM` commands (31) from the instrument.

  query_meas_mode()

    Read settings for `MM` command (part of 31) from the instrument.

  meas_mode(mode, *args)

    Set Measurement mode of channels. Measurements will be taken in the same order as the SMU references are passed. (`MM`)

    Parameters:

      - mode (`MeasMode`) –

        Measurement mode

        - Spot

        - Staircase Sweep

        - Sampling

      - args (`SMU`) – SMU references

  query_adc_setup()

    Read ADC settings (55, 56) from the instrument.

  adc_setup(adc_type, mode, N='')

    Set up operation mode and parameters of ADC for each ADC type. (`AIT`) Defaults:

    > - HSADC: Auto N=1, Manual N=1, PLC N=1, Time N=0.000002(s)

    > - HRADC: Auto N=6, Manual N=3, PLC N=1

    Parameters:

      - adc_type (`ADCType`) – ADC type

      - mode (`ADCMode`) – ADC mode

      - N (str, optional) – additional parameter, check documentation, defaults to `''`

  adc_averaging(number, mode='Auto')

    Set number of averaging samples of the HSADC. (`AV`)

    Defaults: N=1, Auto

    Parameters:

      - number (int) – Number of averages

      - mode (`AutoManual`, optional) – Mode (`'Auto','Manual'`), defaults to ‘Auto’

  property adc_auto_zero

    Enable/Disable ADC zero function. Halves the integration time, if off. (`AZ`)

    Type:

      bool

  property time_stamp

    Enable/Disable Time Stamp function. (`TSC`)

    Type:

      bool

  query_time_stamp_setting()

    Read time stamp settings (60) from the instrument.

  wait_time(wait_type, N, offset=0)

    Configure wait time. (`WAT`)

    Parameters:

      - wait_type (`WaitTimeType`) – Wait time type

      - N (float) – Coefficient for initial wait time, default: 1

      - offset (int, optional) – Offset for wait time, defaults to 0

  query_staircase_sweep_settings()

    Reads Staircase Sweep Measurement settings (33) from the instrument.

  sweep_timing(hold, delay, step_delay=0, step_trigger_delay=0, measurement_trigger_delay=0)

    Sets Hold Time, Delay Time and Step Delay Time for staircase or multi channel sweep measurement. (`WT`) If not set, all parameters are 0.

    Parameters:

      - hold (float) – Hold time

      - delay (float) – Delay time

      - step_delay (float, optional) – Step delay time, defaults to 0

      - step_trigger_delay (float, optional) – Trigger delay time, defaults to 0

      - measurement_trigger_delay (float, optional) – Measurement trigger delay time, defaults to 0

  sweep_auto_abort(abort, post='START')

    Enables/Disables the automatic abort function. Also sets the post measurement condition. (`WM`)

    Parameters:

      - abort (bool) – Enable/Disable automatic abort

      - post (`StaircaseSweepPostOutput`, optional) – Output after measurement, defaults to ‘Start’

  query_sampling_settings()

    Reads Sampling Measurement settings (47) from the instrument.

  property sampling_mode

    Set linear or logarithmic sampling mode. (`ML`)

    Type:

      `SamplingMode`

  sampling_timing(hold_bias, interval, number, hold_base=0)

    Sets Timing Parameters for the Sampling Measurement (`MT`)

    Parameters:

      - hold_bias (float) – Bias hold time

      - interval (float) – Sampling interval

      - number (int) – Number of Samples

      - hold_base (float, optional) – Base hold time, defaults to 0

  sampling_auto_abort(abort, post='Bias')

    Enables/Disables the automatic abort function. Also sets the post measurement condition. (`MSC`)

    Parameters:

      - abort (bool) – Enable/Disable automatic abort

      - post (`SamplingPostOutput`, optional) – Output after measurement, defaults to ‘Bias’

  read_data(number_of_points)

    Reads all data from buffer and returns Pandas DataFrame. Specify number of measurement points for correct splitting of the data list.

    Parameters:

      number_of_points (int) – Number of measurement points

    Returns:

      Measurement Data

    Return type:

      pd.DataFrame

  read_channels(nchannels)

    Reads data for 1 measurement point from the buffer. Specify number of measurement channels + sweep sources (depending on data output setting).

    Parameters:

      nchannels (int) – Number of channels which return data

    Returns:

      Measurement data

    Return type:

      tuple

  query_series_resistor()

    Read series resistor status (53) for all SMUs.

  query_meas_range_current_auto()

    Read auto ranging mode status (54) for all SMUs.

  query_meas_op_mode()

    Read SMU measurement operation mode (46) for all SMUs.

  query_meas_ranges()

    Read measruement ranging status (32) for all SMUs.

class pymeasure.instruments.agilent.agilentB1500.SMU(parent, channel, smu_type, name, **kwargs)

  Bases: `object`

  Provides specific methods for the SMUs of the Agilent B1500 mainframe

  Parameters:

    - parent (`AgilentB1500`) – Instance of the B1500 mainframe class

    - channel (int) – Channel number of the SMU

    - smu_type (str) – Type of the SMU

    - name (str) – Name of the SMU

  write(string)

    Wraps `Instrument.write()` method of B1500.

  ask(string)

    Wraps `ask()` method of B1500.

  query_learn(query_type, command)

    Wraps `query_learn()` method of B1500.

  check_errors()

    Wraps `check_errors()` method of B1500.

  property status

    Query status of the SMU.

  enable()

    Enable Source/Measurement Channel (`CN`)

  disable()

    Disable Source/Measurement Channel (`CL`)

  force_gnd()

    Force 0V immediately. Current Settings can be restored with `RZ` (not implemented). (`DZ`)

  property filter

    Enables/Disables SMU Filter. (`FL`)

    Type:

      bool

  property series_resistor

    Enables/Disables 1MOhm series resistor. (`SSR`)

    Type:

      bool

  property meas_op_mode

    Set SMU measurement operation mode. (`CMM`)

    Type:

      `MeasOpMode`

  property adc_type

    ADC type of individual measurement channel. (`AAD`)

    Type:

      `ADCType`

  force(source_type, source_range, output, comp='', comp_polarity='', comp_range='')

    Applies DC Current or Voltage from SMU immediately. (`DI`, `DV`)

    Parameters:

      - source_type (str) – Source type (`'Voltage','Current'`)

      - source_range (int or str) – Output range index or name

      - output (float) – Source output value in A or V

      - comp (float, optional) – Compliance value, defaults to previous setting

      - comp_polarity (`CompliancePolarity`) – Compliance polairty, defaults to auto

      - comp_range (int or str, optional) – Compliance ranging type, defaults to auto

  ramp_source(source_type, source_range, target_output, comp='', comp_polarity='', comp_range='', stepsize=0.001, pause=0.02)

    Ramps to a target output from the set value with a given step size, each separated by a pause.

    Parameters:

      - source_type (str) – Source type (`'Voltage'` or `'Current'`)

      - target_output – Target output voltage or current

      - irange (int) – Output range index

      - comp (float, optional) – Compliance, defaults to previous setting

      - comp_polarity (`CompliancePolarity`) – Compliance polairty, defaults to auto

      - comp_range (int or str, optional) – Compliance ranging type, defaults to auto

      - stepsize – Maximum size of steps

      - pause – Duration in seconds to wait between steps

    Type:

      target_output: float

  property meas_range_current

    Current measurement range index. (`RI`)

    Possible settings depend on SMU type, e.g. `0` for Auto Ranging: `SMUCurrentRanging`

  property meas_range_voltage

    Voltage measurement range index. (`RV`)

    Possible settings depend on SMU type, e.g. `0` for Auto Ranging: `SMUVoltageRanging`

  meas_range_current_auto(mode, rate=50)

    Specifies the auto range operation. Check Documentation. (`RM`)

    Parameters:

      - mode (int) – Range changing operation mode

      - rate (int, optional) – Parameter used to calculate the current value, defaults to 50

  staircase_sweep_source(source_type, mode, source_range, start, stop, steps, comp, Pcomp='')

    Specifies Staircase Sweep Source (Current or Voltage) and its parameters. (`WV` or `WI`)

    Parameters:

      - source_type (str) – Source type (`'Voltage','Current'`)

      - mode (`SweepMode`) – Sweep mode

      - source_range (int) – Source range index

      - start (float) – Sweep start value

      - stop (float) – Sweep stop value

      - steps (int) – Number of sweep steps

      - comp (float) – Compliance value

      - Pcomp (float, optional) – Power compliance, defaults to not set

  synchronous_sweep_source(source_type, source_range, start, stop, comp, Pcomp='')

    Specifies Synchronous Staircase Sweep Source (Current or Voltage) and its parameters. (`WSV` or `WSI`)

    Parameters:

      - source_type (str) – Source type (`'Voltage','Current'`)

      - source_range (int) – Source range index

      - start (float) – Sweep start value

      - stop (float) – Sweep stop value

      - comp (float) – Compliance value

      - Pcomp (float, optional) – Power compliance, defaults to not set

  sampling_source(source_type, source_range, base, bias, comp)

    Sets DC Source (Current or Voltage) for sampling measurement. DV/DI commands on the same channel overwrite this setting. (`MV` or `MI`)

    Parameters:

      - source_type (str) – Source type (`'Voltage','Current'`)

      - source_range (int) – Source range index

      - base (float) – Base voltage/current

      - bias (float) – Bias voltage/current

      - comp (float) – Compliance value

## Supporting Classes

Classes that provide additional functionalities:

- `QueryLearn`: Process read out of instrument settings

- `SMUCurrentRanging`, `SMUVoltageRanging`: Allowed ranges for different SMU types and transformation of range names to indices (base: `Ranging`)

class pymeasure.instruments.agilent.agilentB1500.QueryLearn

  Bases: `object`

  Methods to issue and process `*LRN?` (learn) command and response.

  static query_learn(ask, query_type)

    Issues `*LRN?` (learn) command to the instrument to read configuration. Returns dictionary of commands and set values.

    Parameters:

      query_type (int) – Query type according to the programming guide

    Returns:

      Dictionary of command and set values

    Return type:

      dict

  classmethod query_learn_header(ask, query_type, smu_references, single_command=False)

    Issues `*LRN?` (learn) command to the instrument to read configuration. Processes information to human readable values for debugging purposes or file headers.

    Parameters:

      - ask (Instrument.ask) – ask method of the instrument

      - query_type (int or str) – Number according to Programming Guide

      - smu_references (dict) – SMU references by channel

      - single_command (str) – if only a single command should be returned, defaults to False

    Returns:

      Read configuration

    Return type:

      dict

  static to_dict(parameters, names, *args)

    Takes parameters returned by `query_learn()` and ordered list of corresponding parameter names (optional function) and returns dict of parameters including names.

    Parameters:

      - parameters (dict) – Parameters for one command returned by `query_learn()`

      - names (list) – list of names or (name, function) tuples, ordered

    Returns:

      Parameter name and (processed) parameter

    Return type:

      dict

class pymeasure.instruments.agilent.agilentB1500.Ranging(supported_ranges, ranges, fixed_ranges=False)

  Bases: `object`

  Possible Settings for SMU Current/Voltage Output/Measurement ranges. Transformation of available Voltage/Current Range Names to Index and back.

  Parameters:

    - supported_ranges (list) – Ranges which are supported (list of range indizes)

    - ranges (dict) – All range names `{Name: Indizes}`

    - fixed_ranges – add fixed ranges (negative indizes); defaults to False

  __call__(input_value)

    Gives named tuple (name/index) of given Range. Throws error if range is not supported by this SMU.

    Parameters:

      input (str or int) – Range name or index

    Returns:

      named tuple (name/index) of range

    Return type:

      namedtuple

class pymeasure.instruments.agilent.agilentB1500.SMUCurrentRanging(smu_type)

  Bases: `object`

  Provides Range Name/Index transformation for current measurement/sourcing. Validity of ranges is checked against the type of the SMU.

  Omitting the ‘limited auto ranging’/’range fixed’ specification in the range string for current measurement defaults to ‘limited auto ranging’.

  Full specification: ‘1 nA range fixed’ or ‘1 nA limited auto ranging’

  ‘1 nA’ defaults to ‘1 nA limited auto ranging’

class pymeasure.instruments.agilent.agilentB1500.SMUVoltageRanging(smu_type)

  Bases: `object`

  Provides Range Name/Index transformation for voltage measurement/sourcing. Validity of ranges is checked against the type of the SMU.

  Omitting the ‘limited auto ranging’/’range fixed’ specification in the range string for voltage measurement defaults to ‘limited auto ranging’.

  Full specification: ‘2 V range fixed’ or ‘2 V limited auto ranging’

  ‘2 V’ defaults to ‘2 V limited auto ranging’

### Enumerations

Enumerations are used for easy selection of the available parameters (where it is applicable). Methods accept member name or number as input, but name is recommended for readability reasons. The member number is passed to the instrument. Converting an enumeration member into a string gives a title case, whitespace separated string (`__str__()`) which cannot be used to select an enumeration member again. It’s purpose is only logging or documentation.

class pymeasure.instruments.agilent.agilentB1500.CustomIntEnum(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `IntEnum`

  Provides additional methods to IntEnum:

  - Conversion to string automatically replaces ‘_’ with ‘ ‘ in names and converts to title case

  - get classmethod to get enum reference with name or integer

  __str__()

    Gives title case string of enum value

  classmethod get(input_value)

    Gives Enum member by specifying name or value.

    Parameters:

      input_value (str or int) – Enum name or value

    Returns:

      Enum member

class pymeasure.instruments.agilent.agilentB1500.ADCType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  ADC Type

  HSADC = 0

    High-speed ADC

  HRADC = 1

    High-resolution ADC

  HSADC_PULSED = 2

    High-resolution ADC for pulsed measurements

class pymeasure.instruments.agilent.agilentB1500.ADCMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  ADC Mode

  AUTO = 0
  MANUAL = 1
  PLC = 2
  TIME = 3

class pymeasure.instruments.agilent.agilentB1500.AutoManual(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Auto/Manual selection

  AUTO = 0
  MANUAL = 1

class pymeasure.instruments.agilent.agilentB1500.MeasMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Measurement Mode

  SPOT = 1
  STAIRCASE_SWEEP = 2
  SAMPLING = 10

class pymeasure.instruments.agilent.agilentB1500.MeasOpMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Measurement Operation Mode

  COMPLIANCE_SIDE = 0
  CURRENT = 1
  VOLTAGE = 2
  FORCE_SIDE = 3
  COMPLIANCE_AND_FORCE_SIDE = 4

class pymeasure.instruments.agilent.agilentB1500.SweepMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Sweep Mode

  LINEAR_SINGLE = 1
  LOG_SINGLE = 2
  LINEAR_DOUBLE = 3
  LOG_DOUBLE = 4

class pymeasure.instruments.agilent.agilentB1500.SamplingMode(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Sampling Mode

  LINEAR = 1
  LOG_10 = 2

    Logarithmic 10 data points/decade

  LOG_25 = 3

    Logarithmic 25 data points/decade

  LOG_50 = 4

    Logarithmic 50 data points/decade

  LOG_100 = 5

    Logarithmic 100 data points/decade

  LOG_250 = 6

    Logarithmic 250 data points/decade

  LOG_5000 = 7

    Logarithmic 5000 data points/decade

class pymeasure.instruments.agilent.agilentB1500.SamplingPostOutput(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Output after sampling

  BASE = 1
  BIAS = 2

class pymeasure.instruments.agilent.agilentB1500.StaircaseSweepPostOutput(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Output after staircase sweep

  START = 1
  STOP = 2

class pymeasure.instruments.agilent.agilentB1500.CompliancePolarity(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Compliance polarity

  AUTO = 0
  MANUAL = 1

class pymeasure.instruments.agilent.agilentB1500.WaitTimeType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

  Bases: `CustomIntEnum`

  Wait time type

  SMU_SOURCE = 1
  SMU_MEASUREMENT = 2
  CMU_MEASUREMENT = 3