Dear Chris,
thanks a lot for your quick reply! That is exactly the information we were looking for.
The reason why compiling is taking so much time is likely due to the way we are generating the events for our pseudo-clock that is not particularly efficient (a for loop)
Here is what we are doing: it generates a list of 640000 instructions that are sent to our pseudoclock:
----------------------------------------------------------------------------------------------------------------------------------------------------------------
from labscript import *
from labscript_devices.Pyncmaster import Pyncmaster
from labscript_devices.NI_PCIe_6363 import NI_PCIe_6363
from labscript_devices.NovaTechDDS9M import NovaTechDDS9M
from labscript_devices.Camera import Camera
from labscript_devices.PineBlaster import PineBlaster
from labscript_devices.NI_PCI_6733 import NI_PCI_6733
from labscript_utils.unitconversions import *
Pyncmaster(name='pyncmaster', board_number=0, time_based_stop_workaround = True, time_based_stop_workaround_extra_time=0.5)
DigitalOut( 'ch_1', pyncmaster.direct_outputs, 'flag 0')
DigitalOut( 'ch_2', pyncmaster.direct_outputs, 'flag 1')
DigitalOut( 'ch_4', pyncmaster.direct_outputs, 'flag 3')
DigitalOut( 'ch_9', pyncmaster.direct_outputs, 'flag 8')
#Begin program
start()
t = 0
t += 0.1
#Loop over list of instructions
for i in range(80000):
ch_1.go_high(t)
ch_2.go_high(t)
t+= 0.00001
ch_4.go_high(t)
ch_9.go_high(t)
t+= 0.00001
ch_1.go_low(t)
ch_2.go_low(t)
t+= 0.00001
ch_4.go_low(t)
ch_9.go_low(t)
t+= 0.00001
t += 0.1
#End program
stop(t)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
We are creating events in this inefficient way only to test if the hardware can handle the maximum number of instructions, however it is unlikely that a similar loop would be implemented in an actual experiment.
All the best,
Alessandro