artiq/benchmarks/pulse_rate.py

27 lines
688 B
Python

from artiq import *
from artiq.coredevice.runtime_exceptions import RTIOUnderflow
class PulseRate(Experiment, AutoDB):
"""Sustained pulse rate"""
class DBKeys:
core = Device()
ttl0 = Device()
pulse_rate = Result()
@kernel
def run(self):
T = time_to_cycles(100*ns)
while True:
try:
for i in range(1000):
self.ttl0.pulse(cycles_to_time(T))
delay(cycles_to_time(T))
except RTIOUnderflow:
T += 1
self.core.recover_underflow()
else:
self.pulse_rate = cycles_to_time(2*T)
break