forked from M-Labs/artiq
Merge branch 'namespace-experiment'
closes #189 * namespace-experiment: artiq_dir: move out of tools to unlink dependencies refactor Analyzer constants to unlink dependencies CoreException: store at 'py_exn.artiq_core_exception' doc: update Underflow catching example coredevice: remove some print()s language...ARTIQException -> coredevice...CoreException artiq.experiment: update examples artiq.experiment: merge language and coredevice namespaces artiq: move namespace artiq.* -> artiq.language.*
This commit is contained in:
commit
5444cd3ca2
|
@ -1,13 +1,7 @@
|
||||||
from artiq import language
|
|
||||||
from artiq.language import *
|
|
||||||
from artiq.coredevice.dds import (PHASE_MODE_CONTINUOUS, PHASE_MODE_ABSOLUTE,
|
|
||||||
PHASE_MODE_TRACKING)
|
|
||||||
|
|
||||||
__all__ = []
|
|
||||||
__all__.extend(language.__all__)
|
|
||||||
__all__ += ["PHASE_MODE_CONTINUOUS", "PHASE_MODE_ABSOLUTE",
|
|
||||||
"PHASE_MODE_TRACKING"]
|
|
||||||
|
|
||||||
from ._version import get_versions
|
from ._version import get_versions
|
||||||
__version__ = get_versions()['version']
|
__version__ = get_versions()['version']
|
||||||
del get_versions
|
del get_versions
|
||||||
|
|
||||||
|
import os
|
||||||
|
__artiq_dir__ = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
del os
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
from artiq.coredevice import exceptions, dds
|
||||||
|
from artiq.coredevice.exceptions import (RTIOUnderflow, RTIOSequenceError,
|
||||||
|
RTIOCollisionError)
|
||||||
|
from artiq.coredevice.dds import (PHASE_MODE_CONTINUOUS, PHASE_MODE_ABSOLUTE,
|
||||||
|
PHASE_MODE_TRACKING)
|
||||||
|
|
||||||
|
__all__ = []
|
||||||
|
__all__ += ["RTIOUnderflow", "RTIOSequenceError", "RTIOCollisionError"]
|
||||||
|
__all__ += ["PHASE_MODE_CONTINUOUS", "PHASE_MODE_ABSOLUTE",
|
||||||
|
"PHASE_MODE_TRACKING"]
|
|
@ -1,33 +1,15 @@
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from itertools import count
|
from itertools import count
|
||||||
from enum import Enum
|
|
||||||
import struct
|
import struct
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from artiq.gateware.rtio.analyzer_common import MessageType, ExceptionType
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class MessageType(Enum):
|
|
||||||
output = 0b00
|
|
||||||
input = 0b01
|
|
||||||
exception = 0b10
|
|
||||||
|
|
||||||
|
|
||||||
class ExceptionType(Enum):
|
|
||||||
reset_rising = 0b000000
|
|
||||||
reset_falling = 0b000001
|
|
||||||
reset_phy_rising = 0b000010
|
|
||||||
reset_phy_falling = 0b000011
|
|
||||||
|
|
||||||
o_underflow_reset = 0b010000
|
|
||||||
o_sequence_error_reset = 0b010001
|
|
||||||
o_collision_error_reset = 0b010010
|
|
||||||
|
|
||||||
i_overflow_reset = 0b100000
|
|
||||||
|
|
||||||
|
|
||||||
OutputMessage = namedtuple(
|
OutputMessage = namedtuple(
|
||||||
"OutputMessage", "channel timestamp rtio_counter address data")
|
"OutputMessage", "channel timestamp rtio_counter address data")
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import traceback
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from fractions import Fraction
|
from fractions import Fraction
|
||||||
|
|
||||||
from artiq.language import core as core_language
|
|
||||||
from artiq.coredevice import exceptions
|
from artiq.coredevice import exceptions
|
||||||
from artiq import __version__ as software_version
|
from artiq import __version__ as software_version
|
||||||
|
|
||||||
|
@ -458,8 +457,8 @@ class CommGeneric:
|
||||||
|
|
||||||
self._write_header(_H2DMsgType.RPC_EXCEPTION)
|
self._write_header(_H2DMsgType.RPC_EXCEPTION)
|
||||||
|
|
||||||
if hasattr(exn, 'artiq_exception'):
|
if hasattr(exn, 'artiq_core_exception'):
|
||||||
exn = exn.artiq_exception
|
exn = exn.artiq_core_exception
|
||||||
self._write_string(exn.name)
|
self._write_string(exn.name)
|
||||||
self._write_string(exn.message)
|
self._write_string(exn.message)
|
||||||
for index in range(3):
|
for index in range(3):
|
||||||
|
@ -505,16 +504,15 @@ class CommGeneric:
|
||||||
|
|
||||||
traceback = list(reversed(symbolizer(backtrace))) + \
|
traceback = list(reversed(symbolizer(backtrace))) + \
|
||||||
[(filename, line, column, function, None)]
|
[(filename, line, column, function, None)]
|
||||||
exception = core_language.ARTIQException(name, message, params, traceback)
|
core_exn = exceptions.CoreException(name, message, params, traceback)
|
||||||
|
|
||||||
print(exception.id, exception.name)
|
if core_exn.id == 0:
|
||||||
if exception.id == 0:
|
python_exn_type = getattr(exceptions, core_exn.name.split('.')[-1])
|
||||||
python_exn_type = getattr(exceptions, exception.name.split('.')[-1])
|
|
||||||
else:
|
else:
|
||||||
python_exn_type = object_map.retrieve(exception.id)
|
python_exn_type = object_map.retrieve(core_exn.id)
|
||||||
|
|
||||||
python_exn = python_exn_type(message.format(*params))
|
python_exn = python_exn_type(message.format(*params))
|
||||||
python_exn.artiq_exception = exception
|
python_exn.artiq_core_exception = core_exn
|
||||||
raise python_exn
|
raise python_exn
|
||||||
|
|
||||||
def serve(self, object_map, symbolizer):
|
def serve(self, object_map, symbolizer):
|
||||||
|
|
|
@ -2,6 +2,8 @@ import os, sys
|
||||||
|
|
||||||
from pythonparser import diagnostic
|
from pythonparser import diagnostic
|
||||||
|
|
||||||
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
|
|
||||||
from artiq.language.core import *
|
from artiq.language.core import *
|
||||||
from artiq.language.types import *
|
from artiq.language.types import *
|
||||||
from artiq.language.units import *
|
from artiq.language.units import *
|
||||||
|
@ -16,7 +18,7 @@ from artiq.coredevice import exceptions
|
||||||
|
|
||||||
def _render_diagnostic(diagnostic, colored):
|
def _render_diagnostic(diagnostic, colored):
|
||||||
def shorten_path(path):
|
def shorten_path(path):
|
||||||
return path.replace(os.path.normpath(os.path.join(__file__, "..", "..")), "<artiq>")
|
return path.replace(artiq_dir, "<artiq>")
|
||||||
lines = [shorten_path(path) for path in diagnostic.render(colored)]
|
lines = [shorten_path(path) for path in diagnostic.render(colored)]
|
||||||
return "\n".join(lines)
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
import builtins
|
import builtins
|
||||||
from artiq.language.core import ARTIQException
|
import linecache
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
|
from artiq.coredevice.runtime import source_loader
|
||||||
|
|
||||||
|
|
||||||
ZeroDivisionError = builtins.ZeroDivisionError
|
ZeroDivisionError = builtins.ZeroDivisionError
|
||||||
|
@ -7,6 +12,50 @@ ValueError = builtins.ValueError
|
||||||
IndexError = builtins.IndexError
|
IndexError = builtins.IndexError
|
||||||
|
|
||||||
|
|
||||||
|
class CoreException:
|
||||||
|
"""Information about an exception raised or passed through the core device."""
|
||||||
|
|
||||||
|
def __init__(self, name, message, params, traceback):
|
||||||
|
if ':' in name:
|
||||||
|
exn_id, self.name = name.split(':', 2)
|
||||||
|
self.id = int(exn_id)
|
||||||
|
else:
|
||||||
|
self.id, self.name = 0, name
|
||||||
|
self.message, self.params = message, params
|
||||||
|
self.traceback = list(traceback)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
lines = []
|
||||||
|
lines.append("Core Device Traceback (most recent call last):")
|
||||||
|
for (filename, line, column, function, address) in self.traceback:
|
||||||
|
stub_globals = {"__name__": filename, "__loader__": source_loader}
|
||||||
|
source_line = linecache.getline(filename, line, stub_globals)
|
||||||
|
indentation = re.search(r"^\s*", source_line).end()
|
||||||
|
|
||||||
|
if address is None:
|
||||||
|
formatted_address = ""
|
||||||
|
else:
|
||||||
|
formatted_address = " (RA=0x{:x})".format(address)
|
||||||
|
|
||||||
|
filename = filename.replace(artiq_dir, "<artiq>")
|
||||||
|
if column == -1:
|
||||||
|
lines.append(" File \"{file}\", line {line}, in {function}{address}".
|
||||||
|
format(file=filename, line=line, function=function,
|
||||||
|
address=formatted_address))
|
||||||
|
lines.append(" {}".format(source_line.strip() if source_line else "<unknown>"))
|
||||||
|
else:
|
||||||
|
lines.append(" File \"{file}\", line {line}, column {column},"
|
||||||
|
" in {function}{address}".
|
||||||
|
format(file=filename, line=line, column=column + 1,
|
||||||
|
function=function, address=formatted_address))
|
||||||
|
lines.append(" {}".format(source_line.strip() if source_line else "<unknown>"))
|
||||||
|
lines.append(" {}^".format(" " * (column - indentation)))
|
||||||
|
|
||||||
|
lines.append("{}({}): {}".format(self.name, self.id,
|
||||||
|
self.message.format(*self.params)))
|
||||||
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
class InternalError(Exception):
|
class InternalError(Exception):
|
||||||
"""Raised when the runtime encounters an internal error condition."""
|
"""Raised when the runtime encounters an internal error condition."""
|
||||||
artiq_builtin = True
|
artiq_builtin = True
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
|
|
||||||
|
|
||||||
class SourceLoader:
|
class SourceLoader:
|
||||||
def __init__(self, runtime_root):
|
def __init__(self, runtime_root):
|
||||||
self.runtime_root = runtime_root
|
self.runtime_root = runtime_root
|
||||||
|
|
||||||
def get_source(self, filename):
|
def get_source(self, filename):
|
||||||
print(os.path.join(self.runtime_root, filename))
|
|
||||||
with open(os.path.join(self.runtime_root, filename)) as f:
|
with open(os.path.join(self.runtime_root, filename)) as f:
|
||||||
return f.read()
|
return f.read()
|
||||||
|
|
||||||
artiq_root = os.path.join(os.path.dirname(__file__), "..", "..")
|
source_loader = SourceLoader(os.path.join(artiq_dir, "soc", "runtime"))
|
||||||
source_loader = SourceLoader(os.path.join(artiq_root, "soc", "runtime"))
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
from artiq import language, coredevice
|
||||||
|
from artiq.language import *
|
||||||
|
from artiq.coredevice import *
|
||||||
|
|
||||||
|
__all__ = []
|
||||||
|
__all__.extend(language.__all__)
|
||||||
|
__all__.extend(coredevice.__all__)
|
|
@ -7,6 +7,7 @@ import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
import artiq
|
import artiq
|
||||||
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
from artiq.frontend.bit2bin import bit2bin
|
from artiq.frontend.bit2bin import bit2bin
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,7 +71,7 @@ def main():
|
||||||
}[opts.target]
|
}[opts.target]
|
||||||
|
|
||||||
if opts.dir is None:
|
if opts.dir is None:
|
||||||
opts.dir = os.path.join(os.path.dirname(artiq.__file__), "binaries",
|
opts.dir = os.path.join(artiq_dir, "binaries",
|
||||||
"{}-{}".format(opts.target, opts.adapter))
|
"{}-{}".format(opts.target, opts.adapter))
|
||||||
|
|
||||||
conv = False
|
conv = False
|
||||||
|
|
|
@ -10,6 +10,7 @@ import os
|
||||||
from quamash import QEventLoop, QtGui, QtCore
|
from quamash import QEventLoop, QtGui, QtCore
|
||||||
from pyqtgraph import dockarea
|
from pyqtgraph import dockarea
|
||||||
|
|
||||||
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
from artiq.tools import *
|
from artiq.tools import *
|
||||||
from artiq.protocols.pc_rpc import AsyncioClient
|
from artiq.protocols.pc_rpc import AsyncioClient
|
||||||
from artiq.gui.models import ModelSubscriber
|
from artiq.gui.models import ModelSubscriber
|
||||||
|
|
|
@ -132,8 +132,8 @@ def run(with_file=False):
|
||||||
except CompileError as error:
|
except CompileError as error:
|
||||||
return
|
return
|
||||||
except Exception as exn:
|
except Exception as exn:
|
||||||
if hasattr(exn, 'artiq_exception'):
|
if hasattr(exn, 'artiq_core_exception'):
|
||||||
print(exn.artiq_exception, file=sys.stderr)
|
print(exn.artiq_core_exception, file=sys.stderr)
|
||||||
raise exn
|
raise exn
|
||||||
finally:
|
finally:
|
||||||
device_mgr.close_devices()
|
device_mgr.close_devices()
|
||||||
|
|
|
@ -3,7 +3,7 @@ from migen.genlib.record import Record, layout_len
|
||||||
from misoc.interconnect.csr import *
|
from misoc.interconnect.csr import *
|
||||||
from misoc.interconnect import stream
|
from misoc.interconnect import stream
|
||||||
|
|
||||||
from artiq.coredevice.analyzer import MessageType, ExceptionType
|
from artiq.gateware.rtio.analyzer_common import MessageType, ExceptionType
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["Analyzer"]
|
__all__ = ["Analyzer"]
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class MessageType(Enum):
|
||||||
|
output = 0b00
|
||||||
|
input = 0b01
|
||||||
|
exception = 0b10
|
||||||
|
|
||||||
|
|
||||||
|
class ExceptionType(Enum):
|
||||||
|
reset_rising = 0b000000
|
||||||
|
reset_falling = 0b000001
|
||||||
|
reset_phy_rising = 0b000010
|
||||||
|
reset_phy_falling = 0b000011
|
||||||
|
|
||||||
|
o_underflow_reset = 0b010000
|
||||||
|
o_sequence_error_reset = 0b010001
|
||||||
|
o_collision_error_reset = 0b010010
|
||||||
|
|
||||||
|
i_overflow_reset = 0b100000
|
|
@ -20,7 +20,7 @@ from misoc.targets.kc705 import MiniSoC, soc_kc705_args, soc_kc705_argdict
|
||||||
from artiq.gateware.soc import AMPSoC
|
from artiq.gateware.soc import AMPSoC
|
||||||
from artiq.gateware import rtio, nist_qc1, nist_clock, nist_qc2
|
from artiq.gateware import rtio, nist_qc1, nist_clock, nist_qc2
|
||||||
from artiq.gateware.rtio.phy import ttl_simple, ttl_serdes_7series, dds
|
from artiq.gateware.rtio.phy import ttl_simple, ttl_serdes_7series, dds
|
||||||
from artiq.tools import artiq_dir
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
from artiq import __version__ as artiq_version
|
from artiq import __version__ as artiq_version
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ from misoc.targets.pipistrello import *
|
||||||
from artiq.gateware.soc import AMPSoC
|
from artiq.gateware.soc import AMPSoC
|
||||||
from artiq.gateware import rtio, nist_qc1
|
from artiq.gateware import rtio, nist_qc1
|
||||||
from artiq.gateware.rtio.phy import ttl_simple, ttl_serdes_spartan6, dds
|
from artiq.gateware.rtio.phy import ttl_simple, ttl_serdes_spartan6, dds
|
||||||
from artiq.tools import artiq_dir
|
from artiq import __artiq_dir__ as artiq_dir
|
||||||
from artiq import __version__ as artiq_version
|
from artiq import __version__ as artiq_version
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
# Copyright (C) 2014, 2015 Robert Jordens <jordens@gmail.com>
|
|
||||||
|
|
||||||
from artiq.language import core, types, environment, units, scan
|
from artiq.language import core, types, environment, units, scan
|
||||||
from artiq.language.core import *
|
from artiq.language.core import *
|
||||||
from artiq.language.types import *
|
from artiq.language.types import *
|
||||||
|
@ -7,7 +5,6 @@ from artiq.language.environment import *
|
||||||
from artiq.language.units import *
|
from artiq.language.units import *
|
||||||
from artiq.language.scan import *
|
from artiq.language.scan import *
|
||||||
|
|
||||||
|
|
||||||
__all__ = []
|
__all__ = []
|
||||||
__all__.extend(core.__all__)
|
__all__.extend(core.__all__)
|
||||||
__all__.extend(types.__all__)
|
__all__.extend(types.__all__)
|
||||||
|
|
|
@ -2,18 +2,13 @@
|
||||||
Core ARTIQ extensions to the Python language.
|
Core ARTIQ extensions to the Python language.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os, linecache, re
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
# for runtime files in backtraces
|
|
||||||
from artiq.coredevice.runtime import source_loader
|
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["host_int", "int", "host_round", "round",
|
__all__ = ["host_int", "int", "host_round", "round",
|
||||||
"kernel", "portable", "syscall", "host_only",
|
"kernel", "portable", "syscall", "host_only",
|
||||||
"set_time_manager", "set_watchdog_factory",
|
"set_time_manager", "set_watchdog_factory",
|
||||||
"ARTIQException",
|
|
||||||
"TerminationRequested"]
|
"TerminationRequested"]
|
||||||
|
|
||||||
# global namespace for kernels
|
# global namespace for kernels
|
||||||
|
@ -375,48 +370,3 @@ def watchdog(timeout):
|
||||||
class TerminationRequested(Exception):
|
class TerminationRequested(Exception):
|
||||||
"""Raised by ``pause`` when the user has requested termination."""
|
"""Raised by ``pause`` when the user has requested termination."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ARTIQException:
|
|
||||||
"""Information about an exception raised or passed through the core device."""
|
|
||||||
|
|
||||||
def __init__(self, name, message, params, traceback):
|
|
||||||
if ':' in name:
|
|
||||||
exn_id, self.name = name.split(':', 2)
|
|
||||||
self.id = host_int(exn_id)
|
|
||||||
else:
|
|
||||||
self.id, self.name = 0, name
|
|
||||||
self.message, self.params = message, params
|
|
||||||
self.traceback = list(traceback)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
lines = []
|
|
||||||
lines.append("Core Device Traceback (most recent call last):")
|
|
||||||
for (filename, line, column, function, address) in self.traceback:
|
|
||||||
stub_globals = {"__name__": filename, "__loader__": source_loader}
|
|
||||||
source_line = linecache.getline(filename, line, stub_globals)
|
|
||||||
indentation = re.search(r"^\s*", source_line).end()
|
|
||||||
|
|
||||||
if address is None:
|
|
||||||
formatted_address = ""
|
|
||||||
else:
|
|
||||||
formatted_address = " (RA=0x{:x})".format(address)
|
|
||||||
|
|
||||||
filename = filename.replace(os.path.normpath(os.path.join(os.path.dirname(__file__),
|
|
||||||
"..")), "<artiq>")
|
|
||||||
if column == -1:
|
|
||||||
lines.append(" File \"{file}\", line {line}, in {function}{address}".
|
|
||||||
format(file=filename, line=line, function=function,
|
|
||||||
address=formatted_address))
|
|
||||||
lines.append(" {}".format(source_line.strip() if source_line else "<unknown>"))
|
|
||||||
else:
|
|
||||||
lines.append(" File \"{file}\", line {line}, column {column},"
|
|
||||||
" in {function}{address}".
|
|
||||||
format(file=filename, line=line, column=column + 1,
|
|
||||||
function=function, address=formatted_address))
|
|
||||||
lines.append(" {}".format(source_line.strip() if source_line else "<unknown>"))
|
|
||||||
lines.append(" {}^".format(" " * (column - indentation)))
|
|
||||||
|
|
||||||
lines.append("{}({}): {}".format(self.name, self.id,
|
|
||||||
self.message.format(*self.params)))
|
|
||||||
return "\n".join(lines)
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq.language import *
|
from artiq.experiment import *
|
||||||
from artiq.coredevice.analyzer import decode_dump, OutputMessage, InputMessage
|
from artiq.coredevice.analyzer import decode_dump, OutputMessage, InputMessage
|
||||||
from artiq.test.hardware_testbench import ExperimentCase
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
from artiq.language import *
|
from artiq.experiment import *
|
||||||
from artiq.coredevice.exceptions import *
|
|
||||||
from artiq.test.hardware_testbench import ExperimentCase
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq.language import *
|
from artiq.experiment import *
|
||||||
from artiq.test.hardware_testbench import ExperimentCase
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
from fractions import Fraction
|
from fractions import Fraction
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
from artiq.sim import devices as sim_devices
|
from artiq.sim import devices as sim_devices
|
||||||
from artiq.test.hardware_testbench import ExperimentCase
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,8 @@
|
||||||
|
|
||||||
from math import sqrt
|
from math import sqrt
|
||||||
|
|
||||||
from artiq.language import *
|
from artiq.experiment import *
|
||||||
from artiq.test.hardware_testbench import ExperimentCase
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
from artiq.coredevice.exceptions import (RTIOUnderflow, RTIOSequenceError,
|
|
||||||
RTIOCollisionError)
|
|
||||||
|
|
||||||
|
|
||||||
class RTT(EnvExperiment):
|
class RTT(EnvExperiment):
|
||||||
|
|
|
@ -6,7 +6,7 @@ import sys
|
||||||
import unittest
|
import unittest
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from artiq.language import *
|
from artiq.experiment import *
|
||||||
from artiq.master.databases import DeviceDB, DatasetDB
|
from artiq.master.databases import DeviceDB, DatasetDB
|
||||||
from artiq.master.worker_db import DeviceManager, DatasetManager
|
from artiq.master.worker_db import DeviceManager, DatasetManager
|
||||||
from artiq.coredevice.core import CompileError
|
from artiq.coredevice.core import CompileError
|
||||||
|
|
|
@ -5,7 +5,7 @@ import sys
|
||||||
import os
|
import os
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
from artiq.master.scheduler import Scheduler
|
from artiq.master.scheduler import Scheduler
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import sys
|
||||||
import os
|
import os
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
from artiq.master.worker import *
|
from artiq.master.worker import *
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ from artiq.language.environment import is_experiment
|
||||||
from artiq.protocols import pyon
|
from artiq.protocols import pyon
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["artiq_dir", "parse_arguments", "elide", "short_format", "file_import",
|
__all__ = ["parse_arguments", "elide", "short_format", "file_import",
|
||||||
"get_experiment", "verbosity_args", "simple_network_args", "init_logger",
|
"get_experiment", "verbosity_args", "simple_network_args", "init_logger",
|
||||||
"bind_address_from_args", "atexit_register_coroutine",
|
"bind_address_from_args", "atexit_register_coroutine",
|
||||||
"exc_to_warning", "asyncio_wait_or_cancel",
|
"exc_to_warning", "asyncio_wait_or_cancel",
|
||||||
|
@ -25,8 +25,6 @@ __all__ = ["artiq_dir", "parse_arguments", "elide", "short_format", "file_import
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
artiq_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)))
|
|
||||||
|
|
||||||
|
|
||||||
def parse_arguments(arguments):
|
def parse_arguments(arguments):
|
||||||
d = {}
|
d = {}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Core language reference
|
Core language reference
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The most commonly used features from those modules can be imported with ``from artiq import *``.
|
The most commonly used features from the ARTIQ language modules and from the core device modules are bundled together in ``artiq.experiment`` and can be imported with ``from artiq.experiment import *``.
|
||||||
|
|
||||||
:mod:`artiq.language.core` module
|
:mod:`artiq.language.core` module
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
|
@ -8,7 +8,7 @@ Connecting to the core device
|
||||||
|
|
||||||
As a very first step, we will turn on a LED on the core device. Create a file ``led.py`` containing the following: ::
|
As a very first step, we will turn on a LED on the core device. Create a file ``led.py`` containing the following: ::
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class LED(EnvExperiment):
|
class LED(EnvExperiment):
|
||||||
|
@ -93,7 +93,7 @@ The point of running code on the core device is the ability to meet demanding re
|
||||||
|
|
||||||
Create a new file ``rtio.py`` containing the following: ::
|
Create a new file ``rtio.py`` containing the following: ::
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class Tutorial(EnvExperiment):
|
class Tutorial(EnvExperiment):
|
||||||
|
@ -114,7 +114,7 @@ Instead, inside the core device, output timing is generated by the gateware and
|
||||||
|
|
||||||
Try reducing the period of the generated waveform until the CPU cannot keep up with the generation of switching events and the underflow exception is raised. Then try catching it: ::
|
Try reducing the period of the generated waveform until the CPU cannot keep up with the generation of switching events and the underflow exception is raised. Then try catching it: ::
|
||||||
|
|
||||||
from artiq.coredevice.exceptions import RTIOUnderflow
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
def print_underflow():
|
def print_underflow():
|
||||||
|
|
|
@ -16,7 +16,7 @@ Then create a ``~/artiq-master/repository`` sub-folder to contain experiments. T
|
||||||
|
|
||||||
Create a very simple experiment in ``~/artiq-master/repository`` and save it as ``mgmt_tutorial.py``: ::
|
Create a very simple experiment in ``~/artiq-master/repository`` and save it as ``mgmt_tutorial.py``: ::
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class MgmtTutorial(EnvExperiment):
|
class MgmtTutorial(EnvExperiment):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class SubComponent1(HasEnvironment):
|
class SubComponent1(HasEnvironment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class PhotonHistogram(EnvExperiment):
|
class PhotonHistogram(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class BlinkForever(EnvExperiment):
|
class BlinkForever(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class DDSTest(EnvExperiment):
|
class DDSTest(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class Handover(EnvExperiment):
|
class Handover(EnvExperiment):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class Mandelbrot(EnvExperiment):
|
class Mandelbrot(EnvExperiment):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Copyright (C) 2014, 2015 Robert Jordens <jordens@gmail.com>
|
# Copyright (C) 2014, 2015 Robert Jordens <jordens@gmail.com>
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class PulseNotReceivedError(Exception):
|
class PulseNotReceivedError(Exception):
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
from artiq.wavesynth.coefficients import SplineSource
|
from artiq.wavesynth.coefficients import SplineSource
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import random
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from scipy.optimize import curve_fit
|
from scipy.optimize import curve_fit
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
def model(x, F0):
|
def model(x, F0):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from itertools import count
|
from itertools import count
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class RunForever(EnvExperiment):
|
class RunForever(EnvExperiment):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class _PayloadNOP(EnvExperiment):
|
class _PayloadNOP(EnvExperiment):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class DDSSetter(EnvExperiment):
|
class DDSSetter(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class TerminateAll(EnvExperiment):
|
class TerminateAll(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class AluminumSpectroscopy(EnvExperiment):
|
class AluminumSpectroscopy(EnvExperiment):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from artiq import *
|
from artiq.experiment import *
|
||||||
|
|
||||||
|
|
||||||
class SimpleSimulation(EnvExperiment):
|
class SimpleSimulation(EnvExperiment):
|
||||||
|
|
Loading…
Reference in New Issue