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
<bb-m-labs> build #906 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/906
<bb-m-labs> build #1795 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1795 blamelist: whitequark <whitequark@whitequark.org>
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<GitHub-m-labs> [buildbot-config] whitequark force-pushed master from 1d94d48 to 0fa7fb3: https://git.io/v1foL
<GitHub-m-labs> buildbot-config/master 0fa7fb3 whitequark: Eradicate `conda build --use-local`....
<felix_> _florent_: is it intentional that only odt0 (and not odt1) is driven on kc705? for single rank modules this makes no difference, but i'm not sure if this might cause problems with dual rank modules. even if there's no dual rank support, i'd drive the odt1 pin to the level where the second rank can't interfere with the first rank. same for the chip select inputs of the sodimm
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #1796 of artiq is complete: Exception [exception interrupted conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1796 blamelist: whitequark <whitequark@whitequark.org>
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #1797 of artiq is complete: Exception [exception interrupted conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1797
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<bb-m-labs> build #1798 of artiq is complete: Exception [exception interrupted conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1798
<felix_> hmm, how should i deal with the muxes between the gtp clocks on the fmc connector and the gtp clock inputs of the fpga on the ac701? it seems that there's currently no abstraction for that, since there aren't clock multiplexers on the kc705
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<bb-m-labs> build #1799 of artiq is complete: Failure [failed conda_create conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1799
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<GitHub-m-labs> [buildbot-config] whitequark pushed 1 new commit to master: https://git.io/vbeZx
<GitHub-m-labs> buildbot-config/master bd1c272 whitequark: Try to dig ourselves out of the --use-local/--no-update-deps mess....
<bb-m-labs> build #907 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/907
<bb-m-labs> build #1800 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1800
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #1801 of artiq is complete: Exception [exception conda_build_output conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1801
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<bb-m-labs> build #908 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/908
<bb-m-labs> build #1802 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1802
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #909 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/909
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<bb-m-labs> build #910 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/910
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #911 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/911
<bb-m-labs> build #912 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/912
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<GitHub-m-labs> [buildbot-config] whitequark force-pushed master from 008e101 to 80a93a2: https://git.io/v1foL
bb-m-labs has quit [Client Quit]
<GitHub-m-labs> [buildbot-config] whitequark pushed 1 new commit to master: https://git.io/vbeWO
<GitHub-m-labs> buildbot-config/master b6c2555 whitequark: Correctly extract output name in presence of interpolations.
bb-m-labs has joined #m-labs
<bb-m-labs> build #913 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/913
<bb-m-labs> build #914 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/914
<bb-m-labs> build #915 of artiq-board is complete: Exception [exception conda_build_output] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/915
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<GitHub-m-labs> [buildbot-config] whitequark force-pushed master from b6c2555 to b5114c2: https://git.io/v1foL
<GitHub-m-labs> buildbot-config/master b5114c2 whitequark: Correctly extract output name in presence of interpolations.
<bb-m-labs> build #916 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/916
<bb-m-labs> build #917 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/917
<bb-m-labs> build #1803 of artiq is complete: Exception [exception] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1803
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #918 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/918
bb-m-labs has quit [Client Quit]
bb-m-labs has joined #m-labs
<bb-m-labs> build #919 of artiq-board is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/919
<GitHub-m-labs> [buildbot-config] whitequark force-pushed master from 4349995 to 722cd9d: https://git.io/v1foL
<GitHub-m-labs> buildbot-config/master 722cd9d whitequark: Add back the `conda clean -i` invocation....
<bb-m-labs> build #920 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/920
<bb-m-labs> build #1804 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1804
<whitequark> sb0: requesting permission to add a feature to the UART that resets the entire gateware
<whitequark> why? this solves a *lot* of problems in one go. 1. no need for racy coordination between artiq_flash reset and flterm. 2. no need for hardcoded tftp addresses. 3. works without functional ethernet. 4. does not have the issue where the UART and the JTAG dongle don't match each other.
<whitequark> 5. if the bitstream is not flashed but merely loaded, then this permits resetting soft-CPU without losing the bitstream as a side effect of JTAG reset (I think)
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/vbe8r
<GitHub-m-labs> buildbot-config/master 89cff68 whitequark: Remove an extraneous suffix.
bb-m-labs has joined #m-labs
rohitksingh_work has joined #m-labs
rohitksingh_work has quit [Read error: Connection reset by peer]
FelixVi has quit []
rohitksingh_work has joined #m-labs
FabM has joined #m-labs
<GitHub152> [smoltcp] whitequark commented on pull request #72 53e5009: Extra newline https://github.com/m-labs/smoltcp/pull/72#discussion_r149845738
<GitHub112> [smoltcp] whitequark commented on pull request #72 53e5009: Missing dots in doc-comments here and in many other places. https://github.com/m-labs/smoltcp/pull/72#discussion_r153162363
<GitHub71> [smoltcp] whitequark commented on pull request #72 53e5009: Let's mark this entire file `#[cfg_attr(not(and(feature = "proto-ipv4", feature = "proto-ipv6")), allow(dead_code)]`. https://github.com/m-labs/smoltcp/pull/72#discussion_r153158717
<GitHub104> [smoltcp] whitequark commented on pull request #72 53e5009: :+1: An excellent job refactoring this method, it is very easy to see now that it is correct. https://github.com/m-labs/smoltcp/pull/72#discussion_r153159085
<GitHub197> [smoltcp] whitequark commented on pull request #72 53e5009: This could really use a very simple `::` shortener (start munging at the first `0u16` part). https://github.com/m-labs/smoltcp/pull/72#discussion_r153162872
bunnie_ has quit [Ping timeout: 250 seconds]
bunnie has joined #m-labs
<sb0> whitequark, you should load the bitstream, not flash it
<sb0> are you using TFTP at all?
<GitHub83> [smoltcp] whitequark commented on pull request #75 7e94c56: Clever trick. https://github.com/m-labs/smoltcp/pull/75#discussion_r151321303
<GitHub152> [smoltcp] whitequark commented on pull request #75 7e94c56: No, this just means that servers may insert pad options if they want, and clients should ignore them. It's for convenience of server implementers. https://github.com/m-labs/smoltcp/pull/75#discussion_r153166796
<whitequark> sb0: no
<whitequark> TFTP is too annoying to coordinate
<whitequark> I have to carefully time *three* processes: FPGA reset, input through console, and TFTP upload
<whitequark> kthx no
<whitequark> as for loading and not flashing the bitstream, well right now that's too annoying because I use `artiq_flash start` as a SoC reset
X-Scale has joined #m-labs
<whitequark> the reason being that whatever's flashed there is not necessarily available on the same host where artiq_flash is running
<sb0> so you prefer storing the bitstream in the board's flash than on the lab computer's hard disk? how does that make thing easier?
<whitequark> because if I make a mistake somewhere and instead of loading the bitstream from hard disk it gets loaded from the flash, I get bizarre bugs
<whitequark> if there's only one source of truth (flash that is) there can be no chance of that
<whitequark> you have no idea how much time I wasted on this stuff
<whitequark> anyway, if I can load a bitstream *and never touch JTAG again*, then your proposed workload is OK
<whitequark> which is why I want this functionality in the UART
<sb0> doesn't the bios boot from tftp if the flash is empty?
<sb0> then the timing is simply: prepare tftp server, then after the server is ready, load the bitstream
<whitequark> that's not "simply" at all
<whitequark> that's just more variables: whether the buildbot flashed it. whether you or rjo flashed it.
<sb0> you can write a script that locks the board for you and then erases the flash
<whitequark> 95% of the time I want just "whatever was the last bitstream the buildbot loaded into SoC"
<whitequark> so this will require messing with conda channels, keeping an updated bitstream somewhere, ...
<sb0> you just said that whatever was in the flash is not reliable, e.g. if someone else flashed it
<sb0> or we can agree that only the buildbot should touch the flash
<whitequark> that's the idea, yes
<whitequark> the buildbot touches flash and JTAG, nothing else does
<sb0> how do we debug gateware then? this needs modifying the bitstream
<whitequark> hm, correction: the buildbot touches flash, anyone who needs new bitstream touches JTAG, anyone who only needs new firmware touches UART
<whitequark> that would be ideal IMO
<sb0> why UART and not a FPGA reset from OpenOCD, which is 1 command and can be done using existing features?
<whitequark> because that's racy
<sb0> not really, you just open the serial port before issuing the openocd command
<whitequark> that doesn't actually work because spawning flterm takes a ton of time
<whitequark> so, unless I specifically look at something in flterm's output indicating that it is listening, I can't issue any openocd command
<sb0> flterm is python, you can import it and run the parts that you want from artiq_devtool perhaps?
<whitequark> artiq_devtool runs locally, flterm runs remotely
<sb0> then listening for output should be OK
<sb0> resetting properly from UART is nontrivial and requires gateware changes that have to be made in every platform etc.
<whitequark> is it possible to set some flag in SoC memory via JTAG, maybe?
<sb0> what do you mean?
<sb0> and what for?
<whitequark> as a replacement to the timeout listening for download prompt in BIOS
<whitequark> or adjacent
<whitequark> flag set = bios waits forever
<sb0> ah, maybe, let me check fpga docs
<sb0> but in any case this sounds more complicated than spawning flterm over ssh and waiting for a "I'm listening" message
<sb0> also flterm needs to see the magic string from the bios before sending firmware
<whitequark> oh, if I can set a flag I'll use TFTP
<whitequark> so flterm doesn't need to be in the loop of firmware download at all
<sb0> ah there's eFUSE but that's OTP
<whitequark> I could erase the first block of runtime each time but that consumes SPI flash cycles, right? so, undesirable
<whitequark> what an annoying issue
<sb0> AXSS Register (
<sb0> 01101
<sb0> )
<sb0> This register supports the USR_ACCESSE2 primitive. This primitive provides direct FPGA
<sb0> logic access to a 32-bit value stored by the FPGA bitstream, or re-written through the
<sb0> external or internal configuration ports as a configuration register. USR_ACCESS can be
<sb0> configured with a 32-bit user-specified value or automatically loaded by the bitstream
<sb0> generation program with a timestamp.
<sb0> you can maybe craft a bitstream that writes it (and does nothing else) using this: https://github.com/quartiq/xilinx-bitstream
<sb0> also make sure that the artiq bitstreams don't erase it
<sb0> using the same tool
<sb0> maybe the value can be interpreted as a TFTP IP address, and if it is a valid IP, the BIOS does nothing else but TFTP
<sb0> this USR_ACCESSE2 just gives you the register value as a regular FPGA signal, it seems
<whitequark> actually, artiq bitstreams *should* erase it
<whitequark> since they ought to boot from flash by default
<sb0> also it would be nice if 1. your TFTP server deletes the file after it has been downloaded once 2. the buildbot erases the register value
<sb0> or the buildbot uses the same TFTP mechanism.
<sb0> well no, you want to 1. write register 2. load stock artiq bitstream
<whitequark> sure, the buildbot using this infra is blocked on the very same issues
<whitequark> how about 1. load stock artiq bitstream 2. write register 3. release reset?
<whitequark> or even further
<whitequark> 1. write register 2. reset ?
<whitequark> (in case the BIOS in the flash is functional)
<whitequark> (and the bitstream is useful)
<whitequark> vivado docs say the value can be reconfigured on the fly
<whitequark> ok, I believe that will work
<whitequark> thanks!
<whitequark> sb0: btw the ethernet switch issue
<whitequark> it's errors in the preamble
<whitequark> I didn't thoroughly go through the gateware for that yet, it's written in some convoluted way
<whitequark> sb0: speaking of that, at this point, it would be extremely easy to add SLIP support to smoltcp
<whitequark> so that sayma could be used even without working Ethernet
<whitequark> any interest in that?
<GitHub77> [smoltcp] whitequark commented on issue #55: I have reconsidered it and, indeed, it makes perfect sense. Also, we can just have a `ManagedSlice<'a, Managed<'b, for<'c> Device<'c>>>` to avoid using `Box`. https://github.com/m-labs/smoltcp/issues/55#issuecomment-347164557
<sb0> is there any reason for the gateware to check the preamble at all?
<sb0> if the frame CRC is valid, we can assume there was a legit attempt to send us the frame, no?
<sb0> whitequark, 1. load stock artiq bitstream 2. write register << that has a race
<sb0> SLIP, yes, if it's indeed extremely easy
<whitequark> sb0: load but keep in reset
<sb0> and how do you unreset?
<whitequark> well I assume openocd can do that somehow
<sb0> hmm maybe. this needs digging into openocd.
rohitksingh_work has quit [Read error: Connection reset by peer]
<sb0> but re. SLIP, the priority should be to get the ethernet core to actually work...
<sb0> whitequark, so if we kill the preamble checker in the ethernet core, is the switch issue gone?
<sb0> _florent_, any ideas?
<whitequark> sb0: haven't checked yet
<whitequark> sb0: why does netboot() try to pull files from tftp server as opposed to the other direction?
<whitequark> I imagine `put bios.bin main_ram` would be better
<sb0> I guess you can simply change it to the other direction ...
<whitequark> ok
<sb0> whitequark, oh, I remember, that's because it would also download a linux initrd
rohitksingh has joined #m-labs
<sb0> _florent_, in hmc830 you changed this:
<sb0> - (0x3, 0x28), // n_divider
<sb0> + (0x3, 0x30), // n_divider
<sb0> why?
<sb0> oh changing the output frequency from 1GHz to 1.2GHz?
<sb0> dac clock: 600MHz (div=1) << shouldn't that be div=2 then?
<sb0> _florent_, there are still intermittent freezes at bridge init.
<sb0> _florent_, in fact, it fails all the time on sayma1 now ...
<sb0> [ 1.178961s] ERROR(board::hmc830_7043::hmc830): invalid HMC830 ID: 0x00ffffff
<sb0> is that the problem you have too?
<sb0> _florent_, please separate your commits. something with the message "get hmc830/7043 spi working" should not contain the serwb debug prints.
<sb0> or serwb clock constraints. that's 2 or 3 commits.
<whitequark> sb0: sure but you can also do `put initrd.img initrd` or just use addresses and parse them with strtoul.
<sb0> you also need to tell the device when to boot...
FelixVi has joined #m-labs
<bb-m-labs> build #921 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/921
<bb-m-labs> build #1805 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1805 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<sb0> anyway, supporting only 1 file (the runtime) and booting right after it is uploaded should be fine. i don't think anyone plays with linux anymore.
<sb0> okay now on sayma1 the bridge init passes, but hmc830 lock times out ...
<sb0> well it passes _intermittently_, of course
<sb0> jesus what a mess
<GitHub126> [misoc] whitequark pushed 1 new commit to master: https://git.io/vbv9X
<GitHub126> misoc/master a4d9228 whitequark: microudp: adapt for changes in liteeth core.
<bb-m-labs> build #288 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/288
<sb0> whitequark, just talked to the Maryland folks on the phone: their opinion is the SLIP workaround is not interesting and the focus should be on Ethernet
Ultrasauce has quit [Remote host closed the connection]
rjo has quit [Ping timeout: 268 seconds]
<whitequark> sb0: ack
<whitequark> sb0: I think I know how to fix Ethernet
<GitHub132> [artiq] sbourdeauducq commented on issue #837: The funny thing is that some packets still get through... https://github.com/m-labs/artiq/issues/837#issuecomment-347274425
<whitequark> doing it right now actually
rjo has joined #m-labs
<GitHub83> [artiq] sbourdeauducq opened issue #856: serwb intermittently fails to initialize https://github.com/m-labs/artiq/issues/856
<whitequark> sb0: what's the possible values of dw in liteeth?
<sb0> 8
<whitequark> that's it?
<sb0> yes
<whitequark> why even bother parameterizing then...
<sb0> I agree...
<whitequark> I want to rip it out because it makes fixing the preamble checker inconvenient
<whitequark> ACK?
<whitequark> hm, wait
<whitequark> if dw < phy.dw:
<whitequark> raise ValueError("Core data width({}) must be larger than PHY data width({})".format(dw, phy.dw))
<whitequark> but... all our PHYs have dw=8
<whitequark> ok whatever
Ultrasauce has joined #m-labs
<key2> where can i find an example of programming a flash with openocd ?
<GitHub112> [artiq] whitequark commented on issue #837: @sbourdeauducq If there is jitter of 1 octet at the beginning of the preamble that will also do the job. And it looks from my experiments like there's a probability of 4/5 that the preamble is not recognized. https://github.com/m-labs/artiq/issues/837#issuecomment-347281126
rohitksingh has quit [Quit: Leaving.]
<FelixVi> key2: I'd use xc3sprog (I find that easier to use) - xc3sprog -c ftdi -R -I<bscan_file> <path>/top.bit:w:0x0:BIT <path>/bios.bin:w:0x<addr>:BIN
<FelixVi> ftdi is *most likely* the right cable for what you want to do
<key2> sure
<key2> but i need to do it in 2 steps
<key2> first bscan
<key2> then bios.bin..
<FelixVi> my command does it in one shot
<FelixVi> but you can do it in 2 steps
<FelixVi> the -I<bscan> part uploads the bscan, then proceeds to upload the bit and bin files
<FelixVi> -R makes it reset the FPGA, so the new image is loaded
<FelixVi> so you most likely want - xc3sprog -c ftdi -R -I<bscan_file> <path>/bios.bin:w:BIN
<FelixVi> this will upload your bios to flash address 0, using the bscan file and then reset
rjo has quit [Ping timeout: 240 seconds]
rjo has joined #m-labs
<GitHub128> [artiq] cjbe commented on pull request #855 818dfae: Yep - that is much neater. https://github.com/m-labs/artiq/pull/855#discussion_r153336286
<GitHub189> [artiq] cjbe commented on pull request #855 3578395: I assume this is what you were looking for? Client() tidies up after itself if it has an exception, so the only logic that needs guarding seems to be the RPC. https://github.com/m-labs/artiq/pull/855#discussion_r153337383
<GitHub123> [artiq] gkasprow commented on issue #854: Guys, I will work on it very soon, hopefully tomorrow. https://github.com/m-labs/artiq/issues/854#issuecomment-347359888
<GitHub78> [smoltcp] dhslichter commented on issue #63: @whitequark @sbourdeauducq when do you anticipate DHCP support being implemented? https://github.com/m-labs/smoltcp/issues/63#issuecomment-347364455
<GitHub163> [sinara] gkasprow tagged 1.1rc1 at master: https://git.io/vbfRI
<GitHub48> [sinara] gkasprow tagged 3U_SMA/1.1rc1 at master: https://git.io/vbfRR
Gurty has quit [Ping timeout: 255 seconds]