azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing | https://github.com/glscopeclient/scopehal-apps | Logs: https://libera.irclog.whitequark.org/scopehal
Degi_ has joined #scopehal
Degi has quit [Ping timeout: 260 seconds]
Degi_ is now known as Degi
<Degi> Did we ever talk about the AD9081?
<Degi> Hmm, I guess maybe not so good for a scope since it has built-in digital conversion and the interface would be too slow for full bandwidth anyways
<Degi> (Nevermind that last point, I miscalculated, with JESD204C it should have 198 Gbps link bandwidth and 192 Gbps data bandwidth)
<Degi> Actually the built-in digital conversion can be skipped too, this might be neat for a 4 channel scope
bvernoux has joined #scopehal
bgamari has quit [*.net *.split]
bgamari has joined #scopehal
* azonenberg looks
<azonenberg> quad 16 bit 12 Gsps dac, 12 bit 4 gsps adc?
<azonenberg> looks expensive
<azonenberg> serdes out to 24.75 Gbps... you'd need ultrascale+ transceivers to keep up with it
<azonenberg> that is also fast enough i couldnt even properly assess it with my scope lol
<azonenberg> digikey lists it as a rf frontend, not an adc. which is probably why i hadnt seen it before
<azonenberg> It's "only" $2500 and is in stock at digikey
<azonenberg> (in the jesd204c version)
<azonenberg> The xcku3p or 5p both have 16x 32.75 Gbps GTY transceivers, enough to keep up with it
<azonenberg> They also have 208 max HP I/O which can do DDR4 2400 in the -2 or -3 speed grade
<azonenberg> (assuming you pick the right package)
<azonenberg> i think that's only enough for a single channel x64 sodimm (dual channel would need 128 data pins, plus the command/address bus i'm pretty sure puts you over the edge)
<azonenberg> so your max ddr bandwidth is 153.6 Gbps
<azonenberg> and thats before overhead
<azonenberg> qdr-iv xp is dual port x36 = x72, max 2133 MT/s gives 153.5 Gbps
<azonenberg> Still not enough
<azonenberg> and again i think probably not enough pins to do >1 channel
<azonenberg> Degi: so basically, i think to actually be able to use that much jesd204 on a single chip you would need something beefier than free vivado supports
<azonenberg> the xcku11p, maybe, which has 32x GTH, 20x GTY, and 416 HP I/O
<azonenberg> or the xcvu3p which has 40x GTY and 520 HP IO
<Degi> Ah well, gotta wait for open source support then
<electronic_eel> i guess nextpnr will have a hard time routing that...
<Degi> And it was 1000 something € on Mouser
<Degi> Or maybe with two FPGAs
<Degi> Hmm, at least for Lattice nextpnr performs way better than lattice diamond in terms of time for routing
<azonenberg> Yes but what about QoR?
<azonenberg> And yes, dual xcku3p/5p is an option
<electronic_eel> time for routing is nice for working on it, but doesn't help you at all if it doesn't fit
<azonenberg> write half the data to on chip ram and the other half send out via transceivers to the second fpga
<Degi> Quality of routing? Not sure, didn't compare them there yet
<azonenberg> which is basically would just be ddr-on-a-serdes
<azonenberg> you might even be able to use a lower end fpga for that
<Degi> Or put two or four JESD pairs per FPGA
<electronic_eel> using this chip for just a scope seems a bit wasteful - with all the 12gsps dacs on it
<azonenberg> electronic_eel: oh it would not be just a scope
<Degi> It would be nice to have an AWG too
<azonenberg> if we did anything with it, it would be a scope + monster awg
<Degi> Hmm neat, then you could prototype a 1-2 GHz radar with just a few antennas
<electronic_eel> the analog frontend for such a monster awg wouldn't be easy to implement
<Degi> true
<Degi> Is it possible to hook a JESD204 ADC to a DAC?
<Degi> (Without an FPGA inbetween)
<d1b2> <louis> PR-ing diagnostics window shortly. Sneaking in before my last final :)
<d1b2> <louis> Just PR-ed support class for timekeeping to xptools, that needs a merge, then there will be paired PRs for glscope and scopehal for the actual diagnostics support and UI
<d1b2> <louis> Here's what it'll look like
<azonenberg> @louis: you need to update that timekeeping class for windows support though
<azonenberg> you have the linux-only implementation of GetTime()
<d1b2> <louis> Sure, pulled that in. I think this https://github.com/glscopeclient/xptools/pull/22 should work, assuming that linked version works. Don't have a win dev box to try on
<azonenberg> Merged
<azonenberg> You can send the PRs for scopehal/-apps when you're ready
<azonenberg> very interested in getting stats out of some of my drivers with it
<azonenberg> I also think i found a bug in the lecroy driver that can lead to stale trigger data from a queue not being flushed right
<azonenberg> so i have to investigate that
<azonenberg> it seems like under some conditions when i stop triggering the queue is not flushed, so when i re-arm the trigger i instantly get an old waveform rather than a new one
<azonenberg> but unsure on root cause there. it happened once earlier in the week
<azonenberg> Having live buffer stats should help
<d1b2> <louis> Oh yeah, the last thing I was gonna ask you about before PRing
<d1b2> <louis> is it would be handy to be able to capture LogDebug etc into the diagnostics window
<d1b2> <louis> not sure what the best way to go about this is, because we (presumably?) don't want to collect all logging output, so a global log sink isn't really appropriate...
<d1b2> <louis> I was thinking about intentionally shadowing LogDebug etc in Oscilloscope, doing the vastrprintf there, then dispatching the resulting string to both the scope's log queue and to the global handler(s)
<d1b2> <louis> But that is rather hacky
<_whitenotifier-e> [scopehal] 602p opened pull request #601: Diagnostics facilities for Oscilloscopes - https://github.com/glscopeclient/scopehal/pull/601
<_whitenotifier-e> [scopehal-apps] 602p opened pull request #419: Diagnostics window for Oscilloscopes - https://github.com/glscopeclient/scopehal-apps/pull/419
<azonenberg> @louis: You might be able to do something with trace logging
<azonenberg> LogTrace() passes the class and method name into it
<azonenberg> because trace logging is so verbose you rarely want all of it on
<azonenberg> so you can instead do --trace Oscilloscope or similar
<azonenberg> it might require updates on the logtools side
<azonenberg> but i'm always open to ideas
<_whitenotifier-e> [scopehal] azonenberg closed pull request #601: Diagnostics facilities for Oscilloscopes - https://github.com/glscopeclient/scopehal/pull/601
<_whitenotifier-e> [scopehal] azonenberg pushed 6 commits to master [+0/-0/±26] https://github.com/glscopeclient/scopehal/compare/3f1e0ec2d314...2d456176a2fc
<_whitenotifier-e> [scopehal] 602p 5702809 - Scopehal changes for info window stuff
<_whitenotifier-e> [scopehal] 602p 3561868 - Support Tek MSO56 AFG
<_whitenotifier-e> [scopehal] 602p 2ed792c - Working happy diagnostics for DSLabs
<_whitenotifier-e> [scopehal] ... and 3 more commits.
<azonenberg> Also, i'm trying to think of the best way to share more metrics for dslabs vs globally for all scopes
<azonenberg> i feel like we could move some of that stuff into base classes?
<d1b2> <louis> Thought about that, but it would need to grow an ability to also pass the this pointer, otherwise can't distinguish between logging from different instances of the scope class
<_whitenotifier-e> [scopehal-apps] azonenberg closed pull request #400: Make 'reload configuation from scope' option refresh views - https://github.com/glscopeclient/scopehal-apps/pull/400
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 2 commits to master [+0/-0/±2] https://github.com/glscopeclient/scopehal-apps/compare/7cdd764b26c7...1ed6e626bde5
<_whitenotifier-e> [scopehal-apps] mubes 4ff4877 - Make 'reload configuation from scope' option refresh views
<_whitenotifier-e> [scopehal-apps] azonenberg 1ed6e62 - Merge pull request #400 from mubes/refresh_with_update Make 'reload configuation from scope' option refresh views
<d1b2> <louis> Yeah, I'm definitely game for that. There's a facility for the scope diag window to show diags that are computed there (e.g. because they involve state (FPS) from the OscWindow), so either that can grow to add more, or we could have some standard set of diagnostics managed in the Osc base
<azonenberg> @louis: hmmmm maybe we could add a separate LogScopeTrace macro or something internally that does that somehow
<azonenberg> And yeah i think there should be some standard info in the base class
<azonenberg> then we can add driver specific stuff like, say, board temperatures
<azonenberg> let me finish revieiwng and merging the baseline to start
<d1b2> <louis> Sounds good.
<azonenberg> we could probably also remove the wfm/s and fps counters in the OscilloscopeWindow and replace with your stuff? as they're now redundant
<azonenberg> or did you do that already asp art of this PR
<azonenberg> (still reading)
<d1b2> <louis> They're still useful at a glance, I think
<azonenberg> yeah i meant the separate counters
<azonenberg> m_lastWaveformTimes is now gone
<azonenberg> is m_totalWaveforms used for anything now that you deleted that though?
<azonenberg> i guess it cant hurt to keep around for now
<_whitenotifier-e> [scopehal-apps] azonenberg closed pull request #419: Diagnostics window for Oscilloscopes - https://github.com/glscopeclient/scopehal-apps/pull/419
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 13 commits to master [+5/-1/±34] https://github.com/glscopeclient/scopehal-apps/compare/1ed6e626bde5...cb2405f94d3e
<_whitenotifier-e> [scopehal-apps] 602p 5a0b216 - Initial implementation of useful scope diagnostics window
<_whitenotifier-e> [scopehal-apps] 602p 34bf513 - Clean up info box and add stats for DSL scope
<_whitenotifier-e> [scopehal-apps] 602p dea89a5 - Generic diagnostic values in terms of FilterParameters; pop-up graph windows for them
<_whitenotifier-e> [scopehal-apps] ... and 10 more commits.
<_whitenotifier-e> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://github.com/glscopeclient/scopehal/compare/2d456176a2fc...99a856e5afd7
<_whitenotifier-e> [scopehal] azonenberg 99a856e - Update to most recent xptools
<d1b2> <louis> No, just watching it tick up 😛
<azonenberg> the one thing i use it for is when doing profiler work
<azonenberg> looking at total run time during a test
<azonenberg> it's niec to know how many waveforms were processed as this can vary when doing live streaming
<azonenberg> and dividing total run time by waveforms lets me calculate cpu time per waveform
<azonenberg> that in itself is probably not a bad idea
<azonenberg> in fact, it would also be nice eventually to add a test mode that acquires a fixed number of waveforms then freezes
<azonenberg> so we can get more reproducible profiling
<azonenberg> e.g. test how long it takes a driver to acquire 100 WFMs before and after some tweak
<_whitenotifier-e> [scopehal-sigrok-bridge] 602p pushed 3 commits to main [+0/-0/±9] https://github.com/glscopeclient/scopehal-sigrok-bridge/compare/60c1aafa0b0f...fe5029aa8147
<_whitenotifier-e> [scopehal-sigrok-bridge] 602p 65f2ad9 - Refactoring and diagnostic support
<_whitenotifier-e> [scopehal-sigrok-bridge] 602p 8620a95 - Use HzClock for hw rate
<_whitenotifier-e> [scopehal-sigrok-bridge] 602p fe5029a - New xptools to match
bvernoux has quit [Quit: Leaving]
<d1b2> <bgianf> Looks like the build is broken? I can reproduce on my local machine as well
<d1b2> <bgianf> /home/runner/work/scopehal-apps/scopehal-apps/lib/scopehal/DSLabsOscilloscope.h:34:10: fatal error: ../xptools/HzClock.h: No such file or directory 34 | #include "../xptools/HzClock.h" | ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated.
<azonenberg> bgianf: you may have pulled in the middle of my most recent sea of merging
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 2 commits to master [+2/-0/±5] https://github.com/glscopeclient/scopehal-apps/compare/cb2405f94d3e...9c94a1e16271
<_whitenotifier-e> [scopehal-apps] azonenberg 59a3f02 - Update to most recent scopehal
<_whitenotifier-e> [scopehal-apps] azonenberg 9c94a1e - Merge branch 'master' of github.com:glscopeclient/scopehal-apps
<azonenberg> in particular, missing 99a856e in scopehal and 59a3f02 in scopehal-apps
<azonenberg> the latter of which apparently i had forgotten to actually push :p
<d1b2> <bgianf> :) yes one more pull fixed it up, thanks!
<azonenberg> looking good!
<_whitenotifier-e> [scopehal-docs] bgianfo opened pull request #39: Disable line numbering for listings that will be copy/pasted. - https://github.com/glscopeclient/scopehal-docs/pull/39