Commit Graph

720 Commits

Author SHA1 Message Date
301a0e6447 rpctool: import numpy 2015-04-21 15:57:25 +08:00
0c1d256fef comm_dummy: remove unneeded import 2015-04-19 11:41:20 +08:00
c98e08fe36 fix transforms unittest 2015-04-19 11:40:49 +08:00
0b8d496b62 coefficients: cleanup and refactor some code into CoefficientSource 2015-04-18 21:21:23 -06:00
60baed68b4 wavesynth: get coefficients.py into useable state
SplineSource() supports spline interpolating multi-channel tabular data,
cropping it and generating wavesynth compatible segment data from it.

ComposingSplineSource() needs some verification still.
2015-04-18 01:23:15 -06:00
Yann Sionneau
52fe66ee4d artiq_flash.sh: improve detection of flash proxy location
Flash proxy is now searched in ~/.migen /usr/local/share/migen
/usr/share/migen and in the directory specified by "-d" argument
or in artiq/binaries/<board_name>/ if "-d" is not specified.
2015-04-17 00:57:16 +08:00
546996f896 coredevice,runtime: put ref_period into the ddb 2015-04-16 15:15:38 +08:00
71167b8adf rtio: do not attempt latency compensation in gateware 2015-04-16 13:09:29 +08:00
6215d63491 rtio: do not create spurious CSRs when data_width/address_width is 0 2015-04-16 13:04:19 +08:00
26003781b4 rtio/rtlink: add 'like' methods to clone interfaces 2015-04-16 13:02:39 +08:00
30dffb6644 rtio/phy: add wishbone adapter 2015-04-15 20:39:40 +08:00
ecf6b29279 coredevice/rtio: minor docstring cleanup 2015-04-15 13:53:00 +08:00
c0213c9f69 artiq_flash.sh: add pipistrello 2015-04-14 22:37:08 -06:00
9795e83bfc pdq2: continue work on coefficients 2015-04-14 18:18:49 -06:00
6a0e97f161 pdq2: refactor program_frame(), cleanup test, stall correctly
Once the Sequencer ack's a line, the Parser starts preparing the
next one. This includes jumping through the frame table if necessary.
To stall the Parser while the Sequencer executes the last line of a
frame and to ensure that the frame select lines can be set up and their
sampling is synchronized to a trigger, we add a triggered stall line
at the end of the frame.

When that line is triggered the Parser jumps through the table and starts
parsing the first line of the next frame. We let the duration of this
last stall line be 10 cycles (200ns@50MHz) to be able to distinguish this
sampling of the frame select lines from the triggering of the first line
in the next frame.

frame           f
parser     n     f 0
stb        __---________---___
trigger    ___----_______----_
ack        ____-__________-___
sequencer  n-1 n          0
2015-04-14 18:18:16 -06:00
bc1acef355 test/pdq2: don't write vcd 2015-04-14 18:18:16 -06:00
4c10182c9f rtio: refactor, use rtlink 2015-04-14 19:44:45 +08:00
ff9a7727d2 rtio: add rtlink definition (currently unused) 2015-04-13 22:19:18 +08:00
07b8e1292f artiq_flash: fix stderr redirections 2015-04-11 23:43:33 +08:00
8a2b8fc634 artiq_flash: do not always assume permission problems 2015-04-11 22:54:17 +08:00
Yann Sionneau
8a3be4eca0 artiq_flash: add support for kc705 2015-04-11 22:38:11 +08:00
88e0aae16d coredevice: add comm_tcp 2015-04-10 01:22:03 +08:00
f427041ae9 coredevice/comm_serial: minor cleanup 2015-04-10 01:21:47 +08:00
cb2596bd81 coredevice/comm: split protocol to allow reuse for Ethernet 2015-04-10 00:59:35 +08:00
efd1c24ed7 frontend: add artiq_compile tool to build default experiment 2015-04-07 15:41:32 +08:00
ca89b6d0ed worker_db: support read-only mode 2015-04-07 15:40:57 +08:00
fda4ee1a83 coredevice: add compile method 2015-04-07 15:40:25 +08:00
5e046dc5ce artiq_run: move parse_arguments and get_experiment to tools 2015-04-07 13:04:47 +08:00
7e591bb1c7 targets: use _Peripherals/UP/AMP class names, share QC1 IO defs 2015-04-07 00:07:53 +08:00
1ed60e0829 gateware/amp: use new ModuleTransformer API 2015-04-06 23:54:53 +08:00
72f9f7ed79 runtime: implement mailbox, use it for kernel startup, exceptions and termination 2015-04-05 22:07:34 +08:00
7ea9250b31 wavesynth: interpolate->coefficients 2015-04-05 04:43:27 -06:00
0bab73eece wavesynth/compute_samples: fix list mutation bug 2015-04-05 18:41:06 +08:00
9fd4594c53 interpolate: refactor discrete_compensate 2015-04-05 04:32:23 -06:00
75dfa95b4d wavesynth: move test code to unittests, fix mutability style 2015-04-05 04:24:44 -06:00
3257275782 worker_db: get_logger -> getLogger 2015-04-05 18:02:07 +08:00
1d5f467da7 pdq2: implement changes in trigger/jump semantics, add unittest
The unittests now runs the compute_samples.Synthesizer against the actual
gateware and verifies similarity (up to integer rounding errors).
2015-04-05 03:55:54 -06:00
e870b27830 wavesynth: new semantics, fix compensation
* "trigger" now means that the corresponding line will only start
  once the trigger line is high.
* "jump" is implicit as the last line in a frame must jump back.
* spline coefficients are now compensated for finite time step size
2015-04-05 03:55:54 -06:00
1f545346e3 wavesynth: implement silence, add defaults, fix bias 2015-04-05 03:55:54 -06:00
051b01f58e wavesynth: refactor testing code 2015-04-05 03:55:54 -06:00
71b7fe38bc worker_impl: add missing import 2015-04-05 17:50:48 +08:00
9b46bc623a dbhub: do not use as context manager, turn close exceptions into warnings, do not close devices early in worker 2015-04-05 17:49:41 +08:00
0ec7e9a98c artiq_run: fix get_argparser() 2015-04-04 21:17:24 -06:00
1a1afd5410 artiq_run: refactor, support use from within experiments
You can always (under posix) use #!/usr/bin/env artiq_run as
shebang for experiments and make them executable.
Now, you can also do this (portable):

if __name__ == "__main__":
    from artiq.frontend.artiq_run import run
    run()

to make an experiment executable. The CLI options are all inherited.
Also:

* removed --elf: can be inferred from filename
* did some refactoring and cleanup
* use logging for all messages, except the result printing (use -v to get
parameter changes and dummy scheduler actions)
2015-04-04 20:51:48 -06:00
43893c6c1d worker_impl: use DBHub as context manager 2015-04-04 20:51:48 -06:00
7b86138fd2 DBHub: make it a context manager 2015-04-04 20:51:48 -06:00
d1653589f9 pdq2: spelling fix 2015-04-04 14:26:32 -06:00
16ff190731 pdq2: cleanup unittest 2015-04-04 14:26:32 -06:00
833178462d remove gpio driver 2015-04-04 22:06:54 +08:00
c6d3750076 runtime,amp: set kernel memory start to SDRAM+128K, use custom linker file to split memory 2015-04-03 16:03:38 +08:00
fb91955260 tests: make hardware-in-the loop flags positive logic
Explicitly having to disable unittests that require hardware
(ARTIQ_NO_HARDWARE) is cumbersome.
There is not even a sensible default for the
device or serial number of the devices requiring additional
variables (ARTIQ_LDA_DEVICE etc).

This patch reverts the logic by skipping unittests that
can not automatically determine whether the required hardware
is present and where it is.
2015-04-03 11:51:03 +08:00
Florent Kermarrec
2995f0a705 remove use of _r prefix on CSRs 2015-04-02 18:30:44 +08:00
5bd8d414cf gateware/amp: add kernel CPU and mailbox modules 2015-04-02 16:49:36 +08:00
Yann Sionneau
e7be00baa8 Add support for automatic build and upload of dev conda artiq packages to binstar by travis-ci
- SoC+BIOS are also built and integrated in the conda package
- artiq_flash.sh script is embedded to allow flashing ppro board
2015-03-30 19:51:52 +08:00
3108ffeef6 coredevice/comm_serial: use lazy formatting in logging 2015-03-27 18:54:19 +01:00
f4cb97b709 comm_serial: fix baud rate change logging 2015-03-25 17:57:53 -06:00
bd2f6ea9f9 thorlabs_tcube_controller: use simple_network_args 2015-03-25 16:20:08 +01:00
Yann Sionneau
5ca5a3602e novatech409b: cleanup 2015-03-25 16:11:11 +01:00
03139808bd [WIP] wavesynth/interpolate: wavesynth programming tools
* interpolate(t, v) will generate the channel data subset of a wavesynth
program

* still broken
2015-03-23 20:38:33 -06:00
6a0bc19279 pdq2/driver: document a few units 2015-03-23 20:31:37 -06:00
768fa21488 lda_controller: show default product type 2015-03-23 20:02:36 +01:00
bd145bbabc use %(default) in argparse 2015-03-23 20:02:14 +01:00
b597483913 thorlabs_tcube: spelling, fix ping 2015-03-23 17:24:12 +01:00
Yann Sionneau
91336f974d lda_controller: replace serial argument with device one 2015-03-23 17:02:39 +01:00
Yann Sionneau
2651050c83 Controller cleanups 2015-03-23 17:02:39 +01:00
0b174085c8 pdq2/mediator: rewrite, adapt to new PDQ RPC format, support anonymous segments, support uploading to controllers 2015-03-22 22:30:59 +01:00
c18efa11b3 wavesynth: fix frame/segment terminology 2015-03-22 10:56:34 +01:00
1b7f71bda9 controllers: consistent device/simulation specification 2015-03-22 00:48:15 +01:00
7e61f66493 pdq2/mediator: get pdq devices from pdb 2015-03-22 00:24:42 +01:00
8cb77b0336 pdq2: rename url parameter to device and require it 2015-03-21 00:33:50 -06:00
05781699b8 pdq2: driver and unittest
* parses wavesynth style programs
* verified with cosimulated gateware
2015-03-21 00:29:00 -06:00
200e20fb39 worker: close devices immediately after run and before analyze 2015-03-20 12:01:34 +01:00
577754c38f pdq2: fix argparser 2015-03-19 22:26:12 -06:00
222d0a9d37 pdq2_controller: add dump option 2015-03-19 21:38:46 -06:00
5ab3290ed4 pdq2: add refactored client code 2015-03-19 20:34:29 -06:00
fae7246f30 pdq2: merge from main pdq2 repo 2015-03-19 14:34:37 -06:00
2257cfa952 wavesynth/compute_samples/: demonstrate dds clear 2015-03-15 18:13:47 +01:00
40bd101de0 wavesynth/compute_samples/SplinePhase: fix reduction 2015-03-15 18:13:09 +01:00
1d0fde7f13 wavesynth: program decoding 2015-03-15 18:05:03 +01:00
327448977c wavesynth/compute_samples: use set_coefficients 2015-03-15 16:48:24 +01:00
0d8260af6e wavesynth: basic sample computation 2015-03-15 16:30:07 +01:00
2b3641ac0a db,worker: fix realtime result initialization 2015-03-13 15:12:55 +01:00
7a1d60ee15 coredevice,runtime,language: add parameters to runtime exceptions, include information with RTIO errors 2015-03-13 14:55:18 +01:00
84732a469d coredevice/gpio: fix indentation 2015-03-13 14:31:50 +01:00
3122623c6f rtio: make 63-bit timestamp counter the default [soc] 2015-03-12 13:13:35 +01:00
f158711f7e test/worker: test watchdog in build() 2015-03-11 19:07:04 +01:00
43a05c783d worker: split write_results action 2015-03-11 19:06:46 +01:00
4ba54ac929 test: do not close/recreate the asyncio event loop (WA for asyncio bugs when multiple tests are run) 2015-03-11 19:05:01 +01:00
e037b930d8 test: add worker unittest 2015-03-11 18:26:04 +01:00
5ca4821a29 ctlmgr: use workaround for asyncio.wait_for(process.wait()... Python bug 2015-03-11 16:48:16 +01:00
d5795fd619 master: watchdog support
Introduces a watchdog context manager to use in the experiment code that
terminates the process with an error if it times out. The syntax is:

with self.scheduler.watchdog(20*s):
   ...

Watchdogs timers are implemented by the master process (and the worker
communicates the necessary information about them) so that they can be
enforced even if the worker crashes. They can be nested arbitrarily.
During yields, all watchdog timers for the yielding worker are
suspended [TODO]. Setting up watchdogs is not supported in kernels,
however, a kernel can be called within watchdog contexts (and terminating
the worker will terminate the kernel [TODO]).

It is possible to implement a heartbeat mechanism using a watchdog, e.g.:

for i in range(...):
    with self.scheduler.watchdog(...):
        ....

Crashes/freezes within the iterator or the loop management would not be
detected, but they should be rare enough.
2015-03-11 16:43:14 +01:00
f2134fa4b2 master,worker: split prepare/run/analyze 2015-03-09 23:34:09 +01:00
4c280d5fcc master: use a new worker process for each experiment 2015-03-09 16:22:41 +01:00
ec1d082730 remove timeout from run_params (to be replaced by a better mechanism) 2015-03-09 10:51:32 +01:00
d95a9cac9a move realtime result registration into dbh, simplify syntax 2015-03-08 17:27:27 +01:00
f2e3dfb848 Experiment base class, replace __artiq_unit__ with docstring 2015-03-08 15:55:30 +01:00
407477bc5a test: add ARTIQ_NO_PERIPHERALS environment variable to disable tests requiring non-core devices 2015-03-08 11:40:50 +01:00
0f007cb1a7 language/db: remove implicit_core 2015-03-08 11:37:53 +01:00
ac697e3248 test/thorlabs_tcube: fix default serial port 2015-03-08 11:37:24 +01:00
28bce9ee40 artiqlib -> artiq.gateware 2015-03-08 11:00:24 +01:00
9fad01d967 test/thorlabs_tcube: fix test discovery and style 2015-03-04 23:53:49 +00:00
Yann Sionneau
c2831db253 thorlabs_tcube: add realistic values for status bits and dc status in driver sim 2015-03-04 23:45:22 +00:00
Yann Sionneau
5091098eb0 thorlabs_tcube: driver PEP8 fix 2015-03-04 23:45:21 +00:00
Yann Sionneau
bc19d6f7a8 thorlabs_tcube: add unit tests 2015-03-04 23:45:21 +00:00
Yann Sionneau
5b8691f7f5 thorlabs_tcube: fix driver spelling issues 2015-03-04 23:45:21 +00:00
Yann Sionneau
14c759ff89 add Thorlabs T-Cube NDSP 2015-03-04 14:30:49 +00:00
f307897bec units: fix strip_unit 2015-02-27 10:43:03 -07:00
0abd41a04a pc_rpc: trace support in server 2015-02-27 00:17:11 -07:00
3e46a36a4d lda: do not print attenuation value in simulation 2015-02-27 00:16:56 -07:00
ee9d616733 language/units: add strip_unit function 2015-02-26 23:31:07 -07:00
f855834810 gui/tools/DictSyncer: remove dead code 2015-02-26 22:10:53 -07:00
Yann Sionneau
b672a99174 lda: add support for ping 2015-02-26 09:30:30 -07:00
d51493fb5d language/core: fix interpreter implementations of time/cycle conversions 2015-02-25 21:15:46 -07:00
Yann Sionneau
1b5944257e units: add support for V (Volt) 2015-02-24 14:15:38 -07:00
Yann Sionneau
9485372277 units: add support for abs() on Quantity 2015-02-24 14:15:23 -07:00
651ed71b79 master: basic automatic experiment list 2015-02-21 20:34:31 -07:00
4267e0deab master,artiq_run: simplify unit autodetection 2015-02-21 20:26:58 -07:00
387de11e56 artiq_run: fix import 2015-02-21 20:09:46 -07:00
6601bebcfe master: make RIDs unique across restarts 2015-02-21 18:41:07 -07:00
ceb02b42cb master: use full year in result folder name 2015-02-21 18:34:31 -07:00
965dd89b61 master: reorganize result output code 2015-02-21 14:28:18 -07:00
1aec6a0462 master: name results 'year-month-day/hour-minute/runid-experiment' 2015-02-21 13:42:26 -07:00
cc172699ea master: use RID + unit class name for HDF5 filenames 2015-02-20 14:11:55 -07:00
65555a3a09 artiq_run,master: introduce __artiq_unit__ attribute to mark and name experiments 2015-02-20 14:01:34 -07:00
Yann Sionneau
5cfdac9c7c Lda: replace assert with direct exception raising 2015-02-20 10:21:15 -07:00
0dd5692c32 master,run: pass run_params to experiment 2015-02-19 20:05:12 -07:00
4d21b78314 master,client,gui: factor timeout into run_params 2015-02-19 20:03:55 -07:00
d01ba8e644 artiq_run: provide dummy scheduler API 2015-02-19 12:09:37 -07:00
c69c4d5ce9 master: expose scheduler API to experiments 2015-02-19 12:09:11 -07:00
9ffc370416 master,run: automatically call analyze function 2015-02-19 09:40:15 -07:00
5bb6a3d8a6 style 2015-02-18 11:34:00 -07:00
de4a15c315 lda: add unit tests 2015-02-18 11:33:25 -07:00
05824fd3be lda: style 2015-02-18 11:31:44 -07:00
Yann Sionneau
dc132bd248 lda: fixes 2015-02-18 11:23:24 -07:00
Yann Sionneau
3c50610f3d pyon: bytes support 2015-02-18 11:19:03 -07:00
e10390d142 coredevice: add get_rtio_time 2015-02-18 09:56:30 -07:00
ec84726858 py2llvm: support conversion of fractions to float 2015-02-18 09:56:07 -07:00
d484b3a548 tools: add missing import 2015-02-18 08:52:31 -07:00
3543dc30c7 Revert "tools/file_import: use python 3.4 importlib API"
This reverts commit 614a96a3d7.

Conflicts:
	artiq/tools.py
2015-02-18 08:51:44 -07:00
170a626c76 tools/file_import: support import of modules importing from their directory 2015-02-17 16:13:00 -07:00
656099a331 artiq_run: sort result output alphabetically 2015-02-17 16:12:21 -07:00
614a96a3d7 tools/file_import: use python 3.4 importlib API 2015-02-17 13:07:09 -07:00
4558fb3e33 clarify controller terminology 2015-02-16 08:57:15 -07:00
61dc177bce units: support direct float conversion 2015-02-16 07:48:05 -07:00
021d0d312e novatech409b: do not specify type info in docstrings 2015-02-16 04:43:30 -07:00
8c4fb2d534 novatech409b: add sim mode help 2015-02-16 04:39:41 -07:00
17611e9899 lda_controller: add description 2015-02-15 17:32:08 -07:00
Joe Britton
a3494c57cc add Novatech 409B controller 2015-02-15 17:31:37 -07:00
e196ef9c48 lda_controller: style 2015-02-15 15:00:55 -07:00
17596f4ad8 tools,frontend: print default ports 2015-02-15 14:58:57 -07:00