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: 256 seconds]
balrog has joined #m-labs
<sb0> xilinx recently published a guide on how to use the ultrascale i/o mess: https://www.xilinx.com/support/documentation/application_notes/xapp1324-design-selectio-component-primitives.pdf
<sb0> we're not doing this USER_CLOCK_ROOT thing right now, let me add it...
<sb0> "The OSERDESE3 avoids the additional timing complexities encountered when designing serializers in the internal device logic"
<sb0> this was true for spartan6 and 7-series, but they forgot to remove this passage from the doc when introducing ultrascale ...
<sb0> "Native mode is supported through the High-Speed SelectIO Interface Wizard"
<sb0> of course
<GitHub-m-labs> [misoc] sbourdeauducq pushed 1 new commit to master: https://github.com/m-labs/misoc/commit/3388e6ba70545c77b399ced30ca9b9536963a44f
<GitHub-m-labs> misoc/master 3388e6b Sebastien Bourdeauducq: sayma: add USER_CLOCK_ROOT on SDRAM clock buffers
<bb-m-labs> build #420 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/420
<sb0> can I expect something other than vivado breakage by putting a BUFGCE_DIV into the feedback path of a MMCM?
<sb0> yeah of course it's vivado breakage
<sb0> CRITICAL WARNING: [DRC AVAL-46] v7v8_mmcm_fvco_rule1: The current computed target frequency, FVCO, is out of range for cell MMCME2_BASE. The computed FVCO is 299.985 MHz. The valid FVCO range for speed grade -1 is 600MHz to 1200MHz. The cell attribute values used to compute FVCO are CLKFBOUT_MULT_F = 2.000, CLKIN1_PERIOD = 6.66700, and DIVCLK_DIVIDE = 1 (FVCO = 1000 * CLKFBOUT_MULT_F/(CLKIN1_PERIOD * DIVCLK_DIVIDE)).
<sb0> typical xilinx garbage
<sb0> they force you to put the dividers outside the MMCM, without any consideration for the consequences, such as deterministic phase or VCO frequency computations
<sb0> oh and of course, then it breaks a completely unrelated part of the design by refusing the place it
<sb0> *to place it
<sb0> geez I wish someone one day makes FPGAs that don't suck and drive X&A out of business
rohitksingh_work has joined #m-labs
<GitHub-m-labs> [artiq] sbourdeauducq opened issue #966: inconsistent serwb behavior when RTM FPGA is not loaded https://github.com/m-labs/artiq/issues/966
<GitHub-m-labs> [artiq] sbourdeauducq opened issue #967: fix/simplify serwb clocking https://github.com/m-labs/artiq/issues/967
<GitHub-m-labs> [artiq] sbourdeauducq commented on issue #925: I suggest focusing 4.0 on supporting the new hardware - there are enough issues with it already and this compiler change doesn't seem simple. Let's move it to 5.0? https://github.com/m-labs/artiq/issues/925#issuecomment-374832583
<GitHub-m-labs> [artiq] sbourdeauducq pushed 3 new commits to master: https://github.com/m-labs/artiq/compare/9ad1fd8f2532...32f22f4c9cb4
<GitHub-m-labs> artiq/master 32f22f4 Sebastien Bourdeauducq: sayma: disable SERDES TTL entirely...
<GitHub-m-labs> artiq/master f8c2d54 Sebastien Bourdeauducq: ttl_serdes_ultrascale: configurable SERDES ratio. Also try X4 on Sayma
<GitHub-m-labs> artiq/master 9c2d343 Sebastien Bourdeauducq: sayma: use SERDES RTIO TTL...
<sb0> yeah the mmcm is great for deskew they say, EXCEPT for the random skew introduced by their imbecilic, non-deterministic BUFGCE_DIV
rohitksingh_work has quit [Ping timeout: 265 seconds]
rohitksingh_work has joined #m-labs
AceChen has quit [Ping timeout: 268 seconds]
bunnie has joined #m-labs
<bunnie> Quick sanity check question: is it common for migen to have non-deterministic netlists, e.g. from run-to-run the same script generates a slightly different top.v file with no changes otherwise to the Python code?
<bunnie> I've noticed sometimes I have to "compile twice" to get my design to work, and I thought it was a timing issue except I opened the routed checkpoint and found that whole nets were missing from the final design
<bb-m-labs> build #1369 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1369
<bunnie> I'll dig into this more but in particular I think maybe whatever is generating the CSR address space isn't consistent from run to run. Maybe I'm doing something wrong and my code has a built-in ambiguity that migen is tossing a coin to resolve?
AceChen has joined #m-labs
<bb-m-labs> build #795 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/795 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<bb-m-labs> build #2205 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2205
rqou has quit [Remote host closed the connection]
rqou has joined #m-labs
<sb0> bunnie, it's not common and should be fixed when it happens. the root cause of this is, the non-deterministic iteration order of python dictionaries/sets
<sb0> bunnie, as a quick fix you can use PYTHONHASHSEED
<sb0> the long term solution is to find wherever in migen/misoc/your code there is a non-deterministic iterator, and replace it with something deterministic
<sb0> or convince guido to abandon the non-deterministic behavior
<sb0> which produces funny behavior in other places, e.g. .pyc files are typically non-reproducible
ncl has quit [Remote host closed the connection]
<bunnie> OK thanks, that's very helpful. It confirms I'm not crazy. I'll read up about the PYTHONHASHSEED.
<bunnie> I guess this means for code to be "tested", it must be noted which PYTHONHASHSEED it's tested against, otherwise it's hard to guarantee validation.
ncl has joined #m-labs
<bunnie> btw, do you happen to know of any public docs on migen "records"? The migen manual 0.5 refers to them but doesn't go into the API. In particular I'm wanting to confirm my understanding of the "keep" and "omit" behaviors.
<sb0> bunnie, no, the code should not use non-deterministic iteration
<sb0> and should be fixed when it does. no mandatory pythonhashseed workarounds, this isn't xilinx software
<_florent_> bunnie: for your design, do something like this: ttps://github.com/enjoy-digital/netv2-soc/commit/12f058c14bb58a03176ee864de2f37e08a2b082d
<_florent_> bunnie: it should solve your non-determinism issue
<bunnie> thanks. I'll do that, and set the hash seed. the compilation process is already random enough, I don't need more variables moving around when chasing down issues!
<GitHub-m-labs> [artiq] enjoy-digital commented on issue #908: With @hartytp AMC (no RTM) and last gateware/bootloader i get:... https://github.com/m-labs/artiq/issues/908#issuecomment-374860758
<bunnie> also, when i'm doing a stream connect() operation and "keep" is specified, that means to connect *only* the items on the keep list, and omit everything else even if they could be connected?
<_florent_> bunnie: yes that's what keep/omit means
<cr1901_modern> >is it common for migen to have non-deterministic netlists
<cr1901_modern> I have never seen this happen ._. Doesn't mean it can't, just I've never seen it
<cr1901_modern> I'm pretty sure "omit" is used in the context of Record.connect. It used to be called "leave_out"
<cr1901_modern> Any signals in the omit set aren't connected between two records when using Record.connect. I don't remember what "keep" does
<cr1901_modern> or where it's used*
<bunnie> thanks all!
<rjo> sb0: are the LOCs on sayma helping? did you test that?
FabM has quit [Quit: ChatZilla 0.9.93 [Firefox 52.5.0/20171114221957]]
<GitHub-m-labs> [artiq] jordens pushed 6 new commits to master: https://github.com/m-labs/artiq/compare/32f22f4c9cb4...1afce8c6138e
<GitHub-m-labs> artiq/master f5a1001 Robert Jordens: suservo: add device database and artiq_flash variant
<GitHub-m-labs> artiq/master 1fb5907 Robert Jordens: kasli: add SUServo variant (Sampler-Urukul Servo)
<GitHub-m-labs> artiq/master f74d577 Robert Jordens: sampler: add wide eem definition
<hartytp> rjo: not sure where you are with this but we have a sampler driver working and putting out samples
<hartytp> will create a PR this eve/tomorrow am unless you've already done that
<hartytp> it's v simple
<hartytp> will post some noise traces etc as well
<GitHub-m-labs> [artiq] jordens pushed 2 new commits to master: https://github.com/m-labs/artiq/compare/1afce8c6138e...12d699f2a849
<GitHub-m-labs> artiq/master 12d699f Robert Jordens: suservo: add sampler example
<GitHub-m-labs> artiq/master 9791844 Robert Jordens: sampler: add coredevice driver
<rjo> hartytp: i am done. you can check whether there is anything missing and write a pr for that.
<hartytp> oh nice! beat me to it :)
<hartytp> thanks for that
<hartytp> looks good.
<hartytp> from a quick skim, that looks on a par with what I have
<hartytp> a few small differences, but your way is prob better
<hartytp> I 'd
<bb-m-labs> build #1370 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1370
<hartytp> The only thing I was thinking about adding is the ability to only sample some channels to allow sampling at a faster rate
<hartytp> aah, no, you've done that
<hartytp> yes, that's nice, does everything I can think of
<hartytp> let me test for a day or two and then submit the invoice
<hartytp> thanks!
rohitksingh_work has quit [Read error: Connection reset by peer]
<sb0> rjo, not sure, i'll have a look
<bb-m-labs> build #796 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/796 blamelist: Robert Jordens <jordens@gmail.com>
<sb0> bb-m-labs, force build misoc
<GitHub-m-labs> [misoc] sbourdeauducq tagged 0.11 at master: https://github.com/m-labs/misoc/commits/0.11
<bb-m-labs> build forced [ETA 14m30s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #2206 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2206
<GitHub-m-labs> [artiq] jordens pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/82c4f0eed42ee31653dd2fda109571e35573b3b0
<GitHub-m-labs> artiq/master 82c4f0e Robert Jordens: sampler: fix channel gain retrieval
<GitHub-m-labs> [artiq] jordens commented on issue #687: Sampler is done. 97918447a3426c39f23d3766049c7fb644c0a33e https://github.com/m-labs/artiq/issues/687#issuecomment-374938306
<rjo> hartytp: anything unexpected in the noise data?
<bb-m-labs> build #421 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/421
<rjo> hartytp: just to confirm: wojciech sent you your zotinos and you are happy with the functionality level you are seeing in sampler and zotino?
<rjo> ... hardware-wise
<hartytp> rjo: no noise data data yet -- finishing off a vacuum system atm
<hartytp> zotino: all channels produce the expected voltage, will look at noise + step response next time I'm at my desk
<hartytp> Sampler, my student needs to plot the noise data. Hope for this eve or tomorrow
<hartytp> if it's a major issue, I can try to do it faster, but lots on atm
<bb-m-labs> build #1371 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1371
rohitksingh has joined #m-labs
<bb-m-labs> build #797 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/797 blamelist: Robert Jordens <jordens@gmail.com>
<bb-m-labs> build #2207 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2207
hartytp has quit [Ping timeout: 260 seconds]
<bb-m-labs> build #1372 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1372
<rjo> hartytp: hmm. let me know if i got that right: Sampler is quite a bit noisier than Novogorny.
hartytp has joined #m-labs
<hartytp> Hmm haven't looked that yet. Adc transition noise is 1.5lsb rms
<hartytp> Afe is the same
<hartytp> Driver amp shouldn't add noise compared with inamp
<hartytp> Are you using termination? Noise is worse with high z source
<rjo> "adc transition noise"?
<rjo> sure i am terminating.
<hartytp> Adc noise floor
<hartytp> Hmm
<rjo> i get something like 1.3, 1.4, 3.5, 14.5 LSB RMS terminated. comared to 0.3, 0.4, 1.7, 9.7 for novogorny
<rjo> is that in the datasheet?
<hartytp> That's expected
<hartytp> But 1.5 lab end should be fine
<hartytp> Lsb
<rjo> that's 12-6 dB worse than novogorny.
<hartytp> We may also have increased bw
<hartytp> Need to check schematic
<hartytp> Driver stage should limit bw
<hartytp> Well the low gain noise is just the adc
<rjo> there is a 20k johnson noise source now. but that's just 20µV RMS.
<rjo> which parameter is that in the datasheet?
<hartytp> But 1 lsb end should be fine
<hartytp> Remember both ADCs have poor temp cos
<hartytp> It's transition noise
<rjo> is that really what we are seeing?
<hartytp> High gain number sounds like we increased the bw
<hartytp> Iirc we added some cap to reduce bw on novo
<rjo> oh yeah. the novogorny adc really is 12 dB better.
<hartytp> During tesring
<hartytp> Right but it's still just 1lsb and will be limited by temp co
<rjo> nonsense. this is wideband noise.
<hartytp> Given higher sample rate you can also average down
<rjo> tempco is just low frequency
<rjo> this is a completely different noise source than the one due to temperature.
<hartytp> Which is usually what one cares about for this kind of desibg
<hartytp> Not my point
<bb-m-labs> build #798 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/798 blamelist: Robert Jordens <rj@m-labs.hk>
<hartytp> I just mean no point having low noise if the thing your measuring fluctuates due to temp co
<rjo> well. think a bit about your own application where you have p gain out to 1 MHz. that'll become immediately apparent on your wideband DDS noise.
<hartytp> Right but only at the 1 lab level
<hartytp> Lsb
<hartytp> That's fine
<hartytp> Night gain noise is not the ad
<hartytp> Adc
<rjo> you specified a p gain of up to 50.
<hartytp> For cases where the loop gain is low because of other components
<hartytp> That's still just 20ppm noise
<hartytp> Which is fine
<bb-m-labs> build #2208 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2208
<hartytp> The whole thing will drift around much more than that on thermal tinescales
<rjo> sure. but now your amplitude noise at 1-1MHz offsets is limited by the ADC...
<hartytp> Maybe
<hartytp> Or still dl
<hartytp> Anyway for g>1 the in amp limits
<hartytp> Difference between novo and sampler there is just bw
<hartytp> Iirc
<hartytp> And this is assuming pd etc is <10ppm noise
<hartytp> If integrated run
<rjo> what do you mean by "loop gain low"? that's exactly where it hits you. you are not averaging, no lowpass filtering before the adc will help you.
<hartytp> Depends on the gain of all components in the loop
<rjo> with novogorny we were in-amp limited for 100 and 1000. ok. those match with the increased BW.
<hartytp> Got to go. Tl;Dr I'm not fussed about 1lsb of add noise
<hartytp> Adc
<rjo> once you are at the ADC, the only component that would be relevant would be a <<1 MHz narrowband filter after the DDS to smooth out the AM noise you just added.
<rjo> it's not a drama, but saying categorically that Sampler is better in every regard is confusing (to put it lightly) if it has in fact 12 dB worse RMS noise and 6 dB worse noise density in the lowest gain setting.
rohitksingh has quit [Quit: Leaving.]
hartytp has quit [Ping timeout: 260 seconds]
<GitHub-m-labs> [artiq] enjoy-digital commented on issue #908: @hartytp: your board has been running memtest (64 bits ddram) continuously today without errors (>8h).... https://github.com/m-labs/artiq/issues/908#issuecomment-375002184
FabM has joined #m-labs
forrestv has quit [Ping timeout: 276 seconds]
rqou has quit [Remote host closed the connection]
awygle has quit [Remote host closed the connection]
rqou has joined #m-labs
FabM has quit [Quit: ChatZilla 0.9.93 [Firefox 52.7.2/20180316222652]]
awygle has joined #m-labs
forrestv has joined #m-labs
<rjo> hartytp: please do the zotino pull request. it's nearly impossible to discuss changes otherwise. it's fine if -- after starting the PR -- the content changes. that's the idea.
<rjo> hartytp: otherwise good if you tested it. i am a bit uncertain that div_read=4 will work through the LVDS repeaters, FPGA, cable round trip. Since this is not critical i'd err on the robust side.
hartytp has joined #m-labs
<hartytp> rjo: okay picking things up
<hartytp> Firstly, sampler
<hartytp> Let's trace this
<hartytp> Triage
<hartytp> Preamble: normally I consider "sampler" and "novogorny" to be names for different hw revisions on the same dedign
<hartytp> For now let's take "sampler" to mean "Any design with the new adc"
<hartytp> And "novogorny" to be the old adc
<hartytp> You raise 2 separate issues: low gain noise and high gain noise
<hartytp> High gain noise: afacit this is not a novogorny v sampler issue but an independent decision that was made for v2 to raise the bw at the expense of worse noise
<hartytp> Iirc the v1 design didn't really work because the inamp can't drive the adc properly
<hartytp> So we needed to alter the driver regardless of the adc
<hartytp> When
<hartytp> I did that I changed the bw. It's legitimate to question whether that was the right move. If you want to do that please open an issue on gut hub
<hartytp> Nb changing this is just a few rcs so no big deal
<hartytp> Low gain noise: this was expected for the new adc
<hartytp> Any comparisons between the boards I made should have had a caveat word like "significant"
<hartytp> E.g. sampler will be more expensive than novogorny but afacit the difference is less than potential bulk-buy discounts so we're better off producing more copies of the same design
<hartytp> I don't seem the adc noise increase in sampler to be significant since its only 1lsb
<hartytp> note that the analogue filter has a gentle cut off at 250kHz
<hartytp> So the pd etc noise will not be attenuated that much by the 1MHz
<hartytp> So id generally expect more than 1 lsb of noise due to that plus pickup etc
<hartytp> So I do not expect that to be a limit
<hartytp> (I also expect out-of-band laser noise to be a bigger contribution in most setups)
<hartytp> That's why I'm dismissive of this decision
<hartytp> And, again, I think we're better of with one design produced in bulk and really well tested and supported than two designs if the performance advantage of novo is so marginal
<hartytp> Zotino: ack
<hartytp> The code wasn't in a state where I considered it acceptable to submit a pr
<hartytp> It's now basically there but there are changes I haven't tested yet on the hw
<hartytp> Had to leave lab unexpectedly today or would have done that
hartytp has quit [Quit: Page closed]
<rjo> hartytp: i think sampler is a fine device and is an excellent compromise. just that i wasn't aware that the ADC is worse. and the 1000 gain setting is also weird. the bandwidth should be limited by the INA to the same as for novogorny. still the noise is twice as high.
<rjo> and the inamp-adc interface in novogorny could have been fixed by increasing the r, c there.
<rjo> i don't think there is much to improve on sampler in that regard. it's fine.
hartytp has joined #m-labs
<hartytp> Rjo: fwiw iirc the issue with novo was that low r/High c upset the inamp while high r/Low c gave bad duty-cycle-dependent glitches when the adc sampled
<hartytp> Seemed to need an extra buffet amp to drive the adc
<hartytp> Ack on the high gain setting stuff. Can you post an issue and I'll investigate on our board
<hartytp> Fwiw the numbers you posted are still fine for our noise eater application, but it's Sri wpryb
<hartytp> Still worth understanding properly
hartytp has quit [Ping timeout: 260 seconds]
<GitHub-m-labs> [artiq] hartytp commented on issue #908: @enjoy-digital feel free to hang on to that board a bit longer if it helps - I have to work on other things for the next week or so.... https://github.com/m-labs/artiq/issues/908#issuecomment-375107882
<rjo> hartytp: high r, high c: lower the corner freq until the sampling error is small.
<GitHub-m-labs> [artiq] jordens pushed 1 new commit to master: https://github.com/m-labs/artiq/commit/770b0a7b79a89f1ea0da6cfd8d1c647dc71c85a2
<GitHub-m-labs> artiq/master 770b0a7 Robert Jordens: novogorny: conv -> cnv...
hartytp has joined #m-labs
<hartytp> Yes but then you completely kill the circuit bw
<hartytp> That's basically what Greg did in one version of his tests iirc (not sure which population options are on the board you have)
hartytp has quit [Ping timeout: 260 seconds]
<bb-m-labs> build #1373 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/1373
mumptai has joined #m-labs
<bb-m-labs> build #799 of artiq-win64-test is complete: Warnings [warnings python_unittest] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/799 blamelist: Robert Jordens <jordens@gmail.com>
<bb-m-labs> build #2209 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/2209
mumptai has quit [Quit: Verlassend]
Gurty has quit [Ping timeout: 256 seconds]