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
<shuffle2> now complains it can't gen verilog for synth b/c of type ClockSignal
<shuffle2> very informative lol
<shuffle2> seems something is wrong with handling of sys_clk for some reason? happens just with verilog.convert too
<shuffle2> verilog.convert adds the sys domain, then comaplains that it's there
<shuffle2> if not added, complains it's not there
<cr1901_modern> The rules for whether verilog.convert adds clock domains differ between whether you're doing a build() or not
<cr1901_modern> I don't remember them offhand, but I find it screwy
<shuffle2> appears to have been happening because i was calling get_port more than once for a given Memory object
<sb0> shuffle2, indexing the memory object is for simulation
<sb0> calling get_port more than once is supported, for multi-ported memory.
<shuffle2> sb0: using more than one port does cause this exception, tho :(
<sb0> what exception? please post precise traceback/code/program output instead of vague descriptions
<sb0> we have many instances of migen dual-port memory that work fine, so ...
<shuffle2> https://ybin.me/p/946364eae96310d2#og9m+jJ1LhAi1SQ3j4j0yXmu+7xKmh/9fDFTSLkrF58=
<sb0> and the code? please minimize it
<shuffle2> so probably just more fail from trying to copy the examples?
<shuffle2> yea, i see now that if i don't assign the Memory to the self.specials, then there is no exception
<sb0> that's a strange way of organizing your code. why not create the Memory inside the A.__init__?
<sb0> and the Python convention is self, not s
<shuffle2> i'd like to have have a different module doing the writing than the reading
<shuffle2> i just haven't implemented the writer yet
<shuffle2> -have
<sb0> ok, if you add that second port you are creating to another module then you don't have the exception
<shuffle2> hah, ok
<sb0> get_port is *creating* a port. and all ports and the memory need to be added to one module
<GitHub129> [smoltcp] jackpot51 opened pull request #66: Allow receiving broadcast packets in UDP (master...master) https://git.io/vFL5c
<sb0> whitequark, any progress on the ethernet bug?
<sb0> shuffle2, the error messages could be a lot better. but when used correctly, dual port memories across different modules work totally fine.
_whitelogger has joined #m-labs
<GitHub76> [sinara] marmeladapk pushed 1 new commit to master: https://github.com/m-labs/sinara/commit/e56bb5912d55479bdea2d404d5597d35de656247
<GitHub76> sinara/master e56bb59 Paweł: Kasli - all extensions routed
<whitequark> sb0: some
<whitequark> I'm figuring out the various MIIs
<whitequark> is there a reason liteeth ignores RXERs?
<whitequark> shouldn't that result in immediately dropping any attempt to decode the frame?
<sb0> no. likely packets should be dropped when rxer has been asserted within them. _florent_ any comment?
<whitequark> other than that let me commit and push my counters stuff
<sb0> on the other hand, this should have little/no practical impact, since packets corrupted at the physical level are virtually guaranteed to fail ethernet CRC
<whitequark> sb0: what about the case where the ethernet core continues to process what it thinks is a packet and as a result misses the preamble of another one?
<sb0> is there such a case?
<whitequark> I'm not sure
<whitequark> I'm thinking about the reasons the bug can manifest
<sb0> I think ethernet has an interframe gap of many cycle that should prevent this from happening
<whitequark> ok
<sb0> is the bug due to the ethernet core dropping frames, or some tcp software issue?
<whitequark> we've figured that it's not a TCP issue long ago
<whitequark> it's not reproducible on any hardware I tested it though
<whitequark> only cjbe's hardware
<whitequark> so now I'm adding various counters that will increase if the core drops packets for some reason
<whitequark> well, added
<sb0> any hardware you tested = the 100M and 1G switches in the lab?
<whitequark> yes, and rjo's switch also has a different model
<whitequark> from those which fail
<sb0> whitequark, can you write that down in the issue and ask that they send us problematic switches?
<whitequark> ok
<GitHub118> [smoltcp] dlrobertson commented on issue #66: The destination address is not checked to see if it is the broadcast address before sending ICMP error responses currently (RFC 1122 § 3.2.2). Currently this conditional is the only thing keeping us from causing a broadcast storm due to a weird broadcast packet. The specific panic is [here](https://github.com/m-labs/smoltcp/blob/master/src/iface/ethernet.rs#L369), and is due to the packet created for
<GitHub0> [smoltcp] whitequark commented on issue #66: @dlrobertson Wow, your tests already paid off. Thanks a lot! https://git.io/vFLbI
calle__ has joined #m-labs
mumptai_ has quit [Ping timeout: 248 seconds]
<whitequark> sb0: btw what's no_retiming?
<shuffle2> is it better to use DifferentialOutput or just OBUFDS? DifferentialOutput seems nice as it's theoretically cross platform, right? can't get it to work tho :p
<shuffle2> seems most m-labs code just uses OBUFDS directly
<sb0> whitequark, it prevents the synthesizer from moving combinatorial logic across the register, i.e. the signal to which it is applied should be a direct D flip-flop output
<sb0> shuffle2, please give precise descriptions of problems instead of "can't get it to work" etc.
<cr1901_modern> sb0: What type of optimization would move a signal from "direct D flip-flop output"? I'm sure there are a few
<sb0> retiming
<cr1901_modern> Oh, hence "no_retiming"
<cr1901_modern> Makes sense
<cr1901_modern> what does "shreg_extract" do since both are required for CDCs
<cr1901_modern> (or at the very least you force-emit code w/ both of them)
<sb0> prevents use of SRL16/SRL32 primitives which have poor metastability resistance
<whitequark> sb0: are attributes like no_retiming portable?
<whitequark> i.e. can I put one in liteeth?
<sb0> whitequark, yes, in theory they are, i.e. if the backend implements them properly
<cr1901_modern> no_retiming is not a Xilinx-ism?
<sb0> retiming is not a xilinx invention
<sb0> srl16 is, but on platforms that don't have this kind of thing the attribute can simply be ignored
<cr1901_modern> I'm sure it's not an Xilinx invention but, I'm asking if other synthesizers will bitch.
<sb0> the backend in migen.build is supposed to insert the appropriate constraints for each synthesizer
<cr1901_modern> Oh that's what you mean by "if the backend implements them properly"?
<cr1901_modern> e.g. for instance, icestorm backend doesn't support MultiReg (or AsyncResetSynchronizer for that matter) b/c I never added the MultiRegImpl for it
<cr1901_modern> whitequark: i.e. can I put one in liteeth? <-- you mean, like `foo = Signal(attr="no_retiming")`, correct?
<whitequark> yes
<cr1901_modern> whitequark: Taking a quick look, for eg yosys, I can't find any indication "no_retiming" is support (ditto w/ arachne-pnr). So it's prob ignored.
<cr1901_modern> sb0: This was on the second page for google "no_retiming Xilinx" https://irclog.whitequark.org/m-labs/2016-10-29#18055317; did Migen ever support a NoRetiming/Keep class?
<sb0> no one is taking care of the yosys backend. does it work?
<sb0> yes but it's been replaced
<cr1901_modern> sb0: Yes, it works fine.
<whitequark> yosys doesn't do retiming
<whitequark> that needs feedback from timing analysis, right?
<cr1901_modern> My point is whether it causes synthesis to fail
<sb0> or some heuristics ...
<cr1901_modern> i.e. yosys bombs w/ an error saying "I don't understand this attribute, so I won't continue"
<whitequark> no
<cr1901_modern> sb0: "no one is taking care of the yosys backend." Did you mean icestorm or Xilinx flow?
<sb0> both
<cr1901_modern> icestorm works fine. Do you want something added in particular? I'll send a patch if so.
rohitksingh has joined #m-labs
<cr1901_modern> Can't impl MultiReg b/c no support. I could do AsyncResetSynchronizer though.
<whitequark> no support for what?..
<cr1901_modern> no_retiming
<cr1901_modern> or equivalent
<whitequark> and why do you need that?
<whitequark> MultiReg doesn't even use no_retiming
<whitequark> (it actually probably should)
<whitequark> oh nvm it does use no_retiming
<whitequark> then some of the artiq code is superfluous.
<cr1901_modern> whitequark: "(2:00:41 AM) sb0: whitequark, it prevents the synthesizer from moving combinatorial logic across the register"
<whitequark> so?
<sb0> whitequark, what code is superfluous?
<cr1901_modern> In case yosys decides to be clever, tell it "no, don't be clever"
<sb0> there is also a no_retiming on regs that are then sampled by the MultiReg, to avoid combinatorial glitches
<whitequark> oh
<sb0> and get transition times as short as possible
<whitequark> combinatorial glitches as in?
<cr1901_modern> fwiw, the one time I used CDCs on ice40, multireg worked fine. But it's still "more correct" to have the attributes (and I was just blindly assuming sb0 knows what he's doing ;)
<sb0> if you have a reg followed by a massive combinatorial function, there is a long period after each cycle during which the output can glitch
<GitHub30> [artiq] whitequark pushed 2 new commits to master: https://github.com/m-labs/artiq/compare/dc9327e05688...7dfe7d8c932a
<GitHub30> artiq/master 8e91856 whitequark: runtime: parse the "ip" configuration as IP, not CIDR....
<GitHub30> artiq/master 7dfe7d8 whitequark: test: verify no network performance regression from current 2.2 MB/s.
<whitequark> cr1901_modern: yosys doesn't do retiming at all
<sb0> when you're doing a CDC you want the signal that you're sampling to be valid for as long as possible
<whitequark> therefore, there is no need for a no_retiming attribute
<cr1901_modern> whitequark: Oh, you said that, and it didn't register until now. My apologies
<cr1901_modern> You're right
<cr1901_modern> sb0: What do you want added to icestorm if you're worried about bit rot? I haven't added anything b/c there's not much to add.
<cr1901_modern> icetime still only allows a single global constraint. When that is lifted, I will fix timing analysis in the backend
<cr1901_modern> AsyncResetSynchronizer is trivial... just need to find the right SB primitive
<cr1901_modern> And... that's it. I've been using it, as has at least one other person: https://github.com/q3k/m16c-interface
<cr1901_modern> And whitequark used it for a mor1k demo
<cr1901_modern> so what's the issue?
<whitequark> no one is actively watching whether breakage appears
<whitequark> but migen/misoc are very poorly tested overall so it's not like yosys backend is exceptional here
<cr1901_modern> I keep migen up to date and run it on my designs (most of which are one-offs/not worth publishing). I haven't noticed issues
<whitequark> sb0: it's legal to do x = CSRStatus(32); self.sync += x.eq(x + 1), right?
<whitequark> I'm getting combinatorial loops from somewhere and I can't figure out where from
<sb0> x.status
<cr1901_modern> x.status.eq(x + 1)
<whitequark> yeah, x.status.eq(x.status + 1)
<whitequark> typoed
<sb0> and yes
<cr1901_modern> sb0: Should I still send patches to the mailing list or do you accept pulls now?
<sb0> PRs are fine
<whitequark> sb0: seems OK to you? https://hastebin.com/odinusasib.diff
<whitequark> well, here's the full diff https://hastebin.com/xirizazamu.diff
<whitequark> it dies as late as write_bitstream
<sb0> crc32_checker.crc_error is a 1-cycle pulse?
<sb0> and your problem is self.errors.status.eq(self.errors.status + 1)
rohitksingh has quit [Ping timeout: 260 seconds]
<sb0> fsm.act is combinatorial, when the FSM is in that last state you are combinatorially setting errors.status to errors.status+1
<whitequark> ohhh
<whitequark> thanks
<sb0> you can use NextValue, or add a sync counter + an increment signal driven by the fsm
<whitequark> yeah, I know what to do
<sb0> as for 1-cycle pulses feeding MultiReg, there is a risk that it is missed if the source domain is faster than the destination domain. consider PulseSynchronizer or BlindTransfer
<whitequark> it's not a 1-cycle pulse
<whitequark> though PulseSynchronizer would be cleaner now that I think about it
<sb0> but PulseSynchronizer expects 1-cycle pulses
<whitequark> sure, I can move the edge detection logic into CRCChecker
zhoygzsoav has joined #m-labs
zhoygzsoav has quit [Remote host closed the connection]
<bb-m-labs> build #860 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/860
<bb-m-labs> build #1744 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1744 blamelist: whitequark <whitequark@whitequark.org>
bxdumztkng has joined #m-labs
bxdumztkng has quit [Remote host closed the connection]
rohitksingh has joined #m-labs
khpsxycind has joined #m-labs
khpsxycind has quit [Remote host closed the connection]
<GitHub93> [smoltcp] whitequark pushed 1 new commit to master: https://git.io/vFLhQ
<GitHub93> smoltcp/master 1e10525 whitequark: Do not parse an empty string as an IpAddress....
<_florent_> sb0/whitequark: for rxer i think i did what was done in minimac: ignoring rxer because it was already covered by ethernet CRC.
<whitequark> ok
<GitHub69> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/978c0d98aa5938668f303ffd89fa76232b9ce7f7
<GitHub69> artiq/master 978c0d9 whitequark: runtime: update smoltcp.
<travis-ci> m-labs/smoltcp#356 (master - 1e10525 : whitequark): The build passed.
<whitequark> is *everyone* touching the kc705 now?
<sb0> hmm it may seem so
<GitHub58> [artiq] sbourdeauducq pushed 3 new commits to release-3: https://github.com/m-labs/artiq/compare/6902868d58c8...3ec185094996
<GitHub58> artiq/release-3 3e96e0b whitequark: runtime: parse the "ip" configuration as IP, not CIDR....
<GitHub58> artiq/release-3 0d79b7d whitequark: test: verify no network performance regression from current 2.2 MB/s.
<GitHub58> artiq/release-3 3ec1850 whitequark: runtime: update smoltcp.
<whitequark> the intern is not on irc...
<GitHub102> [misoc] whitequark pushed 1 new commit to master: https://git.io/vFLj5
<GitHub102> misoc/master 9d3697c whitequark: liteeth: add CRC error and dropped packet counters.
mntng has joined #m-labs
<GitHub141> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/cdf63c5ea0a6dd3ac9e8f5b5f45fdbeb9f2bd17c
<GitHub141> artiq/master cdf63c5 whitequark: runtime: interrogate ethmac error counters and display changes.
<mntng> whitequark: when will you finish using the kc705 ?
<GitHub196> [artiq] whitequark commented on issue #837: @cjbe I haven't been able to reproduce the issue on any of the network hardware we have. Please send us both of the problematic switches. Before that, please recheck with the master branch, since I've added CRC error and dropped packet counters to MAC, and any changes in them will be logged at WARN. https://github.com/m-labs/artiq/issues/837#issuecomment-340367115
<whitequark> 15m
<sb0> mntng, can you post your current shift register driver code?
<bb-m-labs> build #861 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/861
<whitequark> sb0: iiiinteresting
<whitequark> I am in fact getting CRC errors
<whitequark> every few seconds
<whitequark> let's dig into this
<bb-m-labs> build #1745 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1745 blamelist: whitequark <whitequark@whitequark.org>
<sb0> whitequark, ping failed
<sb0> _florent_, are there some liteeth bugfixes that you didn't merge into misoc?
<whitequark> sure sure, next commit fixes it
<bb-m-labs> build #265 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/265
<sb0> next == cdf63c5?
<whitequark> 3e960eb1
<whitequark> ugh, no
<bb-m-labs> build #862 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/862 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1746 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1746 blamelist: whitequark <whitequark@whitequark.org>
<rjo> whitequark: and it doesn't happen on the GS110TP either?
<whitequark> rjo: your device? nope, it doesn't
<rjo> ack.
<whitequark> oh, another smoltcp bug
<GitHub74> [smoltcp] whitequark pushed 1 new commit to master: https://git.io/vFtvM
<GitHub74> smoltcp/master 1e18c03 whitequark: Fix Cidr::contains_addr for zero length prefixes.
<GitHub64> [artiq] whitequark pushed 2 new commits to master: https://github.com/m-labs/artiq/compare/cdf63c5ea0a6...a66450b0af6a
<GitHub64> artiq/master ae2d7ab whitequark: runtime: update smoltcp.
<GitHub64> artiq/master a66450b whitequark: runtime: temporarily revert ethmac statistics collection.
<whitequark> ok no, it was just misreporting a CRC error on every packet
<whitequark> I guess I still don't fully understand how this logic works...
<travis-ci> m-labs/smoltcp#357 (master - 1e18c03 : whitequark): The build passed.
<GitHub178> [artiq] sbourdeauducq pushed 1 new commit to release-3: https://github.com/m-labs/artiq/commit/f0937bde167e7cdd0761de8f940e68335f02941c
<GitHub178> artiq/release-3 f0937bd whitequark: runtime: update smoltcp.
<sb0> mntng, ping
<bb-m-labs> build #863 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/863 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1747 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1747 blamelist: whitequark <whitequark@whitequark.org>
<GitHub119> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/7f32ae31de8cf6746021902ce8b240a28af1cdc8
<GitHub119> artiq/master 7f32ae3 whitequark: runtime: fix a typo.
<mntng> sb0, let me test another jumper first
<sb0> mntng, you are aware that the buildbot is reflashing the board?
<bb-m-labs> build #864 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/864
<whitequark> I've been saying for a long time that lockfile is necessary
<whitequark> I'll use the board once buildbot finishes btw
<whitequark> sb0: what's the deal with misoc->artiq dependency right now?
<whitequark> how am I supposed to deal with it?
<sb0> whitequark, the artiq conda file references a misoc commit. is that an acceptable substitute for "lockfile"?
<whitequark> no, not this kind of lockfile
<whitequark> I meant for using the kc705
<sb0> ha. is there some particular existing tool you have in mind?
<GitHub77> [misoc] whitequark pushed 1 new commit to master: https://git.io/vFtTi
<GitHub77> misoc/master 72faa2c whitequark: liteeth: only raise CRC errors on CRC mismatch at end of packet....
<whitequark> sb0: yes. flock.
<whitequark> POSIX tool.
<sb0> whitequark, anyway the procedure is first update misoc, get the package built, then update the conda file in artiq and push
<whitequark> the artiq->misoc dependency is acceptable as it is.
<sb0> okay, yes we can use that
<whitequark> regarding flock, I can teach artiq_devtool to use that and then everyone could switch to artiq_devtool
<whitequark> not sure how else to enforce it
<whitequark> well not even enforce
<whitequark> more like encourage
<whitequark> h2d transfer rate from the windows VM is 44kBps
<sb0> whitequark, start a shell with flock
<sb0> whitequark, the buildbot also would have to use flock
<whitequark> buildbot, sure, it is trivial to set up for flock
<whitequark> that is actually probably the least complicated part
<bb-m-labs> build #601 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/601 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1748 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1748
<GitHub3> [artiq] whitequark pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/b03e36e4e9469c1dfe9d7c31f60561b37a0738b5
<GitHub3> artiq/master b03e36e whitequark: conda: update misoc.
<sb0> whitequark, so we can create a folder, say, /var/boardlocks, with one dummy file per board, then artiq_devtool or "flock /var/boardlocks/kc705 bash" or "flock /var/boardlocks/kc705 sleep 1800" when using manually
<sb0> well that sleep command is problematic since you don't know it's it waiting on the lock or executing sleep
<sb0> flock --verbose
<bb-m-labs> build #266 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/266
<sb0> and there is fuser on the lock file to determine who is using the board
rohitksingh has quit [Quit: Leaving.]
<bb-m-labs> build #865 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/865 blamelist: whitequark <whitequark@whitequark.org>
<bb-m-labs> build #1749 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1749 blamelist: whitequark <whitequark@whitequark.org>
<GitHub86> [artiq] sbourdeauducq pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/f23b4127ebfc3b861a8ce7591d962ad66bf5d75a
<GitHub86> artiq/master f23b412 Sebastien Bourdeauducq: add developer notes
<GitHub144> [artiq] sbourdeauducq opened issue #843: make the buildbot use board lockfiles https://github.com/m-labs/artiq/issues/843
<bb-m-labs> build #866 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/866 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<bb-m-labs> build #1750 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1750 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<_florent_> sb0: I think everything is merged, but I'll check that
mntng has quit [Quit: Page closed]
<GitHub2> [artiq] sbourdeauducq pushed 2 new commits to master: https://github.com/m-labs/artiq/compare/f23b4127ebfc...cd51bd3980a3
<GitHub2> artiq/master cd51bd3 Sebastien Bourdeauducq: conda: fix misoc version
<GitHub2> artiq/master efc16a8 Sebastien Bourdeauducq: DEVELOPER_NOTES: typo
<sb0> whitequark, still using the board?
<cr1901_modern> sb0: (testing something) "no_retiming" only makes sense for wires, right?
<sb0> what is a wire?
<cr1901_modern> Something you connect to a Verilog reg output (or input)
slava_ has joined #m-labs
<bb-m-labs> build #867 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/867 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<bb-m-labs> build #1751 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1751 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<shuffle2> where do files like https://github.com/jordens/redpid/blob/master/verilog/system_processing_system7_0_0.v actually come from? i guess it is generated somehow, i dont see it as a loose file in my install (although i see similar if i generate a block design)
<shuffle2> it seems redpitaya changed to just scripting this, and dont have the actual .v files anymore? https://github.com/RedPitaya/RedPitaya/search?utf8=%E2%9C%93&q=processing_system7&type=
<cr1901_modern> Most likely he ran a Wizard to generate the file within Xilinx' GUI
<shuffle2> if that's whats going on there, can the same be done with migen?
<cr1901_modern> and then just included them in the project
<shuffle2> i'd like to be able to write the bitstream from the zynq's arm core, and then continue using the arm cores to interface with the (newly loaded) logic. but even using vivado to add the PS7 cruft doesn't seem to help :/
<shuffle2> arms just die
<sb0> bb-m-labs, force build --branch=master artiq
<bb-m-labs> build forced [ETA 41m01s]
<bb-m-labs> I'll give a shout when the build finishes
<shuffle2> oh sweet, just had to poke is_partial_bitstream sysfs entry (even tho i think...it's not partial, it just makes the driver do the correct thing)
<bb-m-labs> build #868 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/868
<bb-m-labs> build #1752 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1752
<sb0> bb-m-labs, force build --branch=release-3 artiq
<bb-m-labs> build forced [ETA 41m01s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #869 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/869
<bb-m-labs> build #602 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/602
<bb-m-labs> build #1753 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1753
<sb0> the reported difference in rtio_counter between the log message and the DMA output message is 200-300µs, which matches the underflow behavior I was seeing
<sb0> whitequark, are you *sure* it's not the CPU that takes this time to write the DMA register for some reason? how and where exactly did you check the performance counters?
<sb0> geez what an obnoxious bug
<sb0> whitequark, it's a runtime bug.
<sb0> I added another call to rtio::log right before dma_playback engages the gateware, and the hundreds µs are spent between the kernel's call to core_dma.playback() and that rtio::log call in dma_playback
<sb0> how exactly did you do this performance counter testing? why did it seem to show a different result?
<GitHub129> [smoltcp] jackpot51 commented on issue #66: @whitequark, I believe @dlrobertson is working on a fix, to prevent the ICMP error message from being sent https://git.io/vFtRW
<sb0> the last log message from the kernel is:
<sb0> OutputMessage(channel=30, timestamp=45341214320, rtio_counter=45341119576, address=0, data=7424)
<sb0> the first log message from rtio::log in dma_playback is:
<sb0> OutputMessage(channel=30, timestamp=45341214420, rtio_counter=45341473064, address=0, data=88)
<sb0> time difference:
<sb0> > (45341473064-45341119576) ns in µs
<sb0> 353.488 microsecond (time)
<sb0> it's dma_retrieve that has become slow.
<sb0> well it's doing a round trip to the comms cpu
<sb0> duh
<sb0> all those tests had the dma_retrieve call in the real-time part. how did they even work before?
<sb0> sigh!
wolfspraul has quit [Ping timeout: 240 seconds]
wolfspraul has joined #m-labs
FabM has joined #m-labs
slava_ has left #m-labs [#m-labs]
<sb0> how does test_dma_playback_time not underflow on master?!
<sb0> each dma triggers a 200ns sequence, and the CPU cannot sustain that
<whitequark> sb0: oh
<whitequark> that is exactly what my latest finding has been about
<whitequark> it's a bug on *master*
<GitHub71> [artiq] sbourdeauducq pushed 3 new commits to rtio-sed: https://github.com/m-labs/artiq/compare/acb25f549b2e...415fa00846d3
<GitHub71> artiq/rtio-sed 9bf189c Sebastien Bourdeauducq: test: relax timing requirements when not using DMA handle...
<GitHub71> artiq/rtio-sed 415fa00 Sebastien Bourdeauducq: test: relax rtio test_loopback
<GitHub71> artiq/rtio-sed 20a5f09 Sebastien Bourdeauducq: test: use longer DMA sequence when playing it back repeatedly...
<whitequark> except that after discovering that I got confused with the reproduction
<sb0> bb-m-labs, force build --branch=rtio-sed artiq
<bb-m-labs> build forced [ETA 37m15s]
<bb-m-labs> I'll give a shout when the build finishes
<GitHub145> [artiq] sbourdeauducq closed issue #834: SED made DMA startup slow https://github.com/m-labs/artiq/issues/834
<whitequark> sb0: re: board locks: yes. that or even just lock /dev/ttyUSB_kc705
<whitequark> re: DMA bug: thanks a lot for helping me out.
<sb0> bb-m-labs, stop build artiq openocd
<bb-m-labs> build 1754 interrupted
<bb-m-labs> build #1754 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1754
<GitHub60> [artiq] sbourdeauducq pushed 1 new commit to master+rtio-sed: https://github.com/m-labs/artiq/commit/c703e860764cffad5967d954865ff26645f486b9
<GitHub60> artiq/master+rtio-sed c703e86 Sebastien Bourdeauducq: Merge branch 'rtio-sed' into master+rtio-sed
<sb0> bb-m-labs, force build --branch=master+rtio-sed artiq
<bb-m-labs> build forced [ETA 37m15s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #1755 of artiq is complete: Failure [failed conda_build_1 conda_remove] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1755
<GitHub66> [artiq] sbourdeauducq opened issue #844: test_dma_playback_time should underflow but does not https://github.com/m-labs/artiq/issues/844
<sb0> bb-m-labs, force build --branch=master+rtio-sed artiq
<bb-m-labs> build forced [ETA 37m15s]
<bb-m-labs> I'll give a shout when the build finishes
<GitHub75> [artiq] sbourdeauducq pushed 1 new commit to master+rtio-sed: https://github.com/m-labs/artiq/commit/c503542c72de4c00f638e2f10f54d8501b87721c
<GitHub75> artiq/master+rtio-sed c503542 Sebastien Bourdeauducq: Merge branch 'master' into master+rtio-sed
<sb0> whitequark, locking on the /dev entries is not good, there is one device for JTAG and one for UART, and the Sayma boards have two UARTs
<whitequark> ok
<sb0> do you have more info on the problem with rtio_get_counter()? can you open an issue with a repro?
<whitequark> not right now, I have the files that reproduced the problem stashed away
<bb-m-labs> build #870 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/870
<bb-m-labs> build #603 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/603
<bb-m-labs> build #1756 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1756
<GitHub65> [artiq] sbourdeauducq pushed 2 new commits to rtio-sed: https://github.com/m-labs/artiq/compare/415fa00846d3...f3f83174b15e
<GitHub65> artiq/rtio-sed 0695afe Sebastien Bourdeauducq: examples/dma_blink: use handle
<GitHub65> artiq/rtio-sed f3f8317 Sebastien Bourdeauducq: test: check that DMA can underflow
<sb0> whitequark, ^ the windows test failure above is due to a slow transfer speed with the device ...
<sb0> it seems you already noticed that. are you fixing it?
rohitksingh has joined #m-labs
wolfspraul has quit [Quit: leaving]
wolfspraul has joined #m-labs
calle__ has quit [Read error: Connection reset by peer]
sb0 has quit [Ping timeout: 260 seconds]
sb0 has joined #m-labs
<whitequark> sb0: looking into it
<whitequark> I suspect it's an artifact of our win64 box
<sb0> whitequark, after you're done with the bugs, can you write a driver for urukul?
<sb0> (see with rjo what exactly needs to be done)
<whitequark> urukul being?
<sb0> uh, we've discussed it many times. https://github.com/m-labs/sinara/wiki/Urukul
<whitequark> oh, that thing. the codenames are confusing
<whitequark> sure, no problem
<sb0> there is also Novo (the new version of the board, and the simplest driver possible to retrieve one sample)
<mithro> https://www.bunniestudios.com/blog/?p=5018 <- Hopefully Bunnie gave you guys justice...
<rjo> mithro: NB it would be great if we all at some point could start talking about merging it back.
<rjo> mithro: but nice article!
<mithro> rjo: Yeah - I want to move litex towards just an "extension" to migen/misoc
rohitksingh has quit [Ping timeout: 240 seconds]
<mithro> rjo: You were interested in connectors / expansion headers in migen/misoc?
<rjo> we are lobbying for it.
rohitksingh has joined #m-labs
<mithro> rjo: "we"?
<rjo> QUARTIQ, M-Labs
<mithro> rjo: For connectors / expansion headers or the litex thing?
<rjo> connectos and expansion headers.
<rjo> ... the migen issue
<rjo> because it's related to the artiq issue
<mithro> Okay - did you see that I started throwing around ideas for doing Pmod connector stuff?
<GitHub185> [sinara] gkasprow deleted production_v1 at 6e3fd5d: https://github.com/m-labs/sinara/commit/6e3fd5d
<GitHub109> [sinara] gkasprow deleted proto1 at 6e3fd5d: https://github.com/m-labs/sinara/commit/6e3fd5d
<GitHub79> [sinara] gkasprow deleted rev_1.0_production_files at 6e3fd5d: https://github.com/m-labs/sinara/commit/6e3fd5d
<mithro> You guys are using buildbot for your builds these days, right?
rohitksingh has quit [Ping timeout: 264 seconds]
rohitksingh has joined #m-labs
<rjo> mithro: yes. seen it. but i don't see yet how that's going to look with LVDS/SE, FMC-HPC/LPC, CC/non-CC, bidir, etc.
<rjo> mithro: yes. buildbot.
<mithro> rjo: Just dumped some more random info into the connect issue bug -- Just trying to collect my thoughts.
rohitksingh has quit [Quit: Leaving.]
<rjo> mithro: ack.
<cr1901_modern> mithro: "You were interested in connectors / expansion headers in migen/misoc?" Could you elaborate?
<GitHub4> [smoltcp] dlrobertson opened pull request #67: Do not send ICMPv4 responses to broadcasts (master...improve_dst_unreachable) https://git.io/vFqBj
<GitHub136> [smoltcp] dlrobertson commented on pull request #67 8dd35b3: Does something like this belong in `wire::icmpv4`? https://git.io/vFq0m
<GitHub35> [smoltcp] dlrobertson commented on pull request #67 8dd35b3: According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`. https://git.io/vFq0q
<GitHub111> [smoltcp] dlrobertson commented on pull request #67 3a28298: According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`.... https://git.io/vFq0q
<GitHub173> [smoltcp] dlrobertson commented on pull request #67 3a28298: Does something like this belong in `wire::icmpv4`?... https://git.io/vFq0m
<GitHub103> [smoltcp] dlrobertson commented on pull request #67 3a28298: According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`.... https://git.io/vFq0q
<GitHub151> [smoltcp] dlrobertson commented on pull request #67 3a28298: > According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`.... https://git.io/vFq0q
<cr1901_modern> mithro: Well, I suppose I should be thankful that my post on migen lasted a month before rjo proposed an API change
<cr1901_modern> sb0: Is that simulation API you proposed with dylibs still what you want?
<GitHub107> [smoltcp] dlrobertson commented on pull request #67 3a28298: > According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`.... https://git.io/vFq0q
<GitHub149> [smoltcp] dlrobertson commented on pull request #67 3a28298: > According to RFC 792 up to 64 bytes of the original payload should be included. Since the header is separate, that is `64 - sizeof(ip header)`.... https://git.io/vFq0q