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
balrog has quit [Ping timeout: 264 seconds]
balrog has joined #m-labs
balrog has quit [Ping timeout: 240 seconds]
balrog has joined #m-labs
rohitksingh_work has joined #m-labs
<GitHub-m-labs> [artiq] jbqubit commented on issue #908: Built from master with SAWG. Loaded onto board that I've had for many months -- not the one that @marmeladapk mentioned is in the mail. ... https://github.com/m-labs/artiq/issues/908#issuecomment-375531041
<GitHub-m-labs> [artiq] jbqubit commented on issue #908: In subsequent load.... success. ... https://github.com/m-labs/artiq/issues/908#issuecomment-375531969
sb0 has quit [Quit: Leaving]
early has quit [Quit: Leaving]
early has joined #m-labs
<davidc__> rjo: I don't have a ton of experience, I've mostly just used some Point Grey GIGE vision cameras with their own SDK
<davidc__> rjo: but I had to debug some stuff, so spent a bit of time fiddling with the SDK
<davidc__> * and looking at it in wireshark
sb0 has joined #m-labs
<sb0> whitequark, i think the errors you're seeing with openocd are just jtag chain confusion with/without rtm.
<sb0> /usr/local/share/openocd/scripts/board/sayma_amc.cfg doesn't work when the rtm *is* connected
<sb0> artiq_flash doesn't work when the rtm *is not* connected
<sb0> whitequark, additionally sayma-3 (florent's board) lacks a hardware rework to make the xadc work I think
<whitequark> hm okay
<sb0> whitequark, also you are the first one to try the DACs on sayma-1. like most things on sayma, whether it works or not depends heavily on the particular board (and the phase of the moon). what has been tested and confirmed to work (sometimes) is rtm-1 on sayma-3 (florent's)
<sb0> though we fixed a number of things since that test; with luck it may work
<whitequark> alright
<whitequark> is there an overview of the architecture somewhere?
<whitequark> or is it just undocumented migen code?
<sb0> architecture of?
<whitequark> DACs
<whitequark> there's this thing called JESD and everything
<whitequark> I'm not sure how it fits together
<whitequark> well I guess overall architecture of sayma
<sb0> there are JESD204 (google it) links between the AMC FPGA and the ADI DAC chips
<sb0> those DACs also have a SPI interface, which is connected to the RTM FPGA, and is accessed by the AMC FPGA over the serwb bridge
<whitequark> remind me, why do we have the AMC/RTM split in the first place?
<whitequark> are there multiple RTM boards planned?
<sb0> this is somewhat controversial and debatable, but 1) use of the desy clock backplane (which is now pretty much dead) 2) not enough space on one board 3) EMI and thermal considerations
<whitequark> yes, I see why it's controversial
<whitequark> ok, I think I understand what JESD204 is now
<whitequark> 12.5 Gbps, wow
<sb0> yeah *8
<whitequark> that explains why the FPGA costs a small fortune
<sb0> not really; USB3 chips don't cost a small fortune but have similar technology inside
<sb0> it's mostly xilinx market segmentation
<sb0> also those transceivers would certainly be cheaper if they weren't designed in such a stupid way
<whitequark> which stupid way?
<sb0> pack them with buggy hardwired features that rather belong in the fabric
<whitequark> ah
<sb0> plus many other problems that likely don't impact cost on the xilinx side
<sb0> at least the xilinx transceiver don't self-destruct when they are not clocked, unlike the altera ones
<whitequark> the altera ones do what?
<whitequark> what in the fuck
<sb0> iirc you also need some transceiver clock source connected in some way to the fpga, otherwise the software workaround doesn't work
<sb0> and it will of course not warn you if that clock source is malfunctioning
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: Reproducible on the SYSU target. An idle kernel does not appear to be necessary; I can make the error appear by interrupting one regular kernel with another regular kernel (e.g. running ``artiq_run`` while another instance was already running). https://github.com/m-labs/artiq/issues/950#issuecomment-375573467
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: KC705 is also affected. https://github.com/m-labs/artiq/issues/950#issuecomment-375573705
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: I guess what happens is simple: there are events programmed far into the future by the first kernel (since the LED frequency is low). When the second kernel takes over, the value of ``now_mu`` given by ``break_realtime`` is the value of the RTIO counter plus some delta, which is less than the timestamp of some already programmed events.... https://github.com/m-
sb0 has quit [Quit: Leaving]
<GitHub-m-labs> [artiq] whitequark commented on issue #950: Or just maintaining a counter somewhere in the runtime that records the maximum timestamp seen. https://github.com/m-labs/artiq/issues/950#issuecomment-375578164
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: No, the runtime is slow enough already, and this would not work with DMA. https://github.com/m-labs/artiq/issues/950#issuecomment-375579144
<GitHub-m-labs> [artiq] jordens commented on issue #950: Pinning the timestamp (`now_mu`) to the timestamp CSR would also make it survive across kernel evictions/crashes. https://github.com/m-labs/artiq/issues/950#issuecomment-375588352
<rjo> whitequark: did you have a chance to look at aravis?
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: The timestamp CSR does not necessarily contain the highest value submitted. https://github.com/m-labs/artiq/issues/950#issuecomment-375592283
<GitHub-m-labs> [artiq] hartytp commented on issue #951: 2017.4 here, although I've subsequently upgraded to 2017.4.1... https://github.com/m-labs/artiq/issues/951#issuecomment-375593664
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: It might be good enough though (and simple and quite consistent with the current break_realtime behavior within a kernel). https://github.com/m-labs/artiq/issues/950#issuecomment-375594106
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #951: According to Xilinx the .1 does not make a difference for Ultrascale. https://github.com/m-labs/artiq/issues/951#issuecomment-375595698
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #951: (the one we have at least) https://github.com/m-labs/artiq/issues/951#issuecomment-375595920
<GitHub-m-labs> [artiq] enjoy-digital commented on issue #908: @jbqubit: thanks for testing. https://github.com/m-labs/artiq/issues/908#issuecomment-375597539
<GitHub-m-labs> [artiq] jordens commented on issue #950: Yes. Pinning `now` to the CSR might also be a speed advantage (https://github.com/m-labs/artiq/issues/636). The only issue might be atomicity. But it would be an improvement in any case. https://github.com/m-labs/artiq/issues/950#issuecomment-375598343
<GitHub-m-labs> [artiq] jordens commented on issue #950: Pinning the timestamp (`now_mu`) to the timestamp CSR would also make it survive kernel evictions/crashes. https://github.com/m-labs/artiq/issues/950#issuecomment-375588352
hartytp has joined #m-labs
<hartytp> is there an artiq python way of doing something like
<hartytp> if self.ldac is not None: self.ldac.on()
<hartytp> (e.g. make it optional)
<hartytp> (testing Zotino driver atm
<rjo> hartytp: that will generally run into the unification issue.
<rjo> hartytp: maybe just make ldac mandatory.
<hartytp> okay would prefer to do that
<hartytp> it wasn't in the ad5360 driver
<hartytp> but that relied on the user initing ldac high, which seems nasty to me imho -- I'd rather the driver owned that pin completely
<rjo> hartytp: i don't think it relied on that. any external ldac control would have worked.
<rjo> hartytp: and it's ldac low.
<rjo> hartytp: on zotino you can rely on having LDAC.
<hartytp> rjo: at init LDAC should be driven high, no? Only driven low by load...
<GitHub-m-labs> [artiq] jordens pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/1553fc8c7df7150c00ce853dea71fc6840606f7e
<GitHub-m-labs> artiq/master 1553fc8 Robert Jordens: sed: reset `valid` in output sorter
<rjo> hartytp: i meant that load could be controlled externally (by non rtio-gpio if needed or pulled low permanently). in init and it you have ldac, yes, you should set it high.
<rjo> sb0: i have the feeling that the interrupt (EventManager) is typically involved in the timing paths for mor1kx in misoc on kasli. can we easily add some pipeline registers there?
<hartytp> seems like the set function in the ad5360 is incorrect
<hartytp> busy width varies depending on num channels updated
<hartytp> cf data sheet fig 9
<hartytp> fixing
<hartytp> okay, fixed
<hartytp> gtg now. will try to finish this eve
hartytp has quit [Quit: Page closed]
sb000 has joined #m-labs
<sb000> hartytp, maybe by redefining/overloading methods?
<sb000> rjo, does it pass timing when removed?
<sb000> we don't actually need interrupts at all, I think
<sb000> it's mostly there for legacy reasons
<bb-m-labs> build #1384 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1384
<sb000> hartytp, you could have a 'ldac setter' subdriver in a separate class, and instantiate a dummy with empty methods when ldac is not present
<GitHub-m-labs> [artiq] whitequark commented on issue #950: > No, the runtime is slow enough already, and this would not work with DMA.... https://github.com/m-labs/artiq/issues/950#issuecomment-375639522
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #950: The commit part can be done by the gateware when one given 32-bit part of the 64-bit word is written. LLVM would have to know about this, though. https://github.com/m-labs/artiq/issues/950#issuecomment-375644063
<whitequark> sb000: we need exceptions
<whitequark> but no, we don't use interrupts at all; used to use them for UART but that's not the case with Rust code
sb000 has quit [Ping timeout: 260 seconds]
<GitHub-m-labs> [artiq] jordens commented on issue #950: Maybe just use the timestamp csr instead of the global and drop the kernel protocol to store/load now. That would be a start. https://github.com/m-labs/artiq/issues/950#issuecomment-375646414
<bb-m-labs> build #805 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/805 blamelist: Robert Jordens <jordens@gmail.com>
<bb-m-labs> build #2218 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2218
rohitksingh_work has quit [Read error: Connection reset by peer]
sb0 has joined #m-labs
<GitHub172> [smoltcp] steynh opened issue #181: Can't create IcmpSocketBuffer without heap allocation https://github.com/m-labs/smoltcp/issues/181
<rjo> sb0: the interrupt seems to clear some of the timing failures but not all.
key2 has joined #m-labs
<key2> anyone aware of a project dealing with float numbers made with migen ?
<key2> thc
<key2> thx
<key2> that is a 2 float adder if I get it right?
<whitequark> rjo: sb0: this is what I get trying to use openocd with sayma-1:
<whitequark> this is sayma-3:
<whitequark> what is its problem?
<rjo> check the 1.8v supply, check the rtm connection, check your openocd script?
<sb0> key2, yes, and there are other operations in other files in that repos
<whitequark> it's not my openocd script, it's the one in artiq_flash
<sb0> whitequark, artiq_flash is *not* going to work on sayma-3 without modifications (no rtm connected)
<whitequark> okay, but it doesn't work on sayma-1 either
<whitequark> why?
<sb0> 1.8v bug from the looks of it
<sb0> power cycle
<key2> sb0: yep i saw that
<key2> sb0: very interesting. i'll try to make a butterfly fft with that
<GitHub124> [openocd] whitequark pushed 3 new commits to master: https://github.com/m-labs/openocd/compare/0b26b289fb04...c383a57adcff
<GitHub124> openocd/master a9b5776 whitequark: Fix warnings (-Wimplicit-fallthrough).
<GitHub124> openocd/master 1b974ef whitequark: Fix warnings (-Wformat-overflow).
<GitHub124> openocd/master c383a57 whitequark: Fix incorrect fallthrough.
<GitHub-m-labs> [artiq] cjbe commented on issue #958: @sbourdeauducq this fixes it. I observe no change in timing alignment between master and satellite serdes outputs over 30 restarts. https://github.com/m-labs/artiq/issues/958#issuecomment-375712247
<whitequark> sb0: yup, 1V8 bug
<whitequark> thanks!
<whitequark> should I solder something somewhere?
<sb0> one of the suggested workarounds (until there is finally bug-free firmware) was to put larger capacitors on 1.8V, and possibly other rails
<whitequark> you did that on some board already, right?
<sb0> I just added a small 4.7µF, that's why the boards don't die within a few minutes
<sb0> the exar capacitance settings are wrong... it's configured for larger caps
<sb0> though, we don't know yet if that's the *only* problem
<whitequark> this goddamn board
<whitequark> sb0: by the way did you know that the mechanical design of sayma amc's front panel is fucked?
<whitequark> once you plug something into the fmc cage it's not going back out
<whitequark> erm, sfp cage
<sb0> oh, and that's a problem with the front panel?
<sb0> file an issue
<whitequark> I tried to unplug the sfp cable and discovered that the front panel presses on the part of the cage that should flex
<whitequark> issue where? on sinara repo?
<sb0> for now, yes
<sb0> that was an issue on one kasli too
<whitequark> looks like it's already in https://github.com/m-labs/sinara/issues/209
<whitequark> sb0: now it hangs trying to write to the second flash
<sb0> does it hang or are you just flashing a large binary that takes time to write?
<whitequark> it doesn't print anything for a long time
<sb0> it's not printing anything when it writes
<sb0> only when erasing
<whitequark> oh
<whitequark> that's stupid
<whitequark> rjo: why did you disable slave FPGA bitstream loading?
<sb0> whitequark, because it doesn't work for sayma reasons and blocks firmware startup
<whitequark> sb0: can I get Allaki working without RTM bitstream?
<whitequark> probably not
<sb0> whitequark, load it with jtag
<sb0> see /home/sb/load_rtm
<sb0> minus the sayma intermittent bug, it recovers from AMC reloads, so you can (often) just leave it there
<sb0> _florent_, any progress fixing serwb? jesd initialization? jesd sc1?
<whitequark> got it all working. took me only a hour and a half...
<whitequark> what a waste of time
<whitequark> sb0: did you have scope probes somewhere?
<whitequark> I can't find any
<whitequark> only empty boxes
<sb0> whitequark, I don't have many; they are around the tables. note that the 2kV probe you had is burned (I replaced it with a 4kV one) so don't use that one
<_florent_> sb0: i'll work on that next week
<rjo> _florent_: re serwb, copying the I/O SERDES/DELAY reset/vtc pattern from the ddr phy may or may not make a difference. also note that (IIRC) the reset i implemented for sayma is different from what you have in sayma_test (and maybe litex as well) currently.
<_florent_> rjo: yes i have to look at what you did, it's probably better
<whitequark> sb0: can I reduce the DAC frequency to something like 100 MHz?
<whitequark> or does it have to run at 1.2 GHz?
<sb0> why reduce it?
<whitequark> the scope can't cope with 1.2 GHz...
<sb0> but you're looking at the dac output, not the dac clock
<sb0> the triangle wave test pattern is within the scope bandwidth
<whitequark> I'm looking at the dac clock now
<sb0> why?
<whitequark> because there is no output from any of the DAC SMAs
<whitequark> they are all just permanently high
<sb0> whats on the log?
<whitequark> nothing interesting
<sb0> if the dac clock was wrong there would be an error
<whitequark> define wrong
<sb0> did it do the prbs tests?
<whitequark> prbs tests?
<whitequark> what's that?
<sb0> see jesd204
<whitequark> where in artiq is that?
<sb0> there should be something in the log about it
<whitequark> there is nothing in the log about prbs...
<sb0> then the dacs have not started
<sb0> what is the full log?
<sb0> yeah it's crashed
<sb0> serwb bug maybe
<sb0> there is quite a lot of difference between your gateware and firmware
<sb0> could it be that? wrong CSR addresses?
<whitequark> hm
<whitequark> shouldn't that result in an exception?..
<whitequark> but yes, I guess so
<sb0> I don't see how you can catch all firmware/gateware CSR mismatches
<whitequark> no difference
<sb0> try the known-good amc/rtm combination I posted earlier
<sb0> i.e. put that rtm on sayma-3
<sb0> if that doesn't work then I have no idea, haven't seen this bug, try determining where it hangs
<whitequark> the RTM with the label 2?
<whitequark> okay...
<sb0> the rtm that has the resistor soldered into dac_clk_n
<whitequark> that's the RTM I'm currently using
<sb0> yes, but on sayma-1. i have not tested this. try on sayma-3.
<whitequark> sb0: I need to disable hmc830, right?
<sb0> whitequark, yes
<whitequark> [ 5.581018s] WARN(board_artiq::ad9154): AD9154-0 config attempt #18 failed (AD9154 SERDES PLL lock timeout), retrying
<whitequark> does this mean a problem with DAC clock?
<rjo> it is consistent with that. yes.
<whitequark> ok, no idea what's happening here
<whitequark> the clock is definitely present on the SMA
mumptai has joined #m-labs
key2 has quit [Ping timeout: 260 seconds]