Commit Graph

2955 Commits

Author SHA1 Message Date
whitequark c7844d5223 runtime: use proper format for git commit.
Fixes #620.
2016-11-17 15:20:21 +00:00
Sebastien Bourdeauducq bb047aabe9 drtio: simpler link layer 2016-11-17 22:32:39 +08:00
Sebastien Bourdeauducq 09363e1da8 drtio: aux controller unittest 2016-11-16 19:45:28 +08:00
Sebastien Bourdeauducq 140bb0ecee drtio: aux controller fixes 2016-11-16 19:44:03 +08:00
Sebastien Bourdeauducq 7fa9a4efc3 drtio: aux controller unittest WIP 2016-11-15 12:02:53 +08:00
Sebastien Bourdeauducq 6c9965b444 drtio: aux controller fixes 2016-11-15 12:02:41 +08:00
Sebastien Bourdeauducq e1394db861 drtio: aux controller minor fixes 2016-11-14 17:26:30 +08:00
Sebastien Bourdeauducq 84bd962ed5 drtio: integrate aux controller 2016-11-14 17:20:47 +08:00
Sebastien Bourdeauducq a4d92716da drtio: fix aux receiver, add aux transmitter 2016-11-14 17:18:54 +08:00
Sebastien Bourdeauducq f2f131e0fb drtio: add aux receiver (untested) 2016-11-14 00:04:53 +08:00
whitequark 18c394976e runtime: disable the Nagle algorithm entirely.
See also commit feed91d; that commit fixed the test_rpc_timing test,
but caused frequent hangs elsewhere, which were also caused by buggy
Nagle implementation. Just disable this entirely, as with our
explicit buffering it provides no benefit anyway.
2016-11-13 00:33:24 +00: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
whitequark 3ce1826891 runtime: don't print debug messages to the UART.
It takes ~4ms to print an empty log line because of how slow
the UART is. This makes the log timestamps useless for debugging
performance problems.

After this commit, it takes ~75us to print an empty log line instead,
which pessimizes test_rpc_timing by less than 2ms with tracing
enabled.
2016-11-12 20:26:32 +00:00
whitequark acc5e53b32 runtime: print microsecond timestamps in debug messages. 2016-11-12 20:26:32 +00:00
whitequark dca3fb5c96 artiq_devtool: abort if build failed. 2016-11-12 20:26:32 +00:00
whitequark d3ee858d16 llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
This helps LICM, among other things.
2016-11-12 04:08:58 +00:00
whitequark 8b6418c604 artiq_devtool: more robust port forwarding. 2016-11-11 15:22:07 +00:00
whitequark 3b6cbb1f06 artiq_devtool: implement. 2016-11-10 20:25:15 +00:00
whitequark 0e76cbc414 artiq_compile: actually disable attribute writeback.
I wrote both halves of this condition but forgot to hook
them together.

Fixes #586.
2016-11-10 01:04:36 +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
Sebastien Bourdeauducq 8a48d6d66e drtio: fix typo 2016-11-09 22:15:42 +08:00
Sebastien Bourdeauducq 863934c4fa drtio: more reliable link layer init 2016-11-09 22:03:47 +08:00
Sebastien Bourdeauducq c92ccd3b5b drtio: add pulse rate example 2016-11-09 15:29:15 +08:00
Sebastien Bourdeauducq 60e748eabe drtio: better LED demo 2016-11-09 14:53:45 +08:00
Sebastien Bourdeauducq d547c5d922 drtio: fix example ref_period 2016-11-09 14:44:01 +08:00
Sebastien Bourdeauducq 99ad9b5917 add has_dds, use config flags 2016-11-08 23:33:03 +08:00
whitequark ec8fe6f8bd Revert "Revert "Revert "Revert "Update for LLVM 3.9.""""
This reverts commit 7b81ed1d18.
2016-11-08 14:22:47 +00:00
whitequark 7b81ed1d18 Revert "Revert "Revert "Update for LLVM 3.9."""
This reverts commit 0d7688017b.
2016-11-08 12:58:20 +00:00
whitequark a8fd697d41 runtime: unbreak 453e8b7.
Running
  rustc --cfg 'foo="1"'
does not result in a statement of the form
  do_thing()
to be compilex in.
2016-11-08 12:57:06 +00:00
whitequark e0297039c9 artiq_run: fix bitrot in .ll/.bc runners. 2016-11-08 12:08:20 +00:00
whitequark 0d7688017b Revert "Revert "Update for LLVM 3.9.""
This reverts commit 5f5975844a.
2016-11-08 11:59:16 +00:00
whitequark 798a5f70df Revert "runtime: remove some redundant libm functions copied inline."
This reverts commit fee75bd50f.

LLVM does not have lround as a libcall and this inhibits LICM.
2016-11-08 11:54:17 +00:00
Sebastien Bourdeauducq 95acc9b9d4 drtio: allow specifying 7series RXSynchronizer initial phase 2016-11-08 16:52:40 +08:00
Sebastien Bourdeauducq bcb5053fb6 drtio: fix master TSC KCSR readout 2016-11-08 16:40:50 +08:00
Sebastien Bourdeauducq 651d538217 Merge branch 'master' into drtio 2016-11-08 16:11:18 +08:00
Sebastien Bourdeauducq 8c86920364 drtio: add examples 2016-11-08 16:11:10 +08:00
David Nadlinger 6e77f65d50 compiler: Clarify recv_rpc value names and documentation [nfc]
Previously, the phi emitted for the pointer parameter to recv_rpc was –
rather confusingly – called "size", and the pseudo-code in the comment
had bit-rotted.

Signed-off-by: David Nadlinger <code@klickverbot.at>
2016-11-07 14:38:21 +00:00
Sebastien Bourdeauducq 78f18a12eb runtime: basic DRTIO init code 2016-11-07 19:34:34 +08:00
Sebastien Bourdeauducq 453e8b7eb3 runtime: support configurations without moninj, log or dds 2016-11-06 23:53:10 +08:00
Sebastien Bourdeauducq 266ae292d9 runtime: support configurations without moninj, log or dds 2016-11-06 23:52:27 +08:00
Sebastien Bourdeauducq c4cd269afc Merge branch 'master' into drtio 2016-11-06 00:13:32 +08:00
Sebastien Bourdeauducq 47b9868c68 kc705_drtio_master: pretend drtio is rtio 2016-11-05 23:48:29 +08:00
Sebastien Bourdeauducq de065b7578 kc705_drtio_satellite: set output dir 2016-11-05 23:48:15 +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
Sebastien Bourdeauducq de47123737 drtio: connect RST and LOCKED on 7series RXSynchronizer MMCM 2016-11-05 00:24:49 +08:00
Sebastien Bourdeauducq 5019b03f10 drtio: add echo and packet count test 2016-11-04 22:24:35 +08:00
Sebastien Bourdeauducq df7294792c drtio: break some RT features into manager, add echo request CSR 2016-11-04 19:38:24 +08:00
Sebastien Bourdeauducq 1145a193dd drtio: fix ack of echo and set_time requests 2016-11-04 18:36:43 +08:00
Sebastien Bourdeauducq 3da1cce783 drtio: add packet counters 2016-11-04 17:53:42 +08:00
Sebastien Bourdeauducq 8ec73cb9ec dashboard: pack moninj widgets (#603) 2016-11-04 16:20:46 +08:00
Sebastien Bourdeauducq 747da3da15 drtio: differentiate local and remote unknown packet type errors 2016-11-04 15:17:19 +08:00
Sebastien Bourdeauducq f76aa249ce drtio: squelch 7series RXSynchronizer outputs when MMCM is unlocked 2016-11-04 15:16:48 +08:00
Sebastien Bourdeauducq 6a75837261 drtio: fix link_layer remote RX ready detection 2016-11-03 20:15:04 +08:00
Sebastien Bourdeauducq 1d027ffa95 drtio: fix gtx_7series comma alignment 2016-11-03 20:14:11 +08:00
Sebastien Bourdeauducq a4ba34bb2c drtio: cleanup test_full_stack 2016-11-03 20:13:31 +08:00
Sebastien Bourdeauducq ba58a8affd drtio/gtx_7series: paranoid reset deglitching 2016-11-02 18:30:22 +08:00
whitequark 00100148f1 Si5324: actually write value of N32 into registers. 2016-11-02 07:09:04 +00:00
Sebastien Bourdeauducq bee9774bd5 drtio: add link layer status CSR 2016-11-02 13:09:13 +08:00
Sebastien Bourdeauducq 1ed3278783 remove stale TODO 2016-11-02 10:53:54 +08:00
whitequark a6ae254796 Si5324: update to free run from XA/XB, with CKIN1 having priority. 2016-11-01 16:01:24 +00:00
whitequark b30734a105 runtime: fix a race condition with async RPCs.
session.rs has code like:

    while !rpc_queue::empty() {
        try!(process_kern_queued_rpc(stream, &mut session))
    }

    // A

    if mailbox::receive() != 0 {
        try!(process_kern_message(waiter, Some(stream), &mut session));
    }

If both an async and a mailbox RPC (async or large sync) are posted
at point A then they will be processed out of order.
This commit fixes the issue by flushing the async RPC queue before
posting any RPC to the mailbox.
2016-11-01 13:22:22 +00:00
whitequark 6fcd57a41a runtime: fix remaining async RPC bugs. 2016-11-01 10:33:57 +00:00
whitequark 2095d01b84 runtime: dirty hacks to remove allocations in ksupport. 2016-11-01 08:55:49 +00:00
whitequark c1e6d4b67c runtime: fix multiple async RPC bugs. 2016-11-01 06:51:44 +00:00
whitequark 636d4efe81 gateware: rewrite mailbox to use bits_for. 2016-11-01 06:28:43 +00:00
Sebastien Bourdeauducq 43cd970100 make set_dataset and mutate_dataset async RPCs 2016-11-01 11:11:41 +08:00
whitequark 18ae8d54a3 gateware: fix mailbox. 2016-11-01 02:33:00 +00:00
whitequark 898a716b91 runtime: work around mor1kx ignoring low bits of reset address.
Fixes #599.
2016-10-31 18:13:15 +00:00
Sebastien Bourdeauducq 0c1a76d668 unify rtio/drtio kernel interface 2016-11-01 00:30:16 +08:00
whitequark 617e345d16 gateware: fix kernel CPU exec address. 2016-10-31 15:16:35 +00:00
Sebastien Bourdeauducq 07ad00c1ca drtio: split kernel/system CSRs 2016-10-31 18:09:36 +08:00
Sebastien Bourdeauducq 9aa94e1a2d adapt to migen/misoc changes 2016-10-31 00:53:01 +08:00
Sebastien Bourdeauducq 2392113bb6 kc705: use misoc clock for false path 2016-10-30 11:16:04 +08:00
whitequark cd68577dbc compiler: add support for async RPCs. 2016-10-30 00:57:31 +00:00
whitequark 2ac85cd40f runtime: implement prototype background RPCs. 2016-10-29 21:34:25 +00:00
Sebastien Bourdeauducq c656a53532 kc705: clean up clock constraints 2016-10-29 21:28:01 +08:00
Sebastien Bourdeauducq ed4d57c638 use new Migen signal attribute API 2016-10-29 21:19:58 +08:00
Sebastien Bourdeauducq da5208e160 drtio: add master gateware target 2016-10-29 17:31:15 +08:00
Sebastien Bourdeauducq 7c05dccf65 drtio: add support for 125MHz clock on GTX_1000BASE_BX10 2016-10-29 17:30:29 +08:00
Sebastien Bourdeauducq 95def81c03 drtio: squelch frame signals until link layer ready 2016-10-29 17:05:30 +08:00
Sebastien Bourdeauducq 4f6241283c drtio: always use NoRetiming on MultiReg inputs 2016-10-29 16:37:53 +08:00
Sebastien Bourdeauducq 9bbc6eb0ef drtio: more full stack testing 2016-10-26 22:04:32 +08:00
Sebastien Bourdeauducq 929a7650a8 drtio: fixes 2016-10-26 22:03:44 +08:00
Sebastien Bourdeauducq 45621934fd drtio: forward errors to CSR 2016-10-26 22:03:05 +08:00
Sebastien Bourdeauducq 7f8e53aa5c drtio: more fixes and tests 2016-10-26 11:48:47 +08:00
Sebastien Bourdeauducq 22173b8c70 drtio: full stack unittest 2016-10-26 00:35:22 +08:00
Sebastien Bourdeauducq f763b519f4 drtio: fix channel selection 2016-10-26 00:33:21 +08:00
Sebastien Bourdeauducq ad042de954 drtio: fixes, basic TTL working in simulation 2016-10-25 12:41:16 +08:00
Sebastien Bourdeauducq 94e68dbae4 drtio: test_full_stack (WIP) 2016-10-24 23:36:33 +08:00
Sebastien Bourdeauducq a4e85081aa drtio: more simple fixes 2016-10-24 23:32:49 +08:00
Sebastien Bourdeauducq 029e0d95b7 drtio: simple fixes 2016-10-24 23:10:15 +08:00
Sebastien Bourdeauducq c39987b617 drtio: handle underflow/sequence error CSRs 2016-10-24 20:46:55 +08:00
Sebastien Bourdeauducq 7dd6eb2f5e drtio: add RT write controller 2016-10-24 19:50:13 +08:00
Sebastien Bourdeauducq 83bec06226 drtio: fifo level -> fifo space 2016-10-24 15:59:12 +08:00
Sebastien Bourdeauducq aa8e211735 drtio/rt_packets: fix 2016-10-22 13:03:35 +08:00
Sebastien Bourdeauducq 449d1c4dc6 rtio: export CDC modules 2016-10-22 13:03:10 +08:00
Sebastien Bourdeauducq 67c19ab178 drtio: RTPacketMaster RX, untested 2016-10-22 01:04:14 +08:00
Sebastien Bourdeauducq 3b4a40401a drtio: RTPacketMaster TX (WIP) 2016-10-21 22:46:14 +08:00
Sebastien Bourdeauducq 1e313afe64 drtio: CrossDomainNotification 2016-10-21 22:45:45 +08:00
Sebastien Bourdeauducq c71c4c89e0 drtio: change data direction in _CrossDomainRequest 2016-10-21 22:44:47 +08:00