Skip to content

Commit

Permalink
Signatone prober support (#158)
Browse files Browse the repository at this point in the history
  • Loading branch information
Marrkson committed Jun 7, 2021
1 parent 502a999 commit 91a50ba
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 4 deletions.
53 changes: 53 additions & 0 deletions basil/HL/SignatoneProber.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#
# ------------------------------------------------------------
# Copyright (c) All rights reserved
# SiLab, Institute of Physics, University of Bonn
# ------------------------------------------------------------
#

from basil.HL.RegisterHardwareLayer import HardwareLayer


class SignatoneProber(HardwareLayer):

'''
Implements functions to steer a Signatone probe station such as the one of lal in2p3 in Paris.
'''

def __init__(self, intf, conf):
super(SignatoneProber, self).__init__(intf, conf)

def goto_die(self, index_x, index_y):
''' Move chuck to wafer map chip index'''
self._intf.write('MOVECR %d, %d' % (index_x, index_y))

def goto_next_die(self):
''' Move chuck to next die from wafer map'''
self._intf.write('NEXT')

def goto_first_die(self):
''' Move chuck to first die from wafer map'''
self._intf.write('TOFIRSTSITE')

def get_die(self):
''' Get chip index '''
reply = ''
for n in range(10):
if reply == '0:' or reply == '':
reply = self._intf.query('GETCR')
else:
break
values = reply.split(',')
return (int(values[0]), int(values[1]))

def contact(self):
''' Move chuck to contact z position'''
self._intf.write('ZCHUCKUP')

def separate(self):
''' Move chuck to separation z position'''
self._intf.write('ZCHUCKDOWN')

def load(self):
''' Move chuck to load z position'''
self._intf.write('LOADWAFER')
29 changes: 26 additions & 3 deletions basil/TL/Visa.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
#
import pyvisa as visa
import logging
import time

from basil.TL.TransferLayer import TransferLayer
from pyvisa.errors import VisaIOError

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -35,6 +37,7 @@ def init(self):
logger.info('BASIL VISA TL with %s backend found the following devices: %s', backend, ", ".join(rm.list_resources()))
except NotImplementedError: # some backends do not always implement the list_resources function
logger.info('BASIL VISA TL with %s backend', backend)

self._resource = rm.open_resource(**{key: value for key, value in self._init.items() if key not in ("backend",)})

def close(self):
Expand All @@ -45,7 +48,27 @@ def write(self, data):
self._resource.write(data)

def read(self):
self._resource.read()
if self._resource.read_termination == "":
ret = ""
while True:
try:
ret += self._resource.read_bytes(1).decode(self._resource._encoding)
except VisaIOError:
break
else:
ret = self._resource.read()
return ret

def query(self, data):
return self._resource.query(data)
def query(self, data, max_tries=10000):
if self._resource.read_termination == "":
self.write(data)
time.sleep(self._resource.query_delay)
ret = ""
for _ in range(max_tries):
try:
ret += self._resource.read_bytes(1).decode(self._resource._encoding)
except VisaIOError:
break
else:
ret = self._resource.query(data)
return ret
7 changes: 6 additions & 1 deletion examples/lab_devices/ProbeStation.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# ------------------------------------------------------------
#

''' This script shows how to use a Suss Probe station.
''' This script shows how to use a Suss or Signatone Probe station.
BTW:
For the PA-200 it is not forseen to be able to communicate with the prober bench software
Expand All @@ -25,3 +25,8 @@
dut.init()
print(dut['SussProber'].get_position())
print(dut['SussProber'].get_die())

dut2 = Dut('SignatoneProber.yaml')
dut2.init()
print(dut2['SignatoneProber'].get_position())
print(dut2['SignatoneProber'].get_die())
13 changes: 13 additions & 0 deletions examples/lab_devices/SignatoneProber.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
transfer_layer:
- name : Visa
type : Visa
init :
resource_name : "TCPIP0::169.254.55.86::9090::SOCKET"
backend : "@py"
read_termination : ""
timeout: 2.0

hw_drivers:
- name : Prober
type : SignatoneProber
interface : Visa

0 comments on commit 91a50ba

Please sign in to comment.