azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing |,, | Logs:
einthecorgi2 has quit [Read error: Connection reset by peer]
einthecorgi2 has joined #scopehal
_whitelogger has joined #scopehal
electronic_eel has quit [Ping timeout: 246 seconds]
electronic_eel has joined #scopehal
Degi has quit [Ping timeout: 272 seconds]
Degi has joined #scopehal
Famine has joined #scopehal
Famine_ has joined #scopehal
Famine- has quit [Ping timeout: 260 seconds]
Famine has quit [Ping timeout: 260 seconds]
electronic_eel has quit [Ping timeout: 258 seconds]
electronic_eel has joined #scopehal
<_whitenotifier-b> [starshipraider] azonenberg pushed 2 commits to master [+0/-0/±3]
<_whitenotifier-b> [starshipraider] azonenberg aeffaed - Finished initial RAM length matching
<_whitenotifier-b> [starshipraider] azonenberg bf960cc - Added lockfiles to gitignore
Famine has joined #scopehal
Famine_ has quit [Ping timeout: 260 seconds]
<azonenberg> lain, monochroma: i did it! The entire ram bus is done and length matched
<lain> woo!
<azonenberg> it was a giant pain in the butt but everything is within 5ps skew of the relevant DQ/clk
<azonenberg> Which is fast enough to run the ram at 1866 in theory. Actual tolerances using this fpga speed, 2133 rated ram, and running at 1600 are 62ps DQ-DQS and 124ps CTL-CLK
<azonenberg> So even if i have some errors in my internal-external matching it shouldn't matter
<azonenberg> this is one of the nastier looking meanders
<azonenberg> you can see what looks like a slight resonance with a period of about 1/4 the line length in the current view, but in the s-parameter view it's not enough to matter at the frequencies of interest for DDR3 160
<azonenberg> 1600*
<azonenberg> that's only 800 MHz fundamental and S11 is better than -10 dB out past 10 GHz except for a tiny hump that barely hits -10 dB around 4 GHz
<azonenberg> And i have less than -2 dB of insertion loss on the channel to nearly 15 GHz
<azonenberg> Even if reality is quite a bit worse than this simulation i have little concern wrt having enough margin for good SI
<azonenberg> here's the CAD view of the board as it stands. 403 unrouted, much of which is the RGMII bus and the remaining LVDS. I have the RGMII fully escaped and routed around the RAM, just not hooked up to the FPGA yet
<azonenberg> 3d views now
<azonenberg> the horizontal routing layer (layer 6) is definitely getting pretty full but i think i can fit everything else i care about
<sorear> how's crosstalk
<azonenberg> Between what in particular?
<sorear> I was thinking different DDR lanes
<azonenberg> (14:48:59) azonenberg:
<azonenberg> (14:49:23) azonenberg: monochroma, lain, Degi: FEXT simulation of DQ48, 49, 54 on MAXWELL
<azonenberg> (14:49:38) azonenberg: pretty insignificant coupling, less than -40 dB at any frequency i care about
<azonenberg> (14:49:01) azonenberg:
<azonenberg> this isn't the entire path but it's some of the closest approaches
<azonenberg> Doing a sim of two of the RGMII traces, 100mm coupled length but fairly far apart
<azonenberg> actual length is >100mm but this is pushing memory limits again so i'm doing this to get an idea of how bad it wil lbe
Famine- has joined #scopehal
Famine_ has joined #scopehal
Famine has quit [Ping timeout: 260 seconds]
Famine- has quit [Ping timeout: 260 seconds]
Famine- has joined #scopehal
Famine_ has quit [Ping timeout: 260 seconds]
<sorear> mm
<azonenberg> Ok so... It looks like that stripline experiment hits -3 dB of loss at around 13 GHz
<azonenberg> Which isn't too awful for 100mm of trace
<azonenberg> And worst case FEXT (for 89um tracks ~400um apart) over 100mm of parallel run is about -54 dB
<azonenberg> Outer layer 100 ohm differential is showing -3 dB right about 20 GHz, -1.9 dB at 10 GHz for 100mm of track
<azonenberg> Which means my 121.5 mm pairs will be about -3.6 dB @ 20 GHz, -2.3 dB @ 10 GHz which is the distance from fpga ball to QSFP connector
<azonenberg> The FS 40Gbase-SR4 QSFP+ module lists 189-1200 mV input swing, and 800 mV output if i'm reading the datasheet right
<azonenberg> 180-1200*
<azonenberg> The GTX can put out at least 1000 mV p-p depending on the chosen drive strength setting, and can accept inputs of 150 - 1250 mV
<azonenberg> So on the RX side we can tolerate S21 of 0.1875 V/V which is -14 dB of insertion loss
<azonenberg> and on the TX side, basically the same
<azonenberg> so assuming we run the drivers at max swing we'd have over 10 dB of margin
<azonenberg> i might not even need to
<_whitenotifier-b> [starshipraider] azonenberg pushed 1 commit to master [+3/-0/±1]
<_whitenotifier-b> [starshipraider] azonenberg f88dc85 - More SI sims for MAXWELL
Famine_ has joined #scopehal
Famine- has quit [Ping timeout: 260 seconds]
Famine- has joined #scopehal
Famine has joined #scopehal
Famine_ has quit [Ping timeout: 260 seconds]
Famine- has quit [Ping timeout: 260 seconds]
<Degi> Oh neat
_whitelogger has joined #scopehal
_whitelogger has joined #scopehal
<_whitenotifier-b> [starshipraider] azonenberg pushed 1 commit to master [+0/-0/±19]
<_whitenotifier-b> [starshipraider] azonenberg 340b676 - Continued MCU area fanout. Routed last status signals off pod FPGA.
einthec68 has joined #scopehal
einthecorgi2 has quit [Ping timeout: 272 seconds]
Famine- has joined #scopehal
Famine has quit [Ping timeout: 260 seconds]
einthecorgi2 has joined #scopehal
einthec68 has quit [Read error: Connection reset by peer]
einthecorgi2_1 has joined #scopehal
juli964 has joined #scopehal
einthecorgi2_1 has quit [Quit: Leaving]
<pepijndevos> I hope it's ok to ask my general noob scope questions here now and then. With my probes is a bag with some rings and the tuning screwdriver, but also two springs and plastic that I don't know what they are for.
<pepijndevos> Also, on most probes you can pull off the hook tip to expose the pin inside, but on these probes I'm not sure it's possible, but maybe they are just really tight.
<azonenberg> pepijndevos: got a photo?
<azonenberg> The rings are for color coding them and the screwdriver is for compensation, as you've guessed
<azonenberg> The spring is most likely a low-inductance ground but hard to be sure without a photo
<pepijndevos> ok brb
<azonenberg> Any idea what model the probes are? I've never seen one where the clip doesn't come off, although it's possible reeeally cheap ones are hook only
<pepijndevos> sent a picture on twitter from my phone
<azonenberg> The springs are grounds, which means that the tip clip definitely comes off or they'd have nothing to connect to
<azonenberg> the plastic pieces go over the tip to insulate it so it's less likely to short to adjacent pins
<azonenberg> probably two different shapes
<azonenberg> That is a really cheap looking probe, i'm spoiled by my PMK and LeCroy stuff lol
<pepijndevos> Rigol ;)
<azonenberg> Yeah i see the logo
<pepijndevos> What makes it look cheap? To me it looks... like a probe
<pepijndevos> What to LeCroy probes look like?
<azonenberg> Most higher end scope companies buy their probes from the same place (PMK)
<azonenberg> they OEM for a lot of folks
<azonenberg> pico, lecroy, tek, and keysight all resell PMK probes with their gear
<azonenberg> although a lot of the higher end active stuff is custom
<azonenberg> the ground is much more firmly attached, the barrel of the probe is a nice rubberized material instead of just plastic so it's easier to grip with your feingers
<azonenberg> they have multiple different tip insulators for hitting different sized SMT leads
<azonenberg> they even include spare tip needles if you bend one
<azonenberg> (you don't get this many insulators and ground clips etc, this is my whole collection from all of my probes)
<azonenberg> But this is what happens when my probe probably costs as much as your whole scope. Lol
<azonenberg> (seriously, the MSRP for this probe is $253)
<azonenberg> This is why i don't buy nice test equipment new, i get it secondhand
<azonenberg> It's still expensive but the hole in my wallet is half as big as if i got it new
<pepijndevos> hehe
<miek> yeaah, i'm getting close to cost of my scope in probe purchases :p
<azonenberg> miek: It would take a while for me to do that
<pepijndevos> hurray, I pulled away the hook more firmly and can indeed attach the spring ground or insulation tip
<azonenberg> My two scopes cost me $12K and $15K for the 1 and 2 GHz models if memory serves me right
<azonenberg> (MSRP for both was around 25-30)
<azonenberg> the stock passive probes came with them, then i got one 1.5 GHz active probe secondhand for about $1K
<miek> you could probably hit that with one fancy diff probe :D
<azonenberg> then four of the basic 1.5 GHz pico passive transmission line probes for around $350 each
<azonenberg> and one of the 6 GHz pico probes for about $1K
<azonenberg> so i'm looking at maybe $3-4K in probes for almost $30K of scope
<azonenberg> But i'm going to have to upgrade more when i upgrade the 1 GHz scope to a 4 GHz one
<noopwafel> old secondhand active probes in the <1ghz range seem very affordable
<azonenberg> at <1 GHz why use active probes?
<azonenberg> RC probes are fine to 100 MHz or so and transmission line after that
<miek> i'm loving my active probes for general use
<azonenberg> the only reason to use active in that range is if you need ultra low DC loading *and* peformance to hundreds of MHz or low GHz
<miek> i just don't have to care about good grounding :D
<azonenberg> I find transmission line probes are my go-to for anything but i2c and other high-z-with-pullup stuff
<noopwafel> but, right, in more useful ranges they start costing actual money
<azonenberg> for those, i use the stock RC probes
<azonenberg> the only thing i use my active probe for is probing crystals
<azonenberg> which i almost never do because all of my boards use oscillators instead
<azonenberg> anyway my AKL-PT1 probes should be good enough for the 2 GHz scope but i'm going to want something better for the 4 GHz when i get that
<azonenberg> Another thing i use a lot is my solder-in transmission line probes
<azonenberg> but i want to make a higher end version, the one i have now is super basic and not good past a few hundred MHz
<azonenberg> (i dont know exactly how far because i dont have a fixture to VNA it yet)
<pepijndevos> so far it seems to me that scope input grounds are actually all connected together. are there scopes with floating grounds?
<azonenberg> Scope input grounds are all connected to each other and earth
<azonenberg> There are special isolated probes which generally use a fiber optic cable to connect an isolated buffer head to the scope
<azonenberg> and i think there's one really specialized scope that isolates each channel from the others
<azonenberg> but that's pretty rare
<azonenberg> you do not ever want to float a scope because if you find yourself probing mains powered equipment wrong it's easy to end up energizing all exposed metal including the BNC shells etc
<azonenberg> Which is a massive shock hazard
<azonenberg> (this isn't just hypothetical, i have personally seen a TV designed with a floating chassis where this happened... somebody screwed up the cable TV wiring and the TV shield ended up being connected to mains, which energized the whole TV)
<miek> D:
<azonenberg> miek: so story time lol
<azonenberg> this was back in grad school, my roommate built a new computer for a fraternity brother
<miek> oh no, i'm still recovering from the lab story yesterday
<azonenberg> gets a call the next day saying he plugged it into his TV (it was a gaming computer) and got sparks and smoke
<azonenberg> We came over to investigate and found a HDMI cable with visible arc damage to one end of it
<azonenberg> i started poking at stuff with my DMM one handed afraid anything i touched might be live
<azonenberg> rapidly found out that the whole TV measured 120VAC to ground
<pepijndevos> hehe
<azonenberg> i thought it was a wiring fault with the TV or one of the other A/V systems
<azonenberg> So i had him flip breakers until the TV wasnt hot anymore
<azonenberg> then unplugged all of the cables
<azonenberg> actually no i think i just unplugged power to the tv first
<azonenberg> measured
<azonenberg> and the tv was STILL LIVE with no mains applied to it
<azonenberg> that was when i had him flip breakers
<azonenberg> i unplugged all the cables, measured each one
<azonenberg> and found the time warner coax shield measured 120VAC to ground
<azonenberg> and this wasnt just some parastiic coupling from running near a mains wire or something
<azonenberg> it was energetic enough to arc when connected to something truly earthed. Like a PC with a grounded chassis and 3-prong plug
<azonenberg> The TV was a class 2 device on a 2-prong plug which was perfectly safe, until you connected mains to the CATV input :p
<azonenberg> Surprisingly the only casualty was the brand new GTX... 680 i think?
<azonenberg> the rest of the PC survived
<azonenberg> as did the TV
<azonenberg> accidental etherkiller for HDMI, lol
<azonenberg> the hdmi shield was at 120VAC and i imagine all of the data lines were close to that too
<noopwafel> ><
<pepijndevos> so... was it the TV itself that was miswired, or a fault in whatever was at the other end of the coax?
<azonenberg> The coax itself was live when not connected to the TV
<azonenberg> we found a breaker connected to some lighting circuit would de-energize it
<azonenberg> so i flipped off the breaker, taped it over with some red electrical tape, and told the guy to call an electrician before his house caught fire :P
<azonenberg> My point being, had the TV been properly grounded, this would have blown a breaker instantly rather than resulting in the extremely dangerous situation it did
<pepijndevos> right...
<azonenberg> And probes slipping to the wrong point happens all the time in test equipment
<azonenberg> So yeah, ground your scope
* pepijndevos lives in a house without grounded sockets
<azonenberg> and don't connect the scope ground to anything that isn't either earthed or floating
<azonenberg> if you actually need a measurement from point A to B and neither are anywhere near ground, either use two separate channels and subtract with a math function
einthecorgi2 has quit [Quit: -a- Connection Timed Out]
<azonenberg> or use an active differential probe rated for the voltages in question
<azonenberg> Floating the scope is a quick and dirty solution to that problem which is also a great way to electrocute yourself
<pepijndevos> Luckily I don't usually work with mains stuff...
<azonenberg> If you don't work on mains powered devices it goes from a borderline suicidal idea to just a bad one
<azonenberg> :p
<pepijndevos> hahaha, I'll tell my landlord you said so
<azonenberg> It *can* be done safely. I saw a photo once of a Tek CRT scope with a full custom faceplate designed for working with a hot chassis
<azonenberg> the entire front panel was stood off about 100mm from the body of the scope
<azonenberg> and nonconductive plastic extensions were attached to each control
<azonenberg> so you could turn them without coming into contact with the scope body
<pepijndevos> I think I've actually seen something like this
<azonenberg> Yeah
<azonenberg> That seems like a reasonably low risk approach, but an active fiber-isolated probe is a far better option
<azonenberg> Re the coax, I never found out the true origin of the fault
<azonenberg> but since it was inside the house (the breaker turned it off)
<azonenberg> my best guess is that somebody had put a nail into the wrong spot in the wall
<azonenberg> and penetrated both the tv coax and a mains power line
<pepijndevos> I know you can do subtract, but if you have a 2 channel scope and want to measure 5 things... sad times
<azonenberg> Yeah :p
einthecorgi2 has joined #scopehal
<azonenberg> Anyway this is why electrical code in the US requires all wiring to be a minimum distance from the face of a stud
<azonenberg> So you'd need a reeally long nail to hit it
<pepijndevos> I definitely shorted my circuit during university projects by trying to measure voltage across some resistor.
<azonenberg> If this isn't possible for whatever reason, the proper solution is to attach a steel armor plate to the stud. So you physically cannot get a nail into the wire
<azonenberg> But a lot of older buildings weren't built to these standards - i know my house wasn't when i bought it, i found at least one nail into a wire and many more spots where it could have easily happened but we got lucky
<azonenberg> To say nothing of unofficial renovations done by homeowners or unlicensed contractors which never got inspected
<pepijndevos> > i found at least one nail into a wire
<pepijndevos> aaaaaaa
<azonenberg> the location was such that it had to have happened during construction of the house, too
<pepijndevos> AAAAAAA
<azonenberg> it must have either hit the ground or just nicked the insulation
<azonenberg> The stud was notched on the outside
<azonenberg> there was no way to cut such a hole once the siding was on the house
<pepijndevos> Now imagine you hang a painting with an alu frame from a live nail
<azonenberg> By code, if you notch a stud, you must put a steel plate over it
<azonenberg> These guys didn't
<azonenberg> And the result demonstrates EXACTLY why that section of the code exists
<azonenberg> We found a lot of problems with this house :P we tore it down to the bare frame and rebuilt it from the bones
<azonenberg> And the joke was, the guy who built it is the reason they made building codes
<azonenberg> almost everywhere i looked i found something that was either unsafe, falling apart, or just poor craftsmanship
<pepijndevos> I rent this place... so bit more hesitant to do major renovations here. But tempted to make some grounded sockets nevertheless.
juli964 has quit [Quit: Nettalk6 -]
<pepijndevos> Scopehal Q that I could probably answer myself if I was next to a scope: can you apply arbitrary filters to an input? Would be useful for the sigma delta stuff I'm doing.
<azonenberg> You mean like a LPF or something?
<pepijndevos> yea
<pepijndevos> kinda hard to tell if a pulse coded signal contains the right signal.
<azonenberg> The architecture allows it, but it hasn't been implemented yet. #51
<azonenberg> if you want to work on that ticket, pull requests are welcome :)
<azonenberg> miek, pepijndevos: btw
<pepijndevos> maybe :))) which repo is that issue on?
<azonenberg> (scopehal)
<azonenberg> i was wondering why i had so much trouble getting the old wire out of the hole
<azonenberg> Then i saw the nail
<pepijndevos> oh, I expected it to be a UI thing, scopehal is just the hardware abstraction, right?
<azonenberg> So internally there's 3 main components
<azonenberg> libscopehal is the instrument drivers, transports, and some base classes for filter graph nodes but no actual filters/decodes
<azonenberg> libscopeprotocols is all of the filter graph processing (should probable be renamed, it's got lots of math and DSP stuff as well as protocol decodes)
<azonenberg> and glscopeclient is the UI
<azonenberg> scopehal and scopeprotocols both live in the scopehal repo, glscopeclient lives in scopehal-apps along with some other utilities of lesser importance
<pepijndevos> I see
<azonenberg> the filter graph is completely independent of glscopeclient and you can do arbitrary signal transformations and protocol decodes in a no-UI headless environment
<azonenberg> which is great for automated data acquisition, production test, etc
<pepijndevos> hmhm
<azonenberg> you just link with libscopehal and libscopeprotocols and call the C++ API directly
<pepijndevos> Are you planning any scripting interface eventually, or will all transformations and decoding always be C++?
<azonenberg> glscopeclient is purely UI and rendering. Although right now some of the file load/save code lives there as well, that should be refactored into the library eventually
<azonenberg> Not sure yet. The core datapath will always be C++ although i'm not opposed to providing bindings for other languages to string them together
<azonenberg> the native output of decodes is C++ data structures though
<azonenberg> But you could probably marshal that out to work in python or something
<pepijndevos> I imagine running a numpy function on the data could be pretty sweet
<azonenberg> i'm generally not a big scripting guy so i havent looked into that at all
<azonenberg> My target so far has been high performance and throughput, i'm actually thinking about pushing some of the filter graph to GPU eventually
<azonenberg> i want to be able to process thousands of multimillion point waveforms per second
<pepijndevos> hah, yea then scripting is not so great.
<azonenberg> So while i'm not opposed to adding it iff it doesn't hurt the core goals and functionality, i'm not going to sacrifice performance to do it
<pepijndevos> But it could be a neat way to cover the long tail. Like if you add a basic FIR LPF eventually someone will want a IIR filter or minimum phase or some complex loop shaping stuff or I don't know. Or decode some ancient protocol nobody cares about that probably runs at 300 baud
<azonenberg> if anything i'd be more inclined to provide interfaces for you to run custom compute shaders on the data
<azonenberg> Yes
<azonenberg> That's what the plugin interface is for
<azonenberg> so i think the best way to do scripting would be to have a plugin that wraps a python script or something
<azonenberg> and looks just like a C++ datapath element to the library
<pepijndevos> If I can run Futhark that'd be fun hehe
<pepijndevos> Yea linking with Python is kind of a PITA AFAIK, so doing it as a plugin probably saves a ton of headaches.
<azonenberg> Wow that was fast. Just got an email from shapeways
<azonenberg> Hopefully-final MEAD enclosure, and the production probe shells, are on the way
<Bird|otherbox> pepijndevos, where are you on this planet btw?
<Bird|otherbox> (roughly that is, don't need an address, just close enough to figure out what rules you're under for mains wiring)
einthecorgi2 has quit [Quit: -a- Connection Timed Out]
einthecorgi2 has joined #scopehal
<pepijndevos> Bird|otherbox, netherlands
<pepijndevos> The house has grounded sockets in all wet rooms: bathroom, kitchen, etc.
<pepijndevos> So the breaker is there, I just need to make some wires to my "lab"
<Bird|otherbox> hm. don't know what the wiring regs in .nl say, but in .us, ours will let you run a retrofit ground wire from an ungrounded receptacle to the ground wire on a grounded receptacle fed from the same panel (distribution board)
<pepijndevos> Well, if that's not allowed, I might end up being the guy in Andrew's story who broke the rules. Only hopefully less dangerous.
<pepijndevos> Is a compute shader the same thing as OpenCL, or nope?
juli964 has joined #scopehal
<azonenberg> compute shaders run in an opengl context and can easily exchange data with GL textures etc
<azonenberg> they can be used for the same purpose but if you're doing GL stuff are easier to integrate
einthecorgi2 has quit [Quit: -a- Connection Timed Out]
einthecorgi2 has joined #scopehal
einthecorgi2 has quit [Quit: -a- Connection Timed Out]
einthecorgi2 has joined #scopehal
einthecorgi2 has quit [Read error: Connection reset by peer]
einthec47 has joined #scopehal
einthec47 has quit [Ping timeout: 264 seconds]
einthecorgi2 has joined #scopehal
einthecorgi2 has quit [Read error: Connection reset by peer]
einthecorgi2 has joined #scopehal
einthec92 has joined #scopehal
einthecorgi2 has quit [Read error: Connection reset by peer]
<sorear> much safer to float a scope if it has no controls and only communicates over fiber, huh
* monochroma should get a bunch of balloons filled with helium to float a scope just off the bench
maartenBE has quit [Ping timeout: 240 seconds]
maartenBE has joined #scopehal
einthec92 has quit [Read error: Connection reset by peer]
maartenBE has quit [Ping timeout: 264 seconds]
maartenBE has joined #scopehal
electronic_eel has quit [Ping timeout: 240 seconds]
electronic_eel has joined #scopehal
electronic_eel has quit [Ping timeout: 260 seconds]
electronic_eel has joined #scopehal
juli964 has quit [Quit: Nettalk6 -]
_whitelogger has joined #scopehal
StM_ has quit [Ping timeout: 260 seconds]
StM has joined #scopehal