2
0
mirror of https://github.com/m-labs/artiq.git synced 2024-12-19 00:16:29 +08:00
Commit Graph

1929 Commits

Author SHA1 Message Date
whitequark
ff3206be07 compiler.embedding: treat RPC methods like any others (fixes #211). 2015-12-30 14:21:09 +08:00
whitequark
14484216ec transforms.cfg_simplifier: handle phi and branch_if properly. 2015-12-30 12:10:28 +08:00
04b0db1a91 targets/kc705: pre-divide input RTIO clock to improve non-50% duty cycle tolerance 2015-12-29 17:00:57 +08:00
aa29defd02 test/coredevice/test_pulses: fix first_timestamp 2015-12-29 12:43:53 +08:00
whitequark
9d7d614139 test.coredevice.rtio.CoredeviceTest.test_time_keeps_running: relax timing.
Testing ARTIQ over an SSH channel to Hong Kong is slow.
2015-12-29 02:57:33 +08:00
whitequark
8fb6d4cdb4 coredevice.comm_generic: handle RPC default args correctly. 2015-12-29 02:54:34 +08:00
whitequark
0dd71946b9 test.coredevice.portability.HostVsDeviceCase.test_exceptions: update.
TypeError would never be raised with the new compiler.
It crashes in a different way now.
2015-12-29 02:18:38 +08:00
whitequark
db05ec0277 test.coredevice.portability.HostVsDeviceCase.test_misc: update.
It crashes in a different way now.
2015-12-29 02:15:57 +08:00
whitequark
8822db089f transforms.cfg_simplifier: implement.
This allows error reporting in LocalAccessValidator to proceed
even when the predecessor is an empty block with only a branch.
2015-12-29 02:15:57 +08:00
whitequark
57ebd57ddb transforms.dead_code_eliminator: update doc. 2015-12-29 02:15:57 +08:00
70dfad08e3 applets: add XY/histogram plot demo 2015-12-28 16:48:31 +08:00
c9da5f4ecb frontend: bind v4 and v6 localhost addresses by default, support multiple bind 2015-12-27 18:03:13 +08:00
bea1182aca sim/devices/core: adapt to _ARTIQEmbeddedInfo 2015-12-27 11:56:01 +08:00
b5253e1353 coredevice/analyzer: decode log messages 2015-12-27 01:28:34 +08:00
048dcbee92 runtime/rtio: reverse char ordering in log messages 2015-12-27 01:07:18 +08:00
50a463a6fd runtime: support for RTIO logging 2015-12-26 22:44:50 +08:00
ba6c527819 gateware/targets: add RTIO log channels 2015-12-26 22:44:01 +08:00
080752092c gateware/rtio: add LogChannel 2015-12-26 22:43:28 +08:00
9ba8dfbf23 gateware/rtio/core: avoid potential python bug 2015-12-26 22:11:57 +08:00
24fa74a8ab coredevice/analyzer: support TTL clockgen 2015-12-26 21:51:37 +08:00
1c36ae0672 coredevice/analyzer: support TTL inputs 2015-12-26 21:24:53 +08:00
7eb4067477 test/coredevice/analyzer: test TTL input mode 2015-12-26 21:10:19 +08:00
whitequark
82ec76af3e compiler.types: fix TFunction internal field order (closes #208). 2015-12-26 18:08:51 +08:00
a871194ee4 coredevice/analyzer: prefix channel names with their types 2015-12-26 17:47:53 +08:00
2b70fa14a6 coredevice/analyzer: update rtio_slack on output messages only 2015-12-26 17:47:08 +08:00
whitequark
b931096ec3 transforms.artiq_ir_generator: fix While codegen (closes #207). 2015-12-26 17:24:05 +08:00
whitequark
502e570e86 compiler: embed host exception constructors as such (fixes #204). 2015-12-26 03:17:29 +08:00
whitequark
8051fe9592 Commit missing parts of 082e9e20dd. 2015-12-26 03:16:50 +08:00
whitequark
082e9e20dd compiler: do not associate SSA values with iodelay even when inlining.
Fixes #201.
2015-12-25 15:02:33 +08:00
whitequark
33c3b3377e ir: keep loc when copying. 2015-12-25 14:59:28 +08:00
whitequark
690b2fd034 transforms.artiq_ir_generator: fix optarg codegen (closes #205). 2015-12-25 12:40:45 +08:00
cd8eccfd46 coredevice/analyzer: add rtio_slack channel 2015-12-25 00:40:47 +08:00
7475b3813e test/coredevice: PEP8 2015-12-24 19:26:42 +08:00
bf1a3a5b8f test/coredevice: add analyzer unittest 2015-12-24 19:25:29 +08:00
5f3b69dd19 frontend/coreconfig: simplify action names 2015-12-24 18:54:23 +08:00
179c50480f frontend: split coretool into coreconfig, corelog and coreanalyzer 2015-12-24 18:51:11 +08:00
e41e2c088d analyzer: encapsulate decoded dump, get onehot sel from header 2015-12-24 00:31:21 +08:00
4be5df9802 coredevice/analyzer: DDS decoding 2015-12-23 18:57:53 +08:00
58d0e2c0b8 coredevice/analyzer: log TTL decoding in debug mode 2015-12-23 18:56:23 +08:00
e4d73c0302 artiq/coredevice/dds: fix dds_set signature 2015-12-23 17:25:31 +08:00
b4b0dcc5d1 test/coredevice/rtio: remove obsolete functions 2015-12-22 12:11:13 +08:00
f6522922f8 coredevice/exceptions: PEP8 2015-12-22 12:03:11 +08:00
23355d8eff coredevice: restore RTIOCollisionError 2015-12-22 11:59:18 +08:00
fc299ca918 language/environment: disable processors by default 2015-12-22 11:45:34 +08:00
whitequark
a250b5da21 language.core: implement round(value, width) (fixes #203). 2015-12-22 11:26:49 +08:00
whitequark
25188f0ca9 transforms.interleaver: correctly handle degenerate with parallel: blocks. 2015-12-21 21:32:48 +08:00
whitequark
ac5c86bfdc artiq_compile: add missing import. 2015-12-21 21:15:18 +08:00
whitequark
f957be4e6f transforms.llvm_ir_generator: handle loop instruction (fixes #202). 2015-12-21 21:12:17 +08:00
007a7170e1 analyzer: report DDS channel number 2015-12-21 18:37:53 +08:00
8691f69a3c gateware/rtio/analyzer: suppress spurious initial reset messages 2015-12-21 18:32:08 +08:00
e87436fc03 coredevice/analyzer: remove zero-timestamp msg filtering (now unnecessary) 2015-12-21 11:15:58 +08:00
183e855229 remove workaround_asyncio263 2015-12-20 23:26:48 +08:00
2ae63570dd frontend/coretool: verbosity control 2015-12-20 23:17:31 +08:00
5769107936 gateware/rtio: keep counter clock domain transfer active during CSR reset 2015-12-20 22:12:34 +08:00
b96e0d241e coredevice/analyzer: set VCD timescale 2015-12-20 22:06:07 +08:00
4b5c10b641 coredevice/core: remove default period 2015-12-20 22:05:52 +08:00
cdcb57effe coredevice/analyzer: basic VCD writing 2015-12-20 19:32:52 +08:00
whitequark
e4615e7b37 transforms.int_monomorphizer: visit children of CallT. 2015-12-20 18:07:31 +08:00
46f59b673f coredevice: analyzer message decoding 2015-12-20 14:34:16 +08:00
whitequark
d5216879d4 runtime: implement round() (fixes #198).
From https://github.com/bpowers/musl/blob/master/src/math/round.c.
2015-12-20 04:06:11 +08:00
whitequark
54aeb5030d transforms.int_monomorphizer: also monomorphize round() calls (#198). 2015-12-20 02:36:30 +08:00
whitequark
95af6daa28 transforms.inferencer: accept round(width=n) form (#198). 2015-12-20 01:02:57 +08:00
1638f0fa9b gateware/rtio/analyzer: fix event ordering 2015-12-19 17:04:30 +08:00
whitequark
afee03b89c Commit missing parts of 4fb1de33. 2015-12-19 06:41:32 +08:00
whitequark
4fcd6abc5e Commit missing parts of 0395efd4. 2015-12-19 06:33:29 +08:00
whitequark
4fb1de33c9 Initial invocation of a @kernel function can now return a value (fixes #197). 2015-12-19 05:26:18 +08:00
whitequark
e9afe5a93b runtime: include __powidf2. 2015-12-19 00:14:51 +08:00
whitequark
0395efd479 compiler: give environment types in LLVM IR readable names. 2015-12-18 23:41:51 +08:00
whitequark
baa986aa32 compiler.prelude: add @portable as an alias for @kernel. 2015-12-18 23:00:29 +08:00
whitequark
7b3ace2e30 transforms.inferencer: fix unsupported decorator diagnostic when embedding.
decorator.loc points to the quoted object with a synthesized location,
and it's not really worth refactoring when we can just point at the @.
2015-12-18 22:58:17 +08:00
whitequark
0755aa38ff transforms.iodelay_estimator: allow goto in zero-iodelay while statements. 2015-12-18 21:14:40 +08:00
whitequark
2759310662 transforms.iodelay_estimator: reject control flow in 'with parallel:' (fixes #195). 2015-12-18 21:02:53 +08:00
64ad38854b gateware/rtio/analyzer: fix exception message layout 2015-12-18 18:27:06 +08:00
10d4bfba38 frontend/coretool: basic analyzer dump 2015-12-18 18:23:16 +08:00
0832c71a66 coredevice/comm_tcp: support retrieving analyzer data 2015-12-18 18:22:50 +08:00
whitequark
52102a1a79 Fix handling of default values for RPC arguments (fixes #190). 2015-12-18 18:03:07 +08:00
whitequark
f4b19fee5c compiler.types: make TValue hashable. 2015-12-18 17:31:20 +08:00
whitequark
3fbee2707b analyses.domination: consider unreachable blocks dominated by any other.
As a result, the dominator tree can now process arbitrary (reducible)
CFGs and we do not run DCE before analyses, risking loss of
correspondence to the AST, which would arbitrarily silence analyses.
2015-12-18 16:39:52 +08:00
59a3ea4f15 gateware/rtio/analyzer: fix bus write 2015-12-18 15:44:20 +08:00
f431add20e runtime/analyzer: fix zero data corner case, handle cache 2015-12-18 15:17:22 +08:00
b3abc9baf9 runtime/net_server: fix PCB filter 2015-12-18 01:14:57 +08:00
80172f9548 frontend/coretool: minor cleanup 2015-12-18 00:18:39 +08:00
73794b5c25 runtime: send analyzer data 2015-12-18 00:13:22 +08:00
6ae41e6024 runtime/net_server: refactor to support multiple services 2015-12-17 16:55:39 +08:00
whitequark
8cb7844621 transforms.interleaver: unroll loops. 2015-12-17 00:52:22 +08:00
whitequark
5dd1fc993e transforms.dead_code_eliminator: also remove dead instructions. 2015-12-17 00:52:22 +08:00
5e38cad64c test/coredevice: partial update to new APIs 2015-12-16 19:45:57 +08:00
whitequark
2570932264 transforms.interleaver: don't fail on delay-free loops/conditionals. 2015-12-16 19:26:17 +08:00
whitequark
69cdeaf706 transforms.interleaver: don't fail on degenerate parallel blocks. 2015-12-16 19:26:17 +08:00
4def561710 targets: integrate RTIO analyzer 2015-12-16 17:36:52 +08:00
afaad270cc rtio/analyzer: fix superficial mistakes 2015-12-16 17:36:36 +08:00
whitequark
f8eaeaa43f compiler: explicitly represent loops in IR. 2015-12-16 15:33:26 +08:00
33860820b9 gateware/soc: use new SDRAM API call 2015-12-16 14:59:35 +08:00
whitequark
35acc33ef6 validators.escape: don't fail on quoted values in lhs. 2015-12-16 13:57:02 +08:00
whitequark
8751d2ee6c Delay.{expr→interval}. 2015-12-16 13:57:02 +08:00
bf29e8ddc6 kc705: make config[] usage consistent 2015-12-15 12:14:30 -07:00
4362f97d67 gateware/rtio/analyzer: complete, untested 2015-12-14 23:53:14 +08:00
whitequark
e755e1ba9e validators.escape: support arrays in multiple assignment. 2015-12-14 16:31:03 +08:00
whitequark
1860364778 protocols.pyon: support artiq.int (fixes #188). 2015-12-14 16:26:02 +08:00
b5f2e178f6 rtio/analyzer: message encoder 2015-12-14 00:37:08 +08:00
eac2e2ad0b gui/experiments: fix Qt compatibility issue with QHeaderView.setResizeMode 2015-12-13 19:32:17 +08:00
eeb53c5aa5 coredevice/comm: compare software and gateware versions. Closes #97 2015-12-11 22:56:40 +08:00
0eb8079b45 gui: fix some dock sizing issues 2015-12-11 00:20:20 +08:00
whitequark
25027f6907 compiler: fix tests. 2015-12-10 23:16:36 +08:00
whitequark
2d906daf7f compiler: implement 'with watchdog' support. 2015-12-10 23:11:00 +08:00
whitequark
64f19b84f2 compiler.testbench.llvmgen: fix. 2015-12-10 23:08:05 +08:00
whitequark
4888e897b9 compiler: refactor to use builtins.TInt{32,64}. (NFC) 2015-12-10 23:06:23 +08:00
whitequark
143bae4bd3 compiler.builtins: {fn→obj}_{serial,parallel}. 2015-12-10 23:03:28 +08:00
whitequark
c660028abf transforms.llvm_ir_generator: fix reraise inside EH block. 2015-12-10 23:02:32 +08:00
whitequark
3ec9b677b2 Revert "transforms.artiq_ir_generator: treat builtins in 'with' syntactically."
This reverts commit ccc993071b.
2015-12-10 22:25:15 +08:00
whitequark
ccc993071b transforms.artiq_ir_generator: treat builtins in 'with' syntactically. 2015-12-10 21:29:16 +08:00
whitequark
22dab0c7cc compiler: clarify confusing comment (NFC). 2015-12-10 20:50:28 +08:00
93317d48c9 gui/explorer: file selector for experiments outside repos 2015-12-09 19:13:57 +08:00
7b2580583a master: allow remote listing of directories 2015-12-08 19:24:04 +08:00
ed08352f67 gui: improve error handling 2015-12-08 18:58:20 +08:00
0da89557da gui: basic support for opening files outside repository 2015-12-08 17:52:38 +08:00
238ee9adb4 gui/experiments: support recomputing all arguments of an experiment 2015-12-07 00:55:32 +08:00
5e14afde3e scheduler: use current (last scanned) repo revision instead of HEAD 2015-12-06 19:00:41 +08:00
f99c53d179 client: block until end of repository scan 2015-12-06 18:41:20 +08:00
ea6dcb2743 master: repository -> experiment_db 2015-12-06 18:39:27 +08:00
8467013160 master,gui: support recomputation+reset of arguments 2015-12-06 17:27:15 +08:00
1cba685326 gui/experiments: fix StringEntry update 2015-12-06 17:21:53 +08:00
3edf52232c protocols/pc_rpc: support coroutine methods 2015-12-06 12:52:41 +08:00
e8bd24d539 gui/experiments: add argument recompute buttons. Closes #171 2015-12-05 17:51:12 +08:00
2871b5e078 gui: typos 2015-12-05 14:47:20 +08:00
7886827b80 CSRConstant: also port DDS constants 2015-12-04 18:27:59 +08:00
5db1f9794e top.add_constant() -> top.config[] (CSRConstant)
This is to be synchronized with the corresponding change in misoc.
2015-12-04 18:27:54 +08:00
3bc119f3f0 gui/shortcuts: default state is no shortcuts, hide clear/open/submit widgets 2015-12-03 16:30:37 +08:00
whitequark
8cb2215edb transforms.inferencer: only instantiate RPC function types, not regular. 2015-12-02 21:48:14 +08:00
b6260615a6 gui/log: better-looking new dock feature 2015-12-01 22:51:15 +08:00
08abc2e00a gui/shortcuts: make global shortcuts really global 2015-12-01 18:49:23 +08:00
de54f57fbe gui/experiments: fix vertical resizing of experiment dock 2015-12-01 18:33:43 +08:00
9baf54d25e gui/experiments: fix text entry update problem with shortcuts 2015-12-01 18:31:56 +08:00
03f92f2de2 gui/experiments: in experiment dock, fix submit button, add reqterm button 2015-12-01 18:26:46 +08:00
d39126d69e gui/experiments: show status bar message on mass termination 2015-12-01 18:26:01 +08:00
f73c967b3e gui/shortcuts: fix status bar usage 2015-12-01 18:22:12 +08:00
bbabc7bb8d gui/shortcuts: make shrinkable, add open button 2015-12-01 18:04:43 +08:00
ff4c03014c gui/shortcuts: integrate with experiment manager 2015-12-01 17:10:44 +08:00
741dfce38c gui/scan: enforce valid sequence input 2015-11-30 23:10:12 +08:00
a6f3055cd3 scan: enforce max >= min 2015-11-30 20:01:25 +08:00
277e26434f gui/experiments: prevent comboboxes and spinboxes from stealing focus via mouse wheel 2015-11-30 19:53:40 +08:00
cabcdb3784 gui/experiments: support setting repository revision 2015-11-30 18:25:46 +08:00
24a33be9df gui/experiments: support setting submission scheduling/options 2015-11-30 17:18:31 +08:00
afa8148b2b gui/experiments: save/restore state 2015-11-30 11:40:50 +08:00
2904b31e7e protocols/pyon: fix formatting, support OrderedDict 2015-11-30 11:40:34 +08:00
23a84500a3 gui/experiments: support scan widgets 2015-11-30 00:21:27 +08:00
whitequark
26630ea4b6 language.core: make int compatible with range() (fixes #183). 2015-11-28 08:29:58 +08:00
3825428dbf gui/experiments: support setting values for simple entries 2015-11-28 00:19:47 +08:00
c382fac8f2 gui: experiment docks (WIP) 2015-11-27 19:30:05 +08:00
6671bb33a4 gui/log: improve vertical scrolling 2015-11-27 19:18:20 +08:00
whitequark
3c9b53b07b compiler.embedding: add fast path for inference for lists of scalars in a host object. 2015-11-27 19:06:04 +08:00
whitequark
237e983770 compiler.types: replace isinstance() with .__class__==.
This provides a 50% speedup.
2015-11-27 18:22:55 +08:00
whitequark
6122fd70ca compiler.types: TVar.find: improve path compression.
After this change, the compiler's complexity is nearly linear
even when very large arrays are used.
2015-11-27 18:08:46 +08:00
whitequark
bf1a583fda compiler.types: fix TVar.find() for very large paths. 2015-11-27 18:02:27 +08:00
whitequark
00164390a1 compiler.types: fix TDelay.unify(TVar()). 2015-11-27 17:10:36 +08:00
whitequark
4b410ce720 compiler.testbench.perf_embedding: fix. 2015-11-27 17:08:45 +08:00
whitequark
16ae0fb6eb compiler.embedding: instantiate RPC method types (fixes #180). 2015-11-27 16:29:13 +08:00
whitequark
0a794fe7e4 compiler.embedding: instantiate type of even the first embedding of an RPC. 2015-11-27 14:55:47 +08:00
whitequark
cde21bcd26 compiler.embedding: instantiate RPC function types (#180). 2015-11-27 14:29:15 +08:00
whitequark
3b529c6f90 compiler.types: implement map. 2015-11-26 11:16:39 +08:00
whitequark
e2f7d1047d compiler.testbench: fix after e1cd2ccd. 2015-11-26 10:24:14 +08:00
e1e082e2ec devices/thorlabs_tcube: minor cleanup 2015-11-25 21:43:22 +08:00
178f3cd815 devices/thorlabs_tcube: improve debug logging 2015-11-25 15:28:34 +08:00
3c0efb3ad5 gui/log: fix layout problems 2015-11-24 23:04:01 +08:00
whitequark
c6ccc87f54 worker: gracefully handle compile errors (fixes #179). 2015-11-24 22:34:33 +08:00
whitequark
d14ad6727a compiler.embedding: avoid showing wildly incorrect suggestions. 2015-11-24 17:50:46 +08:00
whitequark
14993e89e2 compiler.embedding: show suggestions for mistyped host object attributes. 2015-11-24 17:44:58 +08:00
whitequark
e1cd2ccd40 compiler: pull in dependencies in more finely grained way (fixes #181). 2015-11-24 17:32:04 +08:00
bda11149df devices/thorlabs_tcube: fix more style issues 2015-11-24 17:10:31 +08:00
76eadc0a61 devices/thorlabs_tcube: remove unnecessary {read,write}_exactly functions 2015-11-24 16:55:18 +08:00
whitequark
f5187eb140 Remove leftover artiq/transforms/. 2015-11-24 16:00:32 +08:00
e5b58b50aa remove old compiler code 2015-11-24 15:52:36 +08:00
2503dcd837 devices/thorlabs_tcube: remove unnecessary attribute 2015-11-24 15:51:55 +08:00
91a8acf304 protocols/pc_rpc: properly convert FullArgSpec to dict 2015-11-24 15:51:13 +08:00
whitequark
c14299dca8 Merge branch 'new-py2llvm' 2015-11-24 03:01:54 +08:00
whitequark
66b1388a63 transforms.artiq_ir_generator: never put TVars in dicts.
A TVar looks just like whatever it points to, but it does not
compare equal, nor is its hash the same.
2015-11-24 02:59:15 +08:00
whitequark
fec5c2ebf0 transforms.interleaver: add a diagnostic for interleave inlining failure. 2015-11-24 02:57:03 +08:00
whitequark
8527e306c3 testbench.embedding: use dmgr to get core and export it. 2015-11-24 02:02:34 +08:00
whitequark
2bfc72fba9 testbench.embedding: fix ref_period mismatch. 2015-11-24 00:54:20 +08:00
whitequark
d3f0059cab compiler.iodelay: correctly fold max(0, [0, ]...). 2015-11-24 00:46:55 +08:00
whitequark
9bc62fa3d2 transforms.iodelay_estimator: correctly handle functions with empty body. 2015-11-24 00:46:26 +08:00
whitequark
32fe4a8a0c transforms.llvm_ir_generator: don't assert on inlined functions. 2015-11-24 00:20:33 +08:00
whitequark
abb36b42be compiler.iodelay: fold and eval SToMU to an int, not float. 2015-11-24 00:19:33 +08:00
whitequark
178ff74da2 transforms.interleaver: inline calls. 2015-11-24 00:02:07 +08:00
whitequark
2a82eb7219 compiler.ir: return dict from Delay.substs, not pair iterable. 2015-11-24 00:01:10 +08:00
whitequark
02f2763ea8 compiler.iodelay: always fully fold SToMU and MUToS. 2015-11-23 23:59:59 +08:00
whitequark
f3da227e2d compiler.ir: change argument order for BasicBlock.insert. 2015-11-23 23:59:25 +08:00
whitequark
f0fd6cd0ca compiler.algorithms.inline: implement. 2015-11-23 23:58:37 +08:00
whitequark
a4525b21cf compiler.ir: print even blocks without predecessors. 2015-11-23 23:55:12 +08:00
whitequark
d92b3434a0 compiler.ir: print basic blocks in reverse postorder for readability. 2015-11-23 21:44:38 +08:00
whitequark
c73b2c1a78 compiler.ir: fix typo. 2015-11-23 21:21:01 +08:00
whitequark
0bf425eefa compiler.ir: maintain use lists while mutating instructions. 2015-11-23 19:18:58 +08:00
whitequark
03b4e4027c transforms.interleaver: fix IR type/value mismatch. 2015-11-23 18:53:42 +08:00
whitequark
9fc7a42036 pipistrello: expose LED{1..4} as RTIO channels. 2015-11-23 18:26:45 +08:00
whitequark
73845279ae transforms.interleaver: determine when inlining is not necessary. 2015-11-23 18:08:33 +08:00
de30a4b060 master/worker: print short exception info in first log entry of worker error 2015-11-22 23:26:32 +08:00
whitequark
af43c66149 artiq_compile: set file_import prefix, like in artiq_run. 2015-11-21 17:37:14 +08:00
whitequark
a01e328b4a transforms.interleaver: don't assume all delay expressions are folded. 2015-11-21 17:24:00 +08:00
whitequark
5cd12ffd28 compiler.iodelay: fold MUToS and SToMU. 2015-11-21 17:23:20 +08:00
whitequark
82b470891f transforms.interleaver: handle function calls (as atomic so far).
This commit solves issue #2 described in 50e7b44; a function call
is now a valid decomposition for a delay instruction, and this
metadata is propagated when the interleaver converts delays.

However, the interleaver does not yet detect that a called function
is compound, i.e. it is not correct.
2015-11-21 03:34:24 +08:00
whitequark
57dd163d37 transforms.artiq_ir_generator: fix decomposition of explicit delay_mu(). 2015-11-21 03:27:06 +08:00
whitequark
cb3b811fd7 compiler: maintain both the IR and iodelay forms of delay expressions.
After this commit, the delay instruction (again) does not generate
any LLVM IR: all heavy lifting is relegated to the delay and delay_mu
intrinsics. When the interleave transform needs to adjust the global
timeline, it synthesizes a delay_mu intrinsnic. This way,
the interleave transformation becomes composable, as the input and
the output IR invariants are the same.

Also, code generation is adjusted so that a basic block is split off
not only after a delay call, but also before one; otherwise, e.g.,
code immediately at the beginning of a `with parallel:` branch
would have no choice but to execute after another branch has already
advanced the timeline.

This takes care of issue #1 described in 50e7b44 and is a step
to solving issue #2.
2015-11-21 03:22:47 +08:00
whitequark
50e7b44d04 compiler: actually implement interleaving correctly (calls are still broken).
The previous implementation was completely wrong: it always advanced
the global timeline by the same amount as the non-interleaved basic
block did.

The new implementation only advances the global timeline by
the difference between its current time and the virtual time of
the branch, which requires it to adjust the delay instructions.

Previously, the delay expression was present in the IR twice: once
as the iodelay.Expr transformation-visible form, and once as regular
IR instructions, with the latter form being passed to the delay_mu
builtin and advancing the runtime timeline.

As a result of this change, this strategy is no longer valid:
we can meaningfully mutate the iodelay.Expr form but not the IR
instruction form. Thus, IR instructions are no longer generated for
delay expressions, and the LLVM lowering pass now has to lower
the iodelay.Expr objects as well.

This works OK for flat `with parallel:` expressions, but breaks down
outside of `with parallel:` or when calls are present. The reasons
it breaks down are as follows:

  * Outside of `with parallel:`, delay() and delay_mu() must accept
    any expression, but iodelay.Expr's are not nearly expressive
    enough. So, the IR instruction form must actually be kept as well.

  * A delay instruction is currently inserted after a call to
    a user-defined function; this delay instruction introduces
    a point where basic block reordering is possible as well as
    provides delay information. However, the callee knows nothing
    about the context in which it is called, which means that
    the runtime timeline is advanced twice. So, a new terminator
    instruction must be added that combines the properties of delay
    and call instructions (and another for delay and invoke as well).
2015-11-21 00:02:47 +08:00
whitequark
73c358a59a Reformat. 2015-11-20 23:33:06 +08:00
whitequark
cb9e7d15bf compiler.iodelay: subtraction certainly shouldn't be commutative. 2015-11-20 22:15:03 +08:00
whitequark
cc623c13b4 Reformat. 2015-11-20 21:45:34 +08:00
whitequark
d0f86e05d0 transforms.interleaver: add safety check. 2015-11-20 17:27:04 +08:00
whitequark
88b7990714 transforms.iodelay_estimator: fail statements with indeterminate delay inside with parallel. 2015-11-20 17:10:25 +08:00
whitequark
28fa68730a Merge branch 'master' into new-py2llvm 2015-11-20 15:55:29 +08:00
9826b19c9a gui/scan: adapt layout to show more decimals 2015-11-20 11:20:15 +08:00
whitequark
00ec574d73 transforms.interleaver: implement (without inlining). 2015-11-20 00:03:26 +08:00
whitequark
025bfbe746 transforms.llvm_ir_generator: accept delay instructions.
The delay instruction is just like a branch (discontinuity
in instruction flow), but it also carries metadata: how long
did the execution of its basic block take. This metadata only
matters during inlining and interleaving, so we treat it here
as a mere branch.
2015-11-19 23:55:52 +08:00
whitequark
9639a831bc transforms.artiq_ir_generator: correctly emit IfExpT with control flow.
This can happen with nested if expressions, as well as if
the if expression includes delays.
2015-11-19 23:44:39 +08:00
whitequark
2543daa5cf transforms.artiq_ir_generator: don't emit delay instruction for zero delay.
Call nodes with iodelay=Const(0) can be generated outside of
`with parallel:`, where Interleaver won't and LLVMIRGenerator can't
lower them.
2015-11-19 23:24:46 +08:00
whitequark
58db347e01 transforms.iodelay_estimator: fix uninitialized access. 2015-11-19 23:23:39 +08:00
108aed569e gui/models/DictSyncTreeSepModel: add getitem 2015-11-17 22:53:11 +08:00
537fa2287b gui/models/DictSyncTreeSepModel: fix item row update 2015-11-17 22:39:46 +08:00
7bebc52959 gui/explorer: reduce impact of Qt selection display bug 2015-11-17 22:38:01 +08:00
250ab6b489 gui/explorer: tree view 2015-11-17 19:46:26 +08:00
9c5db288a5 gui/datasets: tree view 2015-11-17 19:46:17 +08:00
107d8f0ffa gui/models: add DictSyncTreeSepModel 2015-11-17 19:45:28 +08:00
whitequark
48a2bb10d5 transforms.interleaver: add boilerplate. 2015-11-17 05:22:20 +03:00
whitequark
de9d7eb2e4 compiler: add delay IR instruction. 2015-11-17 05:16:43 +03:00
whitequark
956d2afcb2 compiler.iodelay: fold Max further. 2015-11-17 03:06:07 +03:00
whitequark
7d2fca291d compiler.iodelay: add missing import. 2015-11-17 01:30:19 +03:00
whitequark
e619154c81 transforms.iodelay_estimator: fix handling of with sequential. 2015-11-17 01:22:48 +03:00
whitequark
506725f78a transforms.iodelay_estimator: fix handling of methods. 2015-11-17 01:19:22 +03:00
whitequark
b0c6b70971 transforms.asttyped_rewriter: fix class redefinition diagnostic. 2015-11-17 01:17:25 +03:00
whitequark
9e0a5b9404 transforms.iodelay_estimator: skip statements, not modules on _UnknownDelay. 2015-11-17 01:00:10 +03:00
whitequark
44d0a35409 transforms.iodelay_estimator: actually iterate to fixpoint. 2015-11-17 00:59:40 +03:00
whitequark
10f82ff2c8 transforms.iodelay_estimator: do not unify indeterminate delays. 2015-11-17 00:59:09 +03:00
whitequark
841e01a8bb compiler.iodelay: fix typo in Var.__eq__. 2015-11-17 00:53:12 +03:00
whitequark
a2d73c8b05 compiler.types: dump type variable iodelay explicitly. 2015-11-17 00:51:56 +03:00
whitequark
e67705dc27 compiler.iodelay: fix typo in BinOp.__eq__. 2015-11-17 00:51:37 +03:00
whitequark
629aacec09 compiler.iodelay: add forgotten Conv.__eq__. 2015-11-17 00:51:22 +03:00
whitequark
fd46690cf5 compiler: make IR dumps vastly more readable. 2015-11-17 00:23:34 +03:00
whitequark
eefa9e2ea6 transforms.inferencer: fix typo. 2015-11-17 00:02:15 +03:00
723ef71a87 master/repository: fix experiment name conflict handling 2015-11-16 22:46:40 +08:00
whitequark
c8cfa7c7bd compiler: give suggestions in diagnostics for unbound variable.
This uses the Jaro-Winkler edit distance, which seemed like the best
fit for identifiers, even though it is intended for people's names.
2015-11-15 23:09:40 +03:00
d32c2c091f master: scan subdirectories in repos 2015-11-14 00:06:52 +08:00
3cbd7c4c13 gui: support multiple log docks 2015-11-12 01:13:57 +08:00
fa89e165b2 gui/datasets: fix display update 2015-11-11 17:09:35 +08:00
11fbea4161 sync_struct/Subscriber: support lists of notify callbacks 2015-11-11 17:09:07 +08:00
62c0eb85b1 gui/console: use network clients directly 2015-11-11 17:02:51 +08:00
4166f4e928 frontend: use atexit_register_coroutine in other tools 2015-11-11 16:22:12 +08:00
69f5e378fe sync_struct/Subscriber: remove unused multi-target functionality 2015-11-11 12:44:20 +08:00
77330c7c68 gui/moninj: suppress spurious core device address warnings 2015-11-11 12:43:25 +08:00
c3f99eda8f gui: centralize subscribers 2015-11-11 12:13:19 +08:00
ae99af27ee runtime,gateware: use new misoc identifier 2015-11-10 22:44:38 +08:00
whitequark
9670939ca6 compiler.analyses.domination: fix PostDominatorTree. 2015-11-09 12:49:27 +03:00
whitequark
19fae9181c compiler.analyses.domination: implement new dominator tree algorithm. 2015-11-09 11:51:54 +03:00
44c0c617f3 master/worker: add ARTIQ version to HDF5 output 2015-11-09 12:32:29 +08:00
2df2e141f7 update versioneer 2015-11-09 12:19:01 +08:00
594162325b use versioneer 2015-11-09 11:33:38 +08:00
3c63e5bc61 runtime/liblwip: fix symbolic link creation 2015-11-09 11:07:22 +08:00
e749bae302 package everything to rebuild core device binaries 2015-11-09 10:47:14 +08:00
whitequark
a0c6f75f9b compiler.types: fix obsolete iodelay references. 2015-11-07 15:14:19 +03:00
whitequark
51f04f6311 Explicitly use the python3.5 binary everywhere. 2015-11-07 13:39:39 +03:00
whitequark
0b5e1d174c Unbreak artiq_flash.sh. 2015-11-07 13:26:14 +03:00
whitequark
d6d0a3e3e9 Merge branch 'master' into new-py2llvm 2015-11-07 12:57:18 +03:00
whitequark
da622937f6 Merge commit 'd0b5c3ba7fb' into new-py2llvm 2015-11-07 09:41:34 +03:00
a7c9c95085 gui/explorer: support requesting termination of all instances 2015-11-05 19:04:10 +08:00
ad5a32fb6e targets/kc705: remove unneeded argument on qc2 2015-11-04 20:09:37 +08:00
38740a4abe runtime: log startup kernel start 2015-11-04 12:34:18 +08:00
087c2fd078 runtime: fix generation of service_table.h 2015-11-04 11:22:56 +08:00
3404a6565b frontend/artiq_flash: reorganize device binaries 2015-11-04 10:40:46 +08:00
e26147b2ac gateware,runtime: use new migen/misoc 2015-11-04 00:35:03 +08:00
644a410c90 thorlabs_tcube: fix -P case handling 2015-11-03 17:55:00 +08:00
whitequark
3a1b77ae6b analyses.domination: add PostDominatorTree. 2015-11-01 09:49:39 +03:00
a2c074cc33 gui: fix RPC client teardown 2015-11-01 00:03:46 +08:00
8e24a018ea gui/log: fix filter initialization race condition 2015-11-01 00:01:45 +08:00
f57145c4f3 gui: support triggering repository rescan 2015-10-31 23:58:39 +08:00
0a36b03a12 gui/log: work around Qt scrolling bug. Closes #151 2015-10-31 10:25:01 +08:00
d8b98ae5d4 gui/log: fix performance problems 2015-10-31 00:34:14 +08:00
b61eb866b6 gui: log freetext filter 2015-10-30 19:58:33 +08:00
f3ee97a4ff fix typo 2015-10-30 19:58:15 +08:00
58f55fc630 artiq_flash: check that xc3sprog is found. closes #162 2015-10-30 15:52:03 +08:00
2c77c80b4f master: expose more scheduler APIs to the experiments 2015-10-30 13:41:18 +08:00
whitequark
f70f7fb89b Merge branch 'master' into new-py2llvm 2015-10-30 04:29:35 +03:00
0e375e4980 gui: fix shortcut pipeline 2015-10-30 00:50:18 +08:00
f0eed1182a protocols/pyon: improve error reporting of non-serializable type 2015-10-29 09:42:45 +08:00
32c95f24d0 worker: reduce some logging levels 2015-10-29 09:34:41 +08:00
0d53f7ab0d ignore ProcessLookupError when killing subprocesses. Closes #167 2015-10-28 20:57:28 +08:00
40b4129c65 Only support scalars and numpy arrays in HDF5 output. Update documentation. Closes #145 2015-10-28 18:33:42 +08:00
ec328cf5e1 master/worker_db: reduce exception backtrace clutter of get_dataset. Closes #168 2015-10-28 17:50:48 +08:00
828b48ad89 master/scheduler: reduce logging severity of worker exception backtraces to debug 2015-10-28 17:48:50 +08:00
1ada15ae5d master: simplify worker/parent RPC 2015-10-28 17:35:57 +08:00
4e35a247d1 pdq2_client: remove unnecessary calls 2015-10-28 09:48:14 +08:00
3789273e29 pdq2_client: remove init call 2015-10-28 09:47:01 +08:00
d708002fb9 devices/pdq2: add RPC getter functions 2015-10-28 09:46:17 +08:00
179416dac7 gui: delete shortcuts 2015-10-27 18:20:25 +08:00
f872d92d22 gui/schedule: improve delete status bar message 2015-10-27 18:20:11 +08:00
138ba7e2fa gui: add addItems to populate log level comboboxes 2015-10-27 18:10:31 +08:00
967d4eda63 gui: shortcut support 2015-10-27 17:59:34 +08:00
9f2ff32948 test/sync_struct: nparray mutation 2015-10-26 23:41:05 +08:00
a6d38b8a97 gui/datasets: fix source decoding 2015-10-26 00:32:49 +08:00
fe809f81ab protocols/pyon: make received numpy arrays writable 2015-10-26 00:21:51 +08:00
62bcadfa44 gui/explorer: change submit shortcut to CTRL+ENTER 2015-10-25 23:21:27 +08:00
5ae9bbc0ca gui/explorer: add CTRL+S shortcut to submit 2015-10-24 19:19:12 +08:00
53a9d7eb9a gui/explorer: more compact layout 2015-10-24 16:00:20 +08:00
fcd29492f9 worker_db: support more types in HDF5 output. Closes #144. Closes #121 2015-10-24 10:54:59 +08:00
3044a053e1 databases: assume empty dataset_db if file not present. Closes #156 2015-10-24 10:15:20 +08:00
b0ef0d205a gui/datasets: do not crash when a display data is unavailable 2015-10-24 09:57:42 +08:00
whitequark
30842a7174 conda: include udev rules and artiq_flash.sh in artiq package. 2015-10-22 17:18:59 +03:00
e4165aecf2 gui/displays: do not test for empty list using bool conversion (breaks for numpy arrays). Closes #153 2015-10-22 11:00:11 +08:00
50809e02c2 tools/short_format: display shape of ndarrays 2015-10-21 11:13:46 +08:00
a58e41684b protocols/logging: revert debug hack that was incorrectly committed 2015-10-21 09:54:39 +08:00
ec02bea054 controllers/thorlabs_tcube: accept any case for -P. Closes #150 2015-10-21 09:17:39 +08:00
d13b368a65 build logging into worker 2015-10-20 18:11:50 +08:00
fbe33b71f4 gui: add some tooltips 2015-10-20 18:09:36 +08:00
451f39f5b8 gui/explorer: disable calendar popup 2015-10-20 17:56:23 +08:00
1bc4061620 protocols: better workaround for asyncio issue 263 2015-10-20 00:35:33 +08:00
71d2e3a69f protocols/sync_struct: disconnection can also cause BrokenPipeError 2015-10-20 00:35:02 +08:00
da70f8b88c test/pc_rpc: test AutoTarget 2015-10-19 20:20:53 +08:00
03e317780b device_db: make best_effort parameter optional for controllers 2015-10-18 14:37:08 +08:00
a5606768ad device_db: make target_name parameter optional for controllers 2015-10-18 14:35:53 +08:00
5947f54855 pc_rpc: autotarget support 2015-10-18 14:34:30 +08:00
661b9bfbfa tools/short_format: increase max string length 2015-10-18 13:32:29 +08:00
d7b41207da tools/short_format: display booleans directly 2015-10-18 13:31:36 +08:00
b9c1d3ef12 language, gui: do not automatically insert scale prefixes 2015-10-18 00:52:16 +08:00
da83212c79 gui: autodetect whether QSortFilterProxyModel is in QtCore or QtGui 2015-10-17 19:11:17 +08:00
7f5e264971 ctlmgr: add hostname to log source 2015-10-17 10:58:15 +08:00
5899825eef import order 2015-10-17 10:41:52 +08:00
797bf9830c language: add basic logging initializer for experiments 2015-10-17 10:39:21 +08:00
04a049b93d master: timestamp logfiles 2015-10-17 10:26:54 +08:00
60ed88f3d9 worker: separate stdout/stderr for forwarding 2015-10-17 10:22:20 +08:00
f6fd7ecef2 logging: handle newlines in messages 2015-10-17 10:21:03 +08:00
6c856025cc protocol/logging: workaround for asyncio's inability to detect connection closes on writes 2015-10-16 21:28:39 +08:00
f332c1d3cc ctlmgr: forward controller logs 2015-10-16 20:08:11 +08:00
786dc14057 protocols/logging: fix split, warn on format errors 2015-10-16 20:07:31 +08:00
9e96a687e2 ctlmgr: forward log to master 2015-10-16 18:35:58 +08:00
9bb94f0f59 master/log: move formatter into LogBufferHandler 2015-10-16 18:35:30 +08:00
cee8f288de protocols/logging: add LogForwarder 2015-10-16 18:35:02 +08:00
c0796249b3 protocols/logging: document, take level numbers for consistency with master publish 2015-10-16 18:34:37 +08:00
cbda753f44 master: TCP server for remote logging 2015-10-16 00:53:35 +08:00
9e2e233fef master: log file support 2015-10-15 23:47:31 +08:00
whitequark
b91ffa1b38 ir: fix default argument fiasco. 2015-10-14 17:02:59 +03:00
49acd10dfd gui: fix data update in DictSyncModel/ListSyncModel 2015-10-14 21:32:26 +08:00
f3b3bf3036 gui: log filtering 2015-10-14 21:21:19 +08:00
whitequark
5d64df829e transforms.artiq_ir_generator: fix devirtualized call annotation. 2015-10-14 16:12:00 +03:00
whitequark
e9adfd639e Merge branch 'master' into new-py2llvm 2015-10-14 16:09:57 +03:00
f85554486a gui: dataset filtering with QSortFilterProxyModel 2015-10-14 19:29:58 +08:00
86e201c6a0 master/log: parse names, better filtering, cleanup 2015-10-14 16:30:57 +08:00
da159f11d4 gui/log: ensure black/white colors 2015-10-14 16:30:16 +08:00
9f04af63e6 scheduler: raise logging severity of errors 2015-10-14 16:02:22 +08:00
c00bce3967 master,client,gui: logging sources, timestamps, levels 2015-10-14 01:06:57 +08:00
whitequark
bd5b324fc2 Merge branch 'master' into new-py2llvm 2015-10-13 19:24:45 +03:00
fc4791bbbe doc: new dataset API 2015-10-13 18:11:17 +08:00
1d14975bd5 worker: cleaner termination on exception in user code, improve unittest 2015-10-13 01:11:57 +08:00
fbf94f9b6d Merge branch 'master' of github.com:m-labs/artiq 2015-10-12 19:46:52 +08:00