Gate Leakage Test

[1]:
from time import sleep
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Image, display
from qcodes_contrib_drivers.drivers.QDevil import QDAC2
qdac_addr = '192.168.8.17'
qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')
Connected to: QDevil QDAC-II (serial:3, firmware:11-1.14) in 0.22s
[2]:
# For testing, connect resistors: 5M6 over ch 5, 33M between ch 3 & 4, and 5G over ch 1
arrangement = qdac.arrange(
    contacts={'G1': 1, 'G2': 2, 'G3': 3, 'G4': 4, 'O5': 5})
arrangement.set_virtual_voltages({
    'G1': 0.01, 'G2': 0.015, 'G3': 0.013, 'G4': 0.021, 'O5': 0.005})
sleep(3)
[3]:
# Measure leakage by raising the voltage by 5 mV on each channel in turn.
modulation_mV=5
powerline_cycles=10
leakage_matrix_Ohm = arrangement.leakage(
    modulation_V=modulation_mV/1000, nplc=powerline_cycles)
[4]:
leakage_megaohm = leakage_matrix_Ohm / 1e6
[5]:
# Show the leakage matrix but cap it off at 100 MΩ
fig, ax = plt.subplots()
plt.title(f'Gate Leakage ({modulation_mV}mV)')
img = ax.imshow(leakage_megaohm, interpolation='none', vmin=0, vmax=100)
ticks = np.arange(len(arrangement.contact_names))
minorticks = np.arange(-0.5, len(ticks), 1)
ax.set_xticks(ticks, labels=arrangement.contact_names)
ax.set_yticks(ticks, labels=arrangement.contact_names)
ax.set_xticks(minorticks, minor=True)
ax.set_yticks(minorticks, minor=True)
ax.grid(which='minor', color='grey', linewidth=1.5)
plt.gca().invert_yaxis()
colorbar = fig.colorbar(img)
colorbar.set_label('Resistance (MΩ)')
../../../_images/examples_QDevil_QDAC2_GateLeakage_5_0.png