Commit Graph

462 Commits

Author SHA1 Message Date
whitequark
ac9e8b8568 test: avoid underflow in DMA replay test. 2017-03-17 12:09:02 +00:00
whitequark
dbea679e96 Revert "test: relax test_rpc_timing on Windows."
This reverts commit e9cf451c0b.
2017-03-17 11:34:45 +00:00
whitequark
e9cf451c0b test: relax test_rpc_timing on Windows. 2017-03-17 11:20:16 +00:00
whitequark
7dc7dcda2c test: relax test_pulse_rate_dds to only catch catastrophic slowdown. 2017-03-17 11:17:47 +00:00
f121ca20fe test: relax test_pulse_rate_dds 2017-03-03 18:10:27 +08:00
whitequark
a4ece19614 Implement DMA playback. 2017-02-28 21:28:40 +00:00
9cfa3e704b fix test_analyzer 2017-02-27 19:19:46 +08:00
3b386aa590 fix test_moninj import 2017-02-27 18:44:32 +08:00
7d6ebabc1b reorganize core device communication code 2017-02-27 18:37:30 +08:00
d16073fcaa test: add moninj unittest 2017-02-27 15:56:58 +08:00
whitequark
3a1f14c16c compiler: fix overly strict constness analysis.
Before this commit, the following code would fail to compile...
  obj.foo.bar = True
... if foo is marked kernel_invariant in obj, even if bar is not
marked as such in obj.foo.
2017-02-26 01:58:21 +00:00
whitequark
d04e611232 firmware, compiler: rename rpc functions to be more consistent. 2017-02-25 14:12:58 +00:00
whitequark
25c9b8827a firmware: mark __artiq_{re,}raise as #[unwind].
This is required for correctness.
2017-02-05 09:04:22 +00:00
whitequark
f94028b8df Fix c39394b. 2017-02-04 16:23:32 +00:00
whitequark
c39394b4d5 firmware: port the exception handling routines to Rust. 2017-02-04 08:21:07 +00:00
whitequark
b9cbedceb1 firmware: migrate last vestiges of the old runtime build system. 2017-02-03 12:59:35 +00:00
whitequark
fd8b11532f compiler, firmware: use Pascal strings everywhere.
This removes a large amount of very ugly code, and also simplifies
the compiler and runtime.
2017-02-03 11:53:27 +00:00
whitequark
9c93c760fc firmware: do not use PIC in Rust code.
This fixes test_pulse_rate and test_pulse_rate_dds by making
rtio_output slightly faster.
2017-02-02 12:22:55 +00:00
whitequark
0df8a24135 Fix c2cf60e. 2017-02-02 01:08:20 +00:00
whitequark
ab71c9a0ba compiler: the len builtin is not polymorphic, coerce the result.
Fixes #659.
2017-01-31 21:28:20 +00:00
whitequark
2f37b1d1c0 compiler: support methods defined on singleton instances.
Fixes #638.
2017-01-30 10:10:21 +00:00
657afd770e artiq/test/gateware -> artiq/gateware/test
This allows gateware simulations to be skipped or not considered for coverage when using test discovery.
2017-01-30 09:00:55 +08:00
whitequark
609fd3d902 test: skip test_clock_generator_loopback as well.
Both tests pass locally, which means there's some conda screwup
that prevents them from working on CI.
2017-01-27 11:47:26 +00:00
whitequark
c529cefc89 conda: bump llvmlite-artiq dependency. 2017-01-27 11:14:53 +00:00
whitequark
477664f931 test: temporarily skip pulse_rate_dds. 2017-01-26 20:53:30 +00:00
whitequark
0b67396630 test: convert test_pulse_rate_dds to use mu.
Before this commit, this test was actually measuring soft-FP
performance.
2017-01-25 11:26:30 +00:00
043780d603 drtio: fix DRTIOSatellite invokation in test 2017-01-15 17:30:02 -06:00
6805feb494 drtio: report truncated packets 2017-01-12 23:44:45 -06:00
e624f45369 drtio: remove FIFO empty local detection optimization
It optimizes a marginal case, it is difficult to get right
(need to know the size of the FIFO for each channel), and
it adds complexity and potential bug sources.
2017-01-10 14:31:46 -06:00
8be9a827ba test: move dsp tests into their own folder 2017-01-05 18:25:38 +01:00
f5f662200b fir: streamline, optimize DSP extraction, left-align inputs 2016-12-20 21:39:51 +01:00
jboulder
baac555f96 add device for Korad KA3005P programmable DC power supply 2016-12-19 09:31:21 +01:00
15b48be6e4 test/sawg: adapt to new latency spec 2016-12-14 19:43:30 +01:00
7be27d7116 fir: add upsample transfer function test 2016-12-14 19:16:07 +01:00
3b5abae935 drtio: fix clock domain conflict 2016-12-13 14:19:49 +08:00
c63fa46430 Merge branch 'phaser2'
* phaser2: (157 commits)
  sawg/hbf: tweak pipeline for timing
  fir: register multiplier output
  conda/phaser: build-depend on numpy
  sawg: reduce coefficient width
  sawg: fix latency
  test/fir: needs mpl. don't run by default
  test/sawg: patch spline
  sawg: use ParallelHBFCascade to AA [WIP]
  fir: add ParallelHBFCascade
  fir: add ParallelFIR and test
  gateware/dsp: add FIR and test
  README_PHASER: update
  sawg: documentation
  sawg: extract spline
  sawg: document
  sawg: demo_2tone
  sawg: round to int64
  gateware/phaser -> gateware/ad9154_fmc_ebz
  phaser: fix typo
  sawg: merge set/set64
  ...
2016-12-12 17:31:39 +01:00
4b61020b27 drtio: reset more local state 2016-12-12 18:48:10 +08:00
f4ceace253 test/fir: needs mpl. don't run by default 2016-12-08 15:49:50 +01:00
efc95043c4 test/sawg: patch spline 2016-12-08 15:49:23 +01:00
a629eb1665 fir: add ParallelHBFCascade 2016-12-08 15:30:26 +01:00
d303225249 fir: add ParallelFIR and test 2016-12-08 15:21:04 +01:00
7e0f3edca5 gateware/dsp: add FIR and test 2016-12-07 19:14:23 +01:00
eb8d630148 rtio: test DMA RTIO wait state 2016-12-05 18:01:48 +08:00
75ea13748a rtio: fix DMA data MSB and stop signaling, self-checking unittest 2016-12-05 18:01:48 +08:00
43a5455058 rtio: DMA unittest WIP 2016-12-05 18:01:48 +08:00
74fe5c3ef0 test: make gateware simulations discoverable 2016-12-05 18:01:48 +08:00
whitequark
b5a684830d compiler: fix parsing of TList annotations (fixes #632). 2016-12-05 03:18:56 +00:00
88ad054ab6 Merge branch 'drtio' 2016-12-03 23:25:17 +08:00
a324f4faa1 Merge remote-tracking branch 'm-labs/master' into phaser2
* m-labs/master:
  compiler: monomorphize int64(round(x)) to not lose precision.
2016-12-02 18:11:29 +01:00
whitequark
68de724554 compiler: monomorphize int64(round(x)) to not lose precision.
This applies to any expression with an indeterminate integer type
cast to int64(), not just round().
2016-12-02 15:02:44 +00:00
6e9bc7c05d sawg: merge set/set64 2016-12-01 16:45:54 +01:00
93a853a0e0 test/sawg: non trivial coarse_ref_period 2016-12-01 16:00:06 +01:00
01057dfb6d test/sawg: check 48 bit frequency 2016-11-30 11:21:25 +01:00
ea04fb2704 test/sawg: skip 2tone demo test 2016-11-30 11:02:41 +01:00
ed6d1e73cc sawg: cleanup 2016-11-30 10:52:35 +01:00
dbf72f5fde sawg: extend unittests 2016-11-29 20:52:51 +01:00
4f813c4977 test/sawg: rtio_output_wide fixes 2016-11-29 18:11:38 +01:00
313aa32779 sawg: artiq-python list scoping 2016-11-29 17:20:02 +01:00
23fd225947 sawg: spline knot packing/conversion, unittest 2016-11-29 14:49:07 +01:00
b2450c7c56 drtio: test large data 2016-11-27 12:57:12 +08:00
d381dd5384 drtio: remove stale signal from test 2016-11-25 18:33:55 +08:00
8b736ddbc9 drtio: update test 2016-11-24 00:37:53 +08:00
6799bb097a sawg: adapt to int32/int64 change 2016-11-22 11:57:34 +01:00
3459793586 Merge branch 'master' into drtio 2016-11-22 15:15:22 +08:00
4160490e0a Merge branch 'phaser' into phaser2
* phaser: (23 commits)
  RELEASE_NOTES: update
  pipistrello: add some inputs
  Remove last vestiges of nist_qc1.
  Fully drop AD9858 and kc705-nist_qc1 support (closes #576).
  coredevice.dds: reimplement fully in ARTIQ Python.
  compiler: unbreak casts to int32/int64.
  analyses.constness: fix false positive on x[...].
  inferencer: significantly improve the op-assignment diagnostic.
  Fix tests.
  Move mu_to_seconds, seconds_to_mu to Core.
  artiq_devtool: don't crash on invalid utf-8.
  artiq_devtool: detect a race condition during connect.
  llvm_ir_generator: handle no-op coercions.
  conda: use development version of migen/misoc
  Revert accidentally committed code.
  Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623"
  analyses.invariant_detection: implement (#622).
  Fix whitespace.
  coredevice.dds: work around the round(numpy.float64()) snafu.
  coredevice.dds: update from obsolete int(width=) syntax (fixes #621).
  ...
2016-11-21 17:29:46 +01:00
f7e8961ab0 Merge branch 'master' into phaser
* master: (23 commits)
  RELEASE_NOTES: update
  pipistrello: add some inputs
  Remove last vestiges of nist_qc1.
  Fully drop AD9858 and kc705-nist_qc1 support (closes #576).
  coredevice.dds: reimplement fully in ARTIQ Python.
  compiler: unbreak casts to int32/int64.
  analyses.constness: fix false positive on x[...].
  inferencer: significantly improve the op-assignment diagnostic.
  Fix tests.
  Move mu_to_seconds, seconds_to_mu to Core.
  artiq_devtool: don't crash on invalid utf-8.
  artiq_devtool: detect a race condition during connect.
  llvm_ir_generator: handle no-op coercions.
  conda: use development version of migen/misoc
  Revert accidentally committed code.
  Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623"
  analyses.invariant_detection: implement (#622).
  Fix whitespace.
  coredevice.dds: work around the round(numpy.float64()) snafu.
  coredevice.dds: update from obsolete int(width=) syntax (fixes #621).
  ...
2016-11-21 17:29:39 +01:00
whitequark
55ea68da7f compiler: unbreak casts to int32/int64. 2016-11-21 14:20:28 +00:00
whitequark
35f4449ef2 inferencer: significantly improve the op-assignment diagnostic.
Before this commit, it displayed incorrect output if an error
appeared on 2nd run and beyond, and displayed messages for trying
to do "num32 -= num64" that made very little sense.
2016-11-21 14:20:24 +00:00
b226dbd257 sawg: unittest data format 2016-11-21 12:35:57 +01:00
whitequark
3485c83429 Fix tests. 2016-11-21 06:40:47 +00:00
whitequark
009d396740 Move mu_to_seconds, seconds_to_mu to Core. 2016-11-21 05:37:30 +00:00
whitequark
7af41bd29c llvm_ir_generator: handle no-op coercions. 2016-11-21 02:25:34 +00:00
d678bb3fb6 phaser: update sawg tests 2016-11-18 15:23:56 +01:00
bb047aabe9 drtio: simpler link layer 2016-11-17 22:32:39 +08:00
424a1f8f4e dsp: move test tools 2016-11-16 13:39:19 +01:00
09363e1da8 drtio: aux controller unittest 2016-11-16 19:45:28 +08:00
7fa9a4efc3 drtio: aux controller unittest WIP 2016-11-15 12:02:53 +08:00
b9ce2bb1f0 Merge branch 'phaser' into phaser2
* phaser: (127 commits)
  phaser: use misoc cordic
  phaser: fix DDS dummy cfg
  runtime: disable the Nagle algorithm entirely.
  runtime: buffer RPC send packets.
  runtime: don't print debug messages to the UART.
  runtime: print microsecond timestamps in debug messages.
  artiq_devtool: abort if build failed.
  conda: bump llvmlite-artiq dep.
  conda: bump llvmlite-artiq dep.
  llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
  artiq_devtool: more robust port forwarding.
  setup: remove paramiko dependency (optional and developer-only)
  artiq_devtool: implement.
  artiq_compile: actually disable attribute writeback.
  conda: use pythonparser 1.0.
  conda: tighten pythonparser dependency (fixes #600).
  doc: clarify kernel_invariant doc (fixes #609).
  compiler: Emit all-kernel_invariant objects as LLVM constants
  conda: update for LLVM 3.9.
  add has_dds, use config flags
  ...
2016-11-13 17:30:37 +01:00
aedb6747f2 Merge branch 'master' into phaser
* master: (47 commits)
  runtime: disable the Nagle algorithm entirely.
  runtime: buffer RPC send packets.
  runtime: don't print debug messages to the UART.
  runtime: print microsecond timestamps in debug messages.
  artiq_devtool: abort if build failed.
  conda: bump llvmlite-artiq dep.
  conda: bump llvmlite-artiq dep.
  llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
  artiq_devtool: more robust port forwarding.
  setup: remove paramiko dependency (optional and developer-only)
  artiq_devtool: implement.
  artiq_compile: actually disable attribute writeback.
  conda: use pythonparser 1.0.
  conda: tighten pythonparser dependency (fixes #600).
  doc: clarify kernel_invariant doc (fixes #609).
  compiler: Emit all-kernel_invariant objects as LLVM constants
  conda: update for LLVM 3.9.
  add has_dds, use config flags
  Revert "Revert "Revert "Revert "Update for LLVM 3.9.""""
  Revert "Revert "Revert "Update for LLVM 3.9."""
  ...
2016-11-13 16:54:28 +01:00
whitequark
feed91d8b2 runtime: buffer RPC send packets.
This brings mean RPC time from ~45ms to ~2ms.

The cause of the slowness without buffering is, primarily, that lwip
is severely pessimized by small writes, whether with Nagle on or off.
(In fact, disabling Nagle makes it function *better* on many small
writes, which begs the question of what's the point of having Nagle
there in the first place.) In practical terms, the slowness appears
only when writing a 4-byte buffer (the synchronization segment);
writing buffers of other sizes does not trigger the problem.

This all is extremely confusing and the fix is partly palliative,
but since it seems to work reliably and we're migrating off lwip
I think it is unwise to spend any more time debugging this.
2016-11-12 23:06:33 +00:00
David Nadlinger
bfbdba9205 compiler: Emit all-kernel_invariant objects as LLVM constants
This enables constant propagation optimisations, as verified by
the included test case. This is only a first stop-gap measure, though;
we should support optimisation based on kernel invariants on a more
fine-grained level.
2016-11-09 14:50:48 +00:00
863934c4fa drtio: more reliable link layer init 2016-11-09 22:03:47 +08:00
c4cd269afc Merge branch 'master' into drtio 2016-11-06 00:13:32 +08:00
David Nadlinger
7dcc987dd7 compiler: Fix break/continue targets in loop else blocks
Previously, they would still target the respective labels in the
just-exited loop.

Signed-off-by: David Nadlinger <code@klickverbot.at>
2016-11-05 02:35:01 +00:00
5019b03f10 drtio: add echo and packet count test 2016-11-04 22:24:35 +08:00
df7294792c drtio: break some RT features into manager, add echo request CSR 2016-11-04 19:38:24 +08:00
747da3da15 drtio: differentiate local and remote unknown packet type errors 2016-11-04 15:17:19 +08:00
a4ba34bb2c drtio: cleanup test_full_stack 2016-11-03 20:13:31 +08:00
whitequark
6fcd57a41a runtime: fix remaining async RPC bugs. 2016-11-01 10:33:57 +00:00
07ad00c1ca drtio: split kernel/system CSRs 2016-10-31 18:09:36 +08:00
whitequark
cd68577dbc compiler: add support for async RPCs. 2016-10-30 00:57:31 +00:00
95def81c03 drtio: squelch frame signals until link layer ready 2016-10-29 17:05:30 +08:00
6d07a16c62 Merge branch 'master' into phaser
* master: (72 commits)
  gateware: extend mailbox to 3 entries.
  master/worker_db: set default value for archive
  master: keep dataset manager consistent when set_dataset is called with contradictory attributes
  master: archive input datasets. Closes #587
  master: ensure same dataset is in broadcast and local when mutating
  scheduler: default submission arguments, closes #577
  pdq2: sync with pdq2
  doc: clarify usage of pause/check_pause, closes #571
  dashboard/datasets: use scientific spinbox and increase number of decimals, closes #572
  gateware/spi: fix import
  runtime: fix use of $(realpath) in Makefile.
  test: fix printf specifier.
  llvm_ir_generator: make sure RPC allocations are not underaligned.
  runtime: use i64 for watchdog timeout, not i32.
  runtime: port ksupport to Rust.
  runtime: remove some redundant libm functions copied inline.
  language: Add "A" (ampere) as well-known unit for arguments
  conda: misoc 0.4 (csr)
  runtime: cap log level at debug.
  runtime: discard unnecessary sections.
  ...
2016-10-28 01:40:11 +02:00
9bbc6eb0ef drtio: more full stack testing 2016-10-26 22:04:32 +08:00
7f8e53aa5c drtio: more fixes and tests 2016-10-26 11:48:47 +08:00
22173b8c70 drtio: full stack unittest 2016-10-26 00:35:22 +08:00
ad042de954 drtio: fixes, basic TTL working in simulation 2016-10-25 12:41:16 +08:00
d2f776b0d0 phaser: add more tools 2016-10-24 17:39:14 +02:00
94e68dbae4 drtio: test_full_stack (WIP) 2016-10-24 23:36:33 +08:00
1e313afe64 drtio: CrossDomainNotification 2016-10-21 22:45:45 +08:00