Hi all,
In an earlier post I made, I asked for help regarding Artiq 7 hanging occassionally when communicating with Urukul devices.
At the time I was not able to reliably reproduce this issue, however I have now managed to construct a minimal working (failing?) example, which you will find below.
Running this experiment will result in Artiq hanging approximately one in every thirty runs. That is, the experiment will get stuck showing "running" in the dashboard, but will not proceed. There is no error message, and other experiments in the queue will not run until the hanging experiment is delted. It's not exactly clear to me exactly why this is happening, so I am turning to the community for some support.
Our Sinara setup consists of a Kasli-SoC (acting as master) and a Kasli (acting as satellite). The device urukul_rachel
is connected to the master and the devices urukul0
and urukul1
are on the satellite.
Another hint is that I have noticed that commenting out the line self.urukul_rachel_cpld.get_att_mu
will prevent the system from hanging.
Happy to provide any further information that is useful such as device_db as required.
Thanks in advance once again.
import time
import asyncio
from artiq.experiment import *
import numpy as np
class UrukulHangingExperiment(EnvExperiment):
"""Reproduce urukul hang"""
def build(self):
self.setattr_device("core")
self.setattr_device("urukul1_ch0")
self.time = time.time()
self.setattr_device("urukul0_cpld")
self.setattr_device("urukul1_cpld")
self.setattr_device("urukul_rachel_cpld")
@kernel
def run(self):
self.core.reset()
delay(10*ms)
self.core.break_realtime()
self.urukul0_cpld.init(blind=True)
delay(1*ms)
self.urukul1_cpld.init(blind=True)
delay(1*ms)
self.urukul_rachel_cpld.init(blind=True)
delay(1*ms)
self.urukul0_cpld.get_att_mu()
delay(1000*ms)
self.urukul1_cpld.get_att_mu()
delay(1000*ms)
# self.urukul_rachel_cpld.get_att_mu()
delay(1000*ms)
print(self.time)