sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
rohitksingh has joined #m-labs
rohitksingh1 has joined #m-labs
rohitksingh has quit [Ping timeout: 276 seconds]
rohitksingh has joined #m-labs
rohitksingh1 has quit [Ping timeout: 255 seconds]
sb0 has quit [Quit: Leaving]
<ohsix> whitequark: does 'ddcutil interrogate' find anything? my laptop is too old, and i've got no newer monitors around to try with the displayport adapter i have
futarisIRCcloud has joined #m-labs
<whitequark> no, it's not DDC
<GitHub114> [smoltcp] kaendfinger commented on issue #120: Sorry about that @whitequark, I was on a slow network at the time, and cloning was taking a long time. https://github.com/m-labs/smoltcp/issues/120#issuecomment-357832508
sb0 has joined #m-labs
<ohsix> i know but there's some related stuff in there
<ohsix> was hoping to correlate the i2c cmds with the eeprom or one of the vesa specs / code from linux, cuz filling out the structures is taking a lot m ore time than i thought it would :p
<whitequark> the eeprom doesn't have any particular commands
<ohsix> almost any information i can find in the problem area can be helpful for filling it out
<ohsix> k
<whitequark> ddcutil interrogate doesn't detect anything, it just bails
<ohsix> check out 409DC4 in tcon.exe
<ohsix> it's really busy with i2c-looking parameter values https://i.imgur.com/x0AQQe3.png (i2c_read/write may nto be that, only initial basis on one of the flags at another call site)
<ohsix> will still go at it time permitting, i'm learning a lot on the dead ends :]
<ohsix> can you define & edit structures and add them to references in binaryninja?
<davidc__> ohsix: FWIW, I have the i2c read/write commands down with quite high certainty
<ohsix> on what side?
<ohsix> tcon calls the wrapper & the actual dpcd(?) commands are driver agnostic outside the wrapper, it just has 3 cases for each gpu and each import library
<davidc__> should we move this somewhere else so as not to fill up #m-labs? :)
<ohsix> sure, suggestions?
<davidc__> #whitequarks-display ?
<whitequark> there's a #whitequark
<whitequark> er, ##whitequark
<whitequark> ohsix: (define&edit) yes you can
<ohsix> cool, only checked it out a little bit; the ir is pretty good
<whitequark> rjo: regarding flterms not behaving, that's a well known bug in flterm
<whitequark> and yes it's obnoxious but that part of asyncio is annoyin
<whitequark> sb0: now openocd just hangs after:
<whitequark> Info : clock speed 5000 kHz
<whitequark> power cycle doesn't help
<sb0> whitequark, did you press ctrl-c during an openocd run?
<whitequark> yes
<whitequark> is that bad?
<sb0> yes
<sb0> try again now
<whitequark> nope
<whitequark> still hung
<whitequark> should I press ^C?
<sb0> whitequark, again
<sb0> pressing ctrl-c during openocd runs sometimes messes up the ftdi chip, and it hangs on subsequent runs
<whitequark> excellent, it worked now
<whitequark> sb0: hm, hangs on "continuing boot" now
<davidc__> re FTDI hangs: hmm, that might be clearable from SW; a USB Reset should do it without having to physically plug/unplug it. You could try usbreset.c from https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
<sb0> yes, sometimes the runtime just hangs on sayma for mysterious reasons
<davidc__> (the MPSSE engine can get desync'ed/wedged, and IIRC I remember being able to solve it with a USB reset. Not sure if it is the same behaviour you are seeing though)
<sb0> was that involving serwb?
<whitequark> hm
<whitequark> I was reloading serwb, yes
<sb0> okay. many of those crashes are serwb failures. not sure if it's all of them...
<whitequark> ok, i finally loaded it
<sb0> try recompiling the bitstream with sawg enabled and you will see why I keep talking of long/tedious testing cycles :)
<whitequark> sb0: is ethernet supposed to work on sayma?
<sb0> no
<whitequark> oh.
<sb0> we're going to use MII mode since the FPGA uses non-cc pins for the clocks with seems difficult with RGMII
<whitequark> right, I've read all the comments
<whitequark> just never quite connected the dots
<sb0> but Greg's MMC firmware that puts the PHY in MII mode doesn't work, the PHY doesn't establish a link with either of my media converters
<whitequark> sb0: ok this is absurd
<whitequark> let's make AMC program RTM first
rohitksingh has quit [Ping timeout: 276 seconds]
<sb0> µTCA crate arrived
<sb0> whitequark, taking sayma boards offline to put them in said crate now
rohitksingh has joined #m-labs
<whitequark> how ok
<whitequark> *ok
<whitequark> sb0: am I reading this right, is RTM FPGA configured hardcoded as master spi?
<whitequark> M[2:0] = 001
<whitequark> but also the schematic shows CCLK as an input
<sb0> whitequark, I think Greg modified the boards
<whitequark> sigh
<whitequark> okay
<sb0> can't get *any* sayma jtag to work in the crate. amazing!
<sb0> though, looking at what the MMC code is like, this is barely surprising...
<sb0> "just forget the MMC is there", according to greg...
<whitequark> why do we need MMC?
<GitHub97> [migen] whitequark pushed 1 new commit to master: https://github.com/m-labs/migen/commit/cd1f5178a99f6d01c3949d8879a4874f681d9065
<GitHub97> migen/master cd1f517 whitequark: sayma_amc: add RTM_FPGA_CFG pins.
<sb0> we don't need MMC
<sb0> but Greg and Joe added it, and it controls many things on the board (power supply, JTAG, ethernet initialization), and generously seasons them with bugs
<sb0> JTAG goes to another Rube-Goldberg machine, this SCANSTA112 chip
<sb0> controlled by the MMC
<bb-m-labs> build #230 of migen is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/migen/builds/230
<whitequark> multicast jtag?!
<whitequark> what are they smoking
<sb0> power on the crate -> 2/3 sayma configure from flash
<sb0> power cycle -> 0/3
<sb0> sigh...
<sb0> this thing can do multicast?
<sb0> I didn't even know that
<whitequark> I didn't know multicast jtag exists
<whitequark> that sounds like completely defeating the point of jtag
<sb0> it says "multidrop", not "multicast"
<sb0> afaik it's like a mux, it cannot do things like broadcast
<whitequark> The 8 Address Inputs Support up to 249 Unique Slot Addresses, an Interrogation Address, Broadcast Address, and 4 Multi-Cast Group Addresses (Address 000000 is Reserved)
<sb0> Greg added it to close the JTAG chain when the RTM is removed. of course, a simple tri-state CMOS buffer controlled by the RTM detection pin would have done the same, with fewer parts and without at least one MMC bug that did not miss the opportunity to manifest itself
<whitequark> wtf
<whitequark> that's an absurdly complex solution
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
<sb0> the MCH is on 192.168.1.80
<sb0> it needs a password that I don't have, though
<sb0> ah it's the default
<sb0> root/nat
<sb0> hahaha the MCH doesn't find the ethernet link either
<whitequark> sb0: what should I use for programming the RTM?
<whitequark> write a simple serializer?
<sb0> whitequark, yes
<whitequark> CSR?
<sb0> just software bitbang if that's fast enough (do the math) or some gateware
<whitequark> oh, does the FPGA have internal pullups i can enable?
<sb0> the NAT web interface is very ugly
<sb0> whitequark, yes it has internal pullups
<whitequark> how do I use them from migen?
<whitequark> thanks
<whitequark> sb0: should I assign some domain to MCH while I'm at it?
<sb0> yes
<whitequark> which?
<sb0> tschernobyl
<sb0> or just mch
<whitequark> ah, I see you're graduating from "trash fire" to something larger
<whitequark> tschernobyl.lab.m-labs.hk done
<whitequark> sb0: are the saymas up?
<whitequark> oh I crashed the FTDI chip again, damn it
<whitequark> let me see if usbreset.c does it
<sb0> whitequark, no. they are in the crate. and nothing works anymore.
<sb0> did you expect that to go well?
<whitequark> sb0: looks like usbreset.c does work
<sb0> oh?
<whitequark> to reset the stuck FTDI chips
<sb0> so you get JTAG now?
<whitequark> no
<whitequark> but I don't get hung openocd either
<whitequark> actually, hm
<whitequark> how do I tell openocd to just enumerate the chain?
<sb0> by the way, sayma1 looks a bit more broken than the others
<sb0> (as far as the crate is concerned)
<whitequark> this is depressing
<sb0> oh I got the MMC bootloader on one of them
<sb0> so at least _that_ is working
<GitHub79> [migen] whitequark pushed 1 new commit to master: https://github.com/m-labs/migen/commit/61a055f01f32942d6883b48c8d82b1618f161197
<GitHub79> migen/master 61a055f whitequark: sayma_amc: add pullups to appropriate RTM_FPGA_CFG pins.
<sb0> can this bootloader be used from linux, by the way?
<sb0> it's the regular LPC bootloader
<sb0> over UART
<sb0> okay, entering that bootloader seems reliable on all three sayma in the crate
<sb0> so at least we can remotely debug them
<whitequark> no idea about the LPC bootloader
<whitequark> probably yes
<bb-m-labs> build #231 of migen is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/migen/builds/231
<sb0> well I guess we'll have to find out. contrary to Greg's claims, the MMC is definitely not something we can "forget" about ...
<sb0> does the MCH allow power-cycling each board remotely?
sb0 has quit [Quit: Leaving]
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
sb0 has joined #m-labs
cjbe has quit [Remote host closed the connection]
cjbe has joined #m-labs
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<GitHub122> [misoc] whitequark pushed 1 new commit to master: https://github.com/m-labs/misoc/commit/c5082e522e96142637cf4aecd5648b249c2018c5
<GitHub122> misoc/master c5082e5 whitequark: cores: add slave FPGA core.
<whitequark> sb0: ^ review please?
<GitHub56> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/444b901dbec5c9ef50b712043344666a76a30159
<GitHub56> artiq/master 444b901 whitequark: sayma: add RTM configuration port.
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<bb-m-labs> build #348 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/348
<bb-m-labs> build forced [ETA 18m56s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1066 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1066
<bb-m-labs> build #1936 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1936 blamelist: whitequark <whitequark@whitequark.org>
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build forced [ETA 18m56s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<sb0> whitequark, looks fine from a cursory inspection. so bitbanging is too slow?
<whitequark> sb0: not sure about the exact timings of the CSR bus but you can never configure the FPGA too quickly
<whitequark> didn't took me long to write anyway
<sb0> exact timings of the csr bus?
<whitequark> well, how long does it take to do a csr write?
<sb0> well yes, but it uses a bit of fpga resources (though we have plenty there) and more importantly when there is a bug the cycle is 30+ min of the vivado bloatware grinding its bits
<bb-m-labs> build #1067 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1067
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> entire two counters and a shift register. catastrophe
<bb-m-labs> build #1068 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1068
<whitequark> oh fuck you conda
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1069 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1069
<sb0> yes as I said we have plenty here. but we might use this in more constrained situations ...
<whitequark> sb0: what is the workaround for this conda bug?
<sb0> io.done needs a MultiReg I believe
<whitequark> MultuReg?
<whitequark> why?
<sb0> build another branch
<sb0> because it is asynchronous
<whitequark> oh right
<sb0> otherwise you can get metastability. the likelyhood here is extremely small but let's make it clean
<whitequark> yes I see it now
<sb0> io.program_b.eq(~self._program.storage) << make sure that vivado uses the I/O register here...
<GitHub50> [misoc] whitequark pushed 1 new commit to master: https://github.com/m-labs/misoc/commit/36e160a76f8082bb30792593cebe69db8822b9c6
<GitHub50> misoc/master 36e160a whitequark: cores: use MultiReg in SlaveFPGA for io.done.
<sb0> or just put another layer of registers on all output pads
<whitequark> gross
<sb0> not that gross, registers are cheap in FPGAs and help timing
<whitequark> also, does GPIOOut do that?
<whitequark> ah yes I see it does
<whitequark> or, hm
<whitequark> self.comb += [
<whitequark> ts.o.eq(self._out.storage[n]),
<sb0> storage is a register output. vivado puts those reliably into I/O registers
<sb0> but you are inverting the signal
<whitequark> sb0: so I'd just replace self.comb with self.sync there, right?
<sb0> yes, you can do that
<bb-m-labs> build #349 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/349
<sb0> does vivado have some option to force using IOB registers on some signals and throw an error if it can't?
<GitHub73> [misoc] whitequark pushed 1 new commit to master: https://github.com/m-labs/misoc/commit/b1c66d03df3e1ad76141fa98a1b602bb5911b29c
<GitHub73> misoc/master b1c66d0 whitequark: cores: use registered outputs in SlaveFPGA for output pins.
<whitequark> no idea
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone --branch=foo artiq-board
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<whitequark> You can use the below commands in vivado 2013.x for setting the IOB property to TRUE on all Input and output ports in the design.
<whitequark>
<whitequark> should we set that globally?
<whitequark> set_property IOB TRUE [all_inputs]
<whitequark> set_property IOB TRUE [all_outputs]
<sb0> hmm no
<sb0> there can be legitimate uses for non-IOB I/O
<sb0> comb outputs, forwarding clock, ioserdes
<sb0> so it has to be on specific signals
<bb-m-labs> build #350 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/350
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1070 of artiq-board is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1070
<whitequark> ok, no, there is no good way
<sb0> I think the branch has to exist
<whitequark> some horribly fragile TCL code
<whitequark> oh I'll just nuke the entire builder state then
<whitequark> fuck that shit
<sb0> can't this be integrated into the verilog output?
<sb0> things like (* IOB = true *) signal
<whitequark> no
<whitequark> people on xilinx forums come up with things like
<whitequark> set_attr IOB TRUE [get_cells -filter {PRIMITIVE_GROUP=~FLOP_LATCH} -of [get_pins -filter {direction=~out} -leaf -of [get_nets -of [get_pins -filter {direction=~in} -of [get_cells -of [get_pins -of [get_nets -of [get_ports output_port_name]]]]]]]]
<sb0> yeah sure, welcome to EDA world
<sb0> but iirc the verilog attribute worked, at least with ise
<whitequark> yes, with ise it was simple
<whitequark> but with vivado they broke it and never fixed
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone --branch=foo artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1071 of artiq-board is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1071
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1072 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1072
<whitequark> fucking hell
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<rjo> sb0: Wow. You are using at least 2 MMCM and 6 BUFG for that single PHY? You don't seem to be bothered with resources at all. Is that all because of your fear of using the integrated features? Is the level of resource usage going to scale?
<bb-m-labs> build #1073 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1073
<sb0> rjo, yes, non-BUFG xilinx routing doesn't work very well
<sb0> this does bother me and tried without before, but after a number of obscure vivado error messages I gave up
<sb0> they invented all sorts of limitations e.g. according to the doc a transceiver can drive a MMCM directly without a BUFG, but when you put more than one such MMCM then it won't route
<sb0> and btw all those MMCMs and BUFGs are only there to work around transceiver limitations
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1074 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1074
<whitequark> oh, hm
<sb0> in theory, the TX MMCM can be removed rather easily I think, if 1) routing the 125M clock to the fabric and the transceiver simultaneously works without bug or idiotic vivado behavior 2) if there is a component that lets you get 1 and 1/2 clocks (iirc some small clock buffers can do that)
<rjo> sb0: they only need one mmcm and 3 bufg.
<rjo> they = xilinx.
<GitHub132> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/44cd7dfa230379ab22dd101bfab17be3b2ce86b5
<GitHub132> artiq/master 44cd7df whitequark: conda: update misoc.
<sb0> since we're using the elastic buffer we can provide any clock to the fabric side of the transceiver that's derived from the same oscillator
<sb0> I know, they're using the integrated clock correction module for the RX side
<rjo> at least the RX BUFGs can all become BUFHs right now.
<sb0> yeah. I tried that, and you get weird vivado routing errors.
<sb0> but you may be more lucky...
<sb0> if my suggestion for removing the TX MMCM actually works, it's also applicable to the xilinx core
futarisIRCcloud has joined #m-labs
<whitequark> sb0: drtio tests are obnoxiously slow
<whitequark> or at least a few of them are
<whitequark> serwb.test_serwb_core (unittest.loader._FailedTest) ... ERROR
<whitequark> hm
<sb0> and really, all those 6 BUFGs, 2 MMCMs and Gearbox do is turn the transceiver into a simple 10:1 SERDES...
<bb-m-labs> build #1937 of artiq is complete: Failure [failed python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1937 blamelist: whitequark <whitequark@whitequark.org>
<whitequark> oh for fucks sake
<whitequark> _florent_: you broke tests.
<sb0> DRTIO doesn't have this problem since we're using 20:1, which is directly supported by the transceiver hardware
<rjo> using bufh for the tx side works fine here.
<sb0> ok. you might be able to remove another BUFG between the transceiver and MMCM
<sb0> and maybe turn the other one into another type of clock buffer
<rjo> sb0: i don't get the reasoning behind preferring resource inflation and NIH over biting the bullet and using the integrated features. after all, you are copying black box wizard output anyway.
<GitHub92> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/247167d34aa017e47c97e54823e2ea9e0f1bf977
<GitHub92> artiq/master 247167d whitequark: Revert "gateware/test/serwb: update and cleanup tests"...
<whitequark> _florent_: please do not commit code that you obviously did not run
<GitHub168> [misoc] jordens pushed 1 new commit to master: https://github.com/m-labs/misoc/commit/2a751a20229c49ba06523f64bf1523b41a940bc6
<GitHub168> misoc/master 2a751a2 Robert Jordens: a7_1000basex: TX BUFG -> BUFH
<sb0> rjo, having a 10:1 SERDES should not be a mess.
<rjo> sb0: maybe. but the reaction seems irrational.
<bb-m-labs> build #351 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/351
<sb0> also, 1000BASE-X requires you to look at the running disparity of the 8b10b encoder, and if you use clock correction then you have to pull the integrated 8b10b stuff, then you have to adapt that to the proprietary FPGA du jour, debug it, etc.
<sb0> and anyway: if we do 1000BASE-X again, we should use the IOSERDES, which is a sane design unlike the GTP, and an external CDR chip. then there are no ugly workarounds or resource waste...
<rjo> that seems short-sighted. there is the CDR chip risk, inflated resource usage again, inflexibility (that SFP will be unusable for faster DRTIO).
<bb-m-labs> build #1075 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1075 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1938 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1938 blamelist: whitequark <whitequark@whitequark.org>
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build forced [ETA 12m42s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<sb0> if I used the integrated 8b10b stuff I couldn't even simulate it with free tools, since it's encrypted secureip stuff
<rjo> we can simulate the transceivers now with free tools?
<sb0> no, but we can simulate the whole PHY up to the SERDES layer, including running disparity management
<sb0> as for inflated resource usage. the 8b10b core isn't big at all, is it?
<sb0> that's really the only "extra" component we need if using the IOSERDES
<rjo> sb0: you should have measured it's resource usage.
<bb-m-labs> build #1076 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1076
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1077 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1077
<rjo> and all the clocking rx and tx side, buffers, disparity management, etc is for free?
<sb0> you need those when using the transceiver features as well
<whitequark> The following specifications were found to be in conflict:
<whitequark> - artiq-sayma_rtm 4.0.dev py_419+git247167d3 -> artiq 4.0.dev py_419+git247167d3 -> openocd 0.10.0+git1
<whitequark> - artiq-dev 4.0.dev py_419+git247167d3 -> openocd 0.10.0+git2
<whitequark> conda is insane
<sb0> 1000base-x adds specific constraints on top of 8b10b re. running disparity
<sb0> and they're just a few FSM states/transitions. nothing using a lot of resources...
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
rohitksingh-demo has joined #m-labs
<bb-m-labs> build #1078 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1078
<whitequark> ok you know what, fuck that
<GitHub191> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/3eb882b6b75c65a28d180374f20ad6f7995a988e
<GitHub191> artiq/master 3eb882b whitequark: conda: remove openocd version constraint....
<whitequark> why do we even have version constraints in the first place? let's just recommend nuking the entire ~/miniconda and installing it from scratch every time.
<whitequark> at least that works reliably.
<bb-m-labs> build #1079 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1079 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1939 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1939 blamelist: whitequark <whitequark@whitequark.org>
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rt artiq-board
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build #1080 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1080
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<whitequark> sb0: opinion: artiq-specific stuff should not be in migen/misoc
<sb0> except for the board files, there shouldn't be much...
<whitequark> what's their place in migen/misoc anyway?
<whitequark> i agree with mithro that migen and misoc should be generic...
<sb0> that's just where the other board files are
<sb0> where do you suggest putting board files?
<cr1901_modern> Can kasli be used as a generic board?
<whitequark> artiq.gateware.targets.kasli ?
<bb-m-labs> build #1081 of artiq-board is complete: Failure [failed anaconda_upload] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1081
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<whitequark> WTF
<rjo> cr1901_modern: yes.
<bb-m-labs> build #1082 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1082
<whitequark> so what do y'all think about my idea to rewrite conda-build so it's not shit?
<cr1901_modern> Then I say keep the boards in migen/misoc.
<whitequark> because I seriously have no idea how to fix any of this
<cr1901_modern> I'm surprised you didn't write your own package manager yet, tbh
<whitequark> I did
<whitequark> long ago
<whitequark> I was like 16 and it worked far better than conda
<rjo> whitequark: please don't do that.
<rjo> whitequark: there are so many construction sites. can we consolidate them first?
<sb0> how did that break anyway? did you delete the conda state? do you have a backup?
mumptai has joined #m-labs
<whitequark> yes, I reinstalled it from scratch
<whitequark> oh
<whitequark> this one is easy, sec
<whitequark> okay, next best thing
<whitequark> cache the conda cache and kill its state every time and recreate it from scratch
<sb0> how do i turn on the full power supplies to the AMCs in the nat crate? this seems to be the problem...
<sb0> (ignoring IPMI)
rohitksingh-demo has quit [Quit: Leaving.]
mumptai has quit [Quit: Verlassend]
rohitksingh-demo has joined #m-labs
<rjo> sb0: that was explained in the issues iirc
rohitksingh-demo has quit [Client Quit]
<sb0> rjo, my PHY+microscope = 225 LUTs. xilinx phy alone = 518 LUTs. both with autonegociation. that's not a very fair comparison since vivado might simplify the data input in the microscope case, but I see no big issue here.
<sb0> yes, the clocking is messy and inefficient, but blame that on xilinx, it's their fault if getting something as basic as a 10:1 SERDES is like that...
<sb0> 8b10b is actually very efficient to implement in LUTs
rohitksingh has quit [Quit: Leaving.]
<rjo> sb0: simplify as in "remove all logic"? but my biggest concern is probably not luts but mmcm/pll/bufgh. how is that going to work when kasli is a drtio master and the other two sfp ports presumable also need resources? aren't you just creating much bigger issues for the future?
<sb0> it can't remove all logic since there is still the autonegociation and some microscope probes
rohitksingh-demo has joined #m-labs
rohitksingh-demo has quit [Client Quit]
<sb0> drtio uses 20:1 and that's 1 BUFG for both TX and 1 BUFG for each RX
<sb0> (in minimum config)
<sb0> MMCM is optional
<rjo> ok. so there won't be any complaining about lack of resources when we do that?
<sb0> no. we have a pretty big FPGA anyway.
<sb0> MMCM in the RX synchronizer is also replaceable by manually placed/routed structures
<sb0> that's actually a cleaner way of doing it, but requires digging deeper into vivado
rohitksingh-demo has joined #m-labs
<rjo> i think it's going to be pretty full with all the rtio channels.
rohitksingh-demo has quit [Client Quit]
rohitksingh-demo has joined #m-labs
<sb0> what are those RTIO channels made of?
<sb0> TTL and SPI should not be expensive, especially with SED
<rjo> go have a look.
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<rjo> with just 24 ttl rtio output channels i am at 30% (20k) LUTs used.
<rjo> sb0: i reduced the cpu clocks to 101 MHz. now the DRAM doesn't work. https://hastebin.com/oyijayahog.rb
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1083 of artiq-board is complete: Failure [failed conda_clean] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1083
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
futarisIRCcloud has joined #m-labs
rohitksingh-demo has quit [Quit: Leaving.]
<GitHub127> [misoc] jordens created kasli-100mhz (+3 new commits): https://github.com/m-labs/misoc/compare/d38596f16984^...7126ec48be3d
<GitHub127> misoc/kasli-100mhz d38596f Robert Jordens: kasli: drive ddram sysx4 with BUFH
<GitHub127> misoc/kasli-100mhz 8e26230 Robert Jordens: kasli: drive sys fabric from clk125
<GitHub127> misoc/kasli-100mhz 7126ec4 Robert Jordens: kasli: reduce clock to 101 MHz...
<GitHub70> [misoc] jordens fast-forwarded master from 2a751a2 to 8e26230: https://github.com/m-labs/misoc/compare/2a751a20229c...8e2623056a9f
hartytp has joined #m-labs
stekern has quit [Read error: No route to host]
<bb-m-labs> build #1084 of artiq-board is complete: Failure [failed anaconda_upload] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1084
<whitequark> oh, of *course* miniconda is not movable in the filesystem
<whitequark> so much for that idea
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_rtm artiq-board
<bb-m-labs> build forced [ETA 9m25s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1085 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1085
rohitksingh-demo has joined #m-labs
<whitequark> bb-m-labs: force build --props=package=artiq-sayma_amc-standalone artiq-board
<bb-m-labs> build forced [ETA 16m14s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1086 of artiq-board is complete: Failure [failed anaconda_upload] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1086
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
<GitHub-m-labs> [buildbot-config] whitequark pushed 1 new commit to master: https://git.io/vNlgV
<GitHub-m-labs> buildbot-config/master dd675b8 whitequark: Work around conda bug with --output.
bb-m-labs has joined #m-labs
stekern has joined #m-labs
rohitksingh-demo has quit [Quit: Leaving.]
<hartytp> rj0: where are your Sayma photos?
<hartytp> not on the wiki afaict
<rjo> hartytp: in the repo
<hartytp> thanks
<key2> rjo: I modified jtagspi.c in order to add the command to set QE bit. Now it works on flash other than micron.
marmelada has joined #m-labs
<hartytp> may have found why my JSED links fail....
<marmelada> hey, everyone
<marmelada> to test sayma amc with artiq, which gateware should I flash?
<marmelada> misoc_master_sayma_amc?
<marmelada> and can I do so with artiq_flash?
<rjo> key2: ack. what forces you to use the hardware manager?
<rjo> hartytp: what is it?
<hartytp> see git hub
<hartytp> no decoupling on DACs...
<hartytp> caps not populated properly
<hartytp> QC failure in a big way
<rjo> hartytp: that's an erratum by greg. manual work
<rjo> the footprint is wrong. the decoupling is effectively halved now.
<hartytp> well, my board is v different to the photos you posted
<hartytp> looks like the manual rework wasn't done on my board
<rjo> hartytp: always check with the errata.
<hartytp> I know its on the errata, but thought Greg had already done it
<hartytp> anyway, fixing now will then retry
<hartytp> sec
<rjo> hartytp: looks exactly like greg wanted it to look.
<rjo> hartytp: *don't* place them on the footprints. that doesn't help.
<rjo> marmelada: yes.
<rjo> marmelada: load the rtm first manually
<rjo> sb0: ^^ could you describe the procedure?
<sb0> plugged in Florent's board. it is different than mine. no 1.8V bug so far + serwb works reliably. also a new bug: the board won't power up unless the AMC/SATA adapter is plugged in
<rjo> sb0: i remember that. same when i had it. that's just some population option or mmc thing. forgot which. greg mentioned it.
<rjo> sb0: the amc sata adapter or the rtm
<sb0> amc sata adapter
<rjo> sb0: yes. but either should work.
<sb0> we're using the actual rtm to test serwb
<sb0> so Florent's board is sayma3 now. the µTCA chassis power is still borked.
<sb0> sayma3 is independently powered
<key2> rjo: the fact that only hardware manager can put QE bit
<key2> rjo: without hardware manager, if you burn your file in a non micron flash, your flash won't start in QSPI but simple spi...
<key2> rjo: and of course the FPGA won't work
<rjo> key2: the flash boots up in the state set by its non-volatile options. from factory they are all fine and openocd should work. who messed that up on your flash? the hardware manager?
<sb0> marmelada, and for artiq_flash it's like with the kc705, except that there is this bug https://github.com/m-labs/artiq/issues/890 that you can work around by using -d, --srcbuild or editing artiq_flash.py
<key2> rjo: no by default only micron are in quad mode
<key2> rjo: macronix are by default in single mode
<rjo> key2: works fine on kasli. we have a spansion flash and it is happily doing fast io.
<hartytp> why are they on the footprints on your photo?
<rjo> hartytp: they are exactly as off-centered as yours.
<key2> rjo: that shows that hardware manager does have a role such as detecting if you are using a 1x or 4x spi and set correctly the QE bit when needed
<key2> rjo: which is not done by openocd
<hartytp> ?
<rjo> hartytp: that's not mine.
<hartytp> okay
<rjo> hartytp: that's greg's AOI photo.
<hartytp> aah
<hartytp> which is yours?
<hartytp> ?
<key2> rjo: it also states in the datasheet "QE bit. The Quad Enable (QE) bit, non-volatile bit, while it is "0" (factory default)..."
<rjo> key2: exactly. don't let that change. it's not helping.
<rjo> hartytp: yes.
<hartytp> k
<rjo> hartytp: well. that board has also been called "florent's" and is now in HK with _florent_ and sb0.
<key2> rjo: "0" = SIMPLE spi
<key2> rjo: of course I want it to change :)
<key2> rjo: otherwise we boot 4x slower
<key2> rjo: "QE bit. The Quad Enable (QE) bit, non-volatile bit, while it is "0" (factory default), it performs non-Quad and WP#, RESET# are enable. While QE is "1", it performs Quad I/O mode and WP#, RESET# are disabled. In the other word, if the system goes into four I/O mode (QE=1), the feature of HPM and RESET will be disabled"
<rjo> key2: no. read the datasheet. there are other ways to get fast reads.
<key2> rjo: the other way to switch to quad bit is to force a COmmand 35 !
<rjo> key2: if it is just about loading the bitstream then increase the config rate. that's cheaper and works well on most boards.
<key2> rjo: you can do that reliably only if you have a clk on EMCCLK
<key2> rjo: otherwise it's unstable if you passe 20x
<rjo> key2: it's a stupid idea to use those non-volatile modes. as you have noticed, it breaks the other tools.
<key2> rjo: also even at 20x, i'd rather have the flash in QSPI rather than simple SPI
<key2> rjo: I didn't use the volatile mode. it's just that by default it is not in QSPI mode
<key2> rjo: and the 2 ways to get it to qspi mode is either send a CMD 35 or to set QE to 1
<rjo> key2: and that's good.
<key2> rjo: but the micron is in QSPI mode by default
<key2> rjo: I don't understand why you suggest to use it in simple spi mode rather than qspi
<rjo> key2: if micron flashes were in QSPI mode by default they wouldn't work with openocd.
<key2> hey
<key2> any flash can perform simple SPI mode
<key2> even if in qspi
<rjo> not if they are in the non-volatile QSPI mode.
<key2> yes evebn
<key2> the fpga always starts in simple SPI
<key2> reads the first bytes to know how fast it shoudl go, what mode and so on
<key2> then switches
<key2> if it did use a CMD 35 here, it would be solved
<key2> but it doesnt
<key2> so it counts on your flash to be in QSPI mode by default
<rjo> it just changes the command.
<key2> fact is: if I set the QE bit to 1
<key2> then it works
<key2> while 0 is default
<key2> AND fact is hardware manager does set it to 1 to
<key2> while it is 0 by default
<marmelada> sb0: I get this error: unable to open ftdi device with vid 0403, pid 6011, description 'Quad RS232-HS', serial '*' at bus location '*'
<key2> as a consequance, if I ever flash a macronix with hardware manager, then openocd works
<sb0> marmelada, check permissions
<marmelada> in /dev I see ttyUSB0 to 3
<key2> rjo: but if I never do that, then openocd write the file properly, but the fpga never boots !
<marmelada> and I added myself to plugdev, as was described here: https://m-labs.hk/artiq/manual-release-3/installing.html#install-openocd
<marmelada> and applied these rules
<sb0> ah
<sb0> did you log out and log back in?
<marmelada> I was previously in plugdev group
<sb0> try running it as root
<marmelada> however I'll try that now, never hurts ;)
<marmelada> ok, now it cannot find config files, so that must be it
<sb0> what config files?
<marmelada> cpld/xilinx-xc7.cfg
<key2> marmelada: you're under linux or windows ?
<key2> ha root...
<key2> linux sorry
<marmelada> how can I check if rtm really is programmed?
<sb0> you should see openocd messages telling you of successful FPGA detection, followed by "loaded bitstream"
<marmelada> bc it has errors during init, but loads gateware
<sb0> what errors?
<marmelada> ok, so it wasn't succesfull
<sb0> what errors?!
<marmelada> Error: JTAG scan chain interrogation failed: all zeroes Error: Check JTAG interface, timings, target power, etc. Error: Trying to use configured scan chain anyway... Error: xc7.tap: IR capture error; saw 0x00 not 0x01 Warn : Bypassing JTAG setup events due to errors
<sb0> okay. yes, that's a sayma hardware bug
<sb0> try power cycling the board and/or replugging the USB connector
<sb0> is your 1.8V LED on?
<marmelada> yes
<marmelada> power-cycling (3x) didn't help, could this be usb cable?
<marmelada> I saw that you discussed this
<marmelada> though same cable worked with kasli on 25MHz
<sb0> did you also unplug and replug the USB cable?
<marmelada> yes
<sb0> part of sayma is USB-powered and subject to bugs that persist when the main power is cycled
<marmelada> ok, now without unplugging the cable it worked
<sb0> okay. good to see that typical sayma intermittent bugs also happen at WUT.
<marmelada> ok, we're investigating it
<rjo> sb0: why is CSR_BASE = 0x60000000 < 0x80000000 in the cached region now? is that useful?
<sb0> everything is both in the non-cached and cached regions
<sb0> but CSRs are always accessed with bit 31 set
<rjo> sb0: CSR_BASE is used nowhere.
<rjo> i.e. this is ok.
<marmelada> sb0: we have now sayma in this "failing" state
<marmelada> and in /dev I see ttyUSB0 before trying to flash and after trying it disappears
<marmelada> is this expected, or should ttyUSB0 always be there?
<rjo> marmelada: no. ttyUSB0 disappears on the first openocd invokation. that's desired.
<marmelada> ok
<sb0> marmelada, by the way, do you have a µTCA crate? JTAG seems to systematically fail when the sayma is inserted in there. I'm unsure if this is due to solely to a power configuration issue as Greg believes
<travis-ci> batonius/smoltcp#118 (master - cb5be48 : whitequark): The build passed.
<marmelada> rjo, sb0: seems we found the cause
<marmelada> greg will post in a minute on github
<hartytp> marmelada: great! Once you get that up and running, can you try running the DACs with the external 1.2GHz clock (need to change the mux settings and rebuild the gateware)
<hartytp> would be good to see if this works on your board
<marmelada> ok, could you share your setup here? https://github.com/m-labs/sinara/issues/468
<sb0> hartytp, how are you driving that external clock differentially?
<hartytp> sb0: what do you mean?
<sb0> how did you generate a 1.2GHz differential clock?
<hartytp> synth
<hartytp> single ended
<hartytp> 50R terminate other SMP
<hartytp> that's fine (see ADCLK948 data sheet)
<sb0> ok thanks
<sb0> for the 50R termination I guess I can solder a SMD resistor onto the connector pads on the RTM
<sb0> _florent_, ^
<rjo> who has the clock mezzaine that i added the pigtail to?
<marmelada> sb0: I think we have one utca crate
hartytp has quit [Ping timeout: 260 seconds]
<rjo> marmelada: while i have you here, could you give me a quick update which boards have been sent to technosystem? urukul v1.1, dio_bnc v1.2, dio_sma v1.2, zotino v1.1?
<GitHub177> [artiq] jordens opened issue #892: re-tighten openocd dependency https://github.com/m-labs/artiq/issues/892
<sb0> whitequark, so use sayma3 to develop the rtm loader
<sb0> it is also connected to the usual power-cycler, if that's needed
<GitHub32> [artiq] jordens pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/7405006668cf4dffd87b9cc9bba8af8f772c465c
<GitHub32> artiq/master 7405006 Robert Jordens: sayma: rtio clock is jesd fabric clock
<bb-m-labs> build #1087 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1087
<bb-m-labs> build #1940 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1940 blamelist: Robert Jordens <rj@m-labs.hk>
<GitHub37> [smoltcp] dlrobertson opened issue #124: Use Instant type instead of u64 https://github.com/m-labs/smoltcp/issues/124
<GitHub161> [artiq] gkasprow commented on issue #854: @sbourdeauducq I found what is going on with MII.... https://github.com/m-labs/artiq/issues/854#issuecomment-358051625
<GitHub159> [artiq] enjoy-digital pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/f73c3e59441d8c809d1f807a9aae6fd5865393f9
<GitHub159> artiq/master f73c3e5 Florent Kermarrec: gateware/test/serwb: update and cleanup test (v2...)
<_florent_> whitequark: sorry for the troubles, it should be fine now.
<GitHub3> [artiq] TheCakeIsAPi opened issue #893: artiq_session windows https://github.com/m-labs/artiq/issues/893
<bb-m-labs> build #1088 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1088
<bb-m-labs> build #1941 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1941 blamelist: Florent Kermarrec <florent@enjoy-digital.fr>
<GitHub157> [artiq] TheCakeIsAPi opened issue #894: binaries in wrong directory for artiq_flash https://github.com/m-labs/artiq/issues/894
<GitHub110> [artiq] TheCakeIsAPi opened issue #895: syntax error when parsing device_db.py https://github.com/m-labs/artiq/issues/895
<GitHub26> [sinara] jbqubit pushed 1 new commit to master: https://git.io/vN8o8
<GitHub26> sinara/master 506cc6c jbqubit: add images of zotino adapter boards
<GitHub28> [sinara] jbqubit pushed 1 new commit to master: https://git.io/vN8PV
<GitHub28> sinara/master ae46b74 jbqubit: NAT MCH configuration file for Sayma
<GitHub157> [artiq] hartytp commented on issue #854: Good catch Greg! Glad you've figured this out!... https://github.com/m-labs/artiq/issues/854#issuecomment-358109779
<GitHub19> [artiq] jordens commented on issue #893: Could you add the output of `conda list`? https://github.com/m-labs/artiq/issues/893#issuecomment-358123026
<GitHub136> [artiq] jordens commented on issue #895: A `SyntaxError` is just that: your file is not valid python. Could you please show the contests of the file. https://github.com/m-labs/artiq/issues/895#issuecomment-358123497
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
<GitHub-m-labs> [buildbot-config] whitequark pushed 1 new commit to master: https://git.io/vN87S
<GitHub-m-labs> buildbot-config/master 1623ea5 whitequark: Update board naming.
bb-m-labs has joined #m-labs
<GitHub193> [artiq] jbqubit commented on issue #854: I've paused to myself about how this Sayma subsystem is setup. @gkasprow please correct me if any of this is wrong. ... https://github.com/m-labs/artiq/issues/854#issuecomment-346898644
<GitHub38> [artiq] jbqubit commented on issue #854: I've paused to myself about how this Sayma subsystem is setup. @gkasprow please correct me if any of this is wrong. ... https://github.com/m-labs/artiq/issues/854#issuecomment-346898644
sn00n has quit [Read error: Connection reset by peer]
sn00n has joined #m-labs
<GitHub99> [artiq] jbqubit commented on issue #854: I've paused to myself about how this Sayma subsystem is setup. @gkasprow please correct me if any of this is wrong. ... https://github.com/m-labs/artiq/issues/854#issuecomment-346898644
<GitHub71> [artiq] jbqubit commented on issue #854: I've paused to myself about how this Sayma subsystem is setup. @gkasprow please correct me if any of this is wrong. ... https://github.com/m-labs/artiq/issues/854#issuecomment-346898644
<GitHub5> [artiq] jbqubit commented on issue #854: I've paused to myself about how this Sayma subsystem is setup. @gkasprow please correct me if any of this is wrong. ... https://github.com/m-labs/artiq/issues/854#issuecomment-346898644