01:00
gruetzkopf has joined #glasgow
01:38
_whitelogger has joined #glasgow
02:56
_whitelogger has joined #glasgow
03:20
_whitelogger has joined #glasgow
03:44
_whitelogger has joined #glasgow
04:26
_whitelogger has joined #glasgow
04:32
_whitelogger has joined #glasgow
04:36
Guest87205 has joined #glasgow
04:55
uberushaximus has quit [Quit: leaving]
04:58
uberushaximus has joined #glasgow
06:45
<
whitequark >
marcan: pokepoke
06:45
<
marcan >
whitequark: ESD protection thing queued for today (maybe a bit later)
06:45
<
marcan >
do you have a preference for the part?
06:46
<
whitequark >
marcan: i'm thinking the onsemi part, it's cheap and available
06:47
<
marcan >
we considered 3 footprints; XBP14E5UFN, ESD7008, SP7538PUTG/RCLAMP7528T/ESDLC5V0PB8/824014885
06:47
<
marcan >
the 7008? sure
06:47
<
whitequark >
i don't like any of them much more than the others and esd7008 seems like the cheapest option with least part count
06:47
<
whitequark >
so, weak pref for it
06:48
<
marcan >
and that way I can ask esden to throw in a spare and I can test my theory about them selling the same part under two names
06:48
<
marcan >
(if the NC pins aren't NC at all)
06:49
<
marcan >
thoough tbh, that part, as advertised and documented, isn't very good at negative clamping
06:49
<
marcan >
because it has two diodes in series
06:49
<
marcan >
like, you'd
*want* straight diodes to GND in our application
06:49
<
marcan >
i.e. the MG2040 version
06:51
<
marcan >
also, one neat thing about that version is that it has extra pins, so I can throw a couple of them on Vsense and Vio (if I can route that)
06:53
<
marcan >
whitequark: thoughts?
06:59
<
marcan >
yeah it is
07:01
<
whitequark >
i guess that works
07:04
<
marcan >
whitequark: go with ESD7104 then? layout will look like the example on github (I'm still redoing it though)
07:04
<
marcan >
at least this way I guess we have two sources for the part
07:04
<
marcan >
and it has proper negative clamping
07:05
<
marcan >
(and it's mildly more flexible I guess; I could see using that part on, like, some kind of 4-wire aux bus)
07:05
<
whitequark >
that adds two euros to BOM
07:05
<
whitequark >
as opposed to about one and a half
07:05
<
whitequark >
well, no
07:05
<
marcan >
digikey has it for $.60
07:06
<
marcan >
so $2.40, yeah, two euros I guess
07:07
<
marcan >
my only concern is that if we use the ESD7008 then any low voltage negative transients are going to be eaten up by the shifters, instead of the protection
07:07
<
marcan >
since the shifters are going to clamp at -0.7V or whatever, that thing doesn't even start to kick in until -5V
07:08
<
marcan >
hence using the MG2040 instead
07:08
<
whitequark >
ah I see
07:08
<
whitequark >
yes, i agree
07:09
<
marcan >
so which option then?
07:10
<
whitequark >
so... we have ESD7008 or ESD7104 that wouldn't clamp negative transients
07:11
<
marcan >
ESD7104 would
07:11
<
marcan >
XBP14E5UFN would
07:11
<
whitequark >
right, but ESD7104 wouldn't
07:12
<
marcan >
same package, different function
07:12
<
whitequark >
so it's not a true replacement
07:12
<
marcan >
I got confused there
07:12
<
whitequark >
but MG2040 will, right?
07:12
<
whitequark >
and XBP14 will
07:13
futarisIRCcloud has joined #glasgow
07:13
<
whitequark >
so, MG2040 adds about 1 eur to the cost @ 100, lets us add additional protection to Vio and Vsense maybe
07:13
<
whitequark >
i mean
07:14
<
whitequark >
we don't really need protection on Vio as there's a huge cap there, and Vsense has a matching network that serves a similar function
07:14
<
whitequark >
we talked with awgyle about this, there's an issue on the tracker
07:14
<
whitequark >
that exlains why esd on those pins isn't a huge issue
07:14
<
marcan >
sure, but I mean it can't hurt it we just send a trace this way either
07:14
<
marcan >
also I'm thinking more eventual I2C pins or whatever too
07:14
<
whitequark >
xbp14e5... costs about as much
07:15
<
marcan >
the only problem with this part is that our pins are way more spread out than this; we'll have "effective" ESD protection on the IOs, the aux pins are more of a wash whether I can route them all the way to the chip
07:15
<
whitequark >
eiter of them is single source
07:16
<
whitequark >
who the hell is torex
07:16
<
whitequark >
i've never heard of them but mouser has seven freaking thousands of PMICs in stock
07:16
<
whitequark >
by torex
07:16
<
marcan >
japanese company
07:17
<
whitequark >
actually these don't look half bad
07:17
<
marcan >
they don't even have a wikipedia page
07:17
<
marcan >
I would file them under "weird japanese companies nobody outside has ever heard of"
07:18
<
whitequark >
LDO Voltage Regulators (4.137)
07:18
<
whitequark >
how do you even DESIGN four thousand different LDOs
07:18
<
marcan >
offer them in a million different voltages?
07:18
<
whitequark >
yes but FOUR THOUSAND
07:18
<
marcan >
0.01V resolution!
07:19
<
whitequark >
i bet it's like three dies and efuse
07:19
<
marcan >
looking at their "PMICs", looks like it's just supervisors
07:19
<
marcan >
and they did a cartesian product of a few packages and voltages
07:19
<
marcan >
they have them in 0.1V increments
07:20
<
whitequark >
4000 LDOs, 1500 switchers, 1600 supervisors
07:20
<
whitequark >
i'd say go with the onsemi part
07:20
<
marcan >
0.1V increments is like 30 options already
07:20
<
marcan >
times, say, 5 packages
07:20
<
marcan >
times 3 because of digikey packaging options
07:20
<
marcan >
there's 450 supervisors :p
07:21
<
whitequark >
it's a jellybean hdmi part, it's not gonna disappear
07:21
<
whitequark >
by onsemi too
07:21
<
marcan >
let's see how layout works for that
07:21
<
marcan >
I'm slightly but not overly concerned
07:22
<
marcan >
well, I'm not going to hook up the underside GNDs, pretty sure
07:22
<
marcan >
but that should be fine, they say a single GND pin is enough
07:22
<
marcan >
the eeschema symbol is going to just break them all out separately
07:22
<
marcan >
since with these kinds of devices connectivity is very much layout-driven
07:24
<
marcan >
heck, the footprint says "center pads optional"
07:24
<
marcan >
I'm tempted to just not have them
07:25
<
marcan >
can you even do trapezoid pads in kicad? :p
07:27
<
marcan >
I guess you need two pads for that, adjacent
07:28
<
marcan >
oh it can do custom shapes, nifty
07:31
<
marcan >
lol the package diagram isn't even to scale
07:34
<
marcan >
aaand I just crashed kicad with that feature
07:56
_whitelogger has joined #glasgow
08:25
<
marcan >
lol, with those trapezoid GND pads (that I can't ground anyway) we can't meet DRC
08:25
<
marcan >
I need to cut down the corners a tiiiny smidge more
08:26
<
marcan >
but that should be no issue
08:26
<
marcan >
design rule check
08:26
<
marcan >
so, I can provide two GNDs to the chi
08:26
<
marcan >
which should be fine
08:26
<
whitequark >
marcan: sweet
08:26
<
marcan >
if I remove those trapezoid pads then maaybe I can squeeze in a GND vias instead and hook it up to the remaining GND pins
08:26
<
marcan >
no wait, that won't work
08:27
<
marcan >
actually maybe it will
08:27
<
marcan >
this needs a 0.025mm grid to route on
08:27
<
marcan >
but the vertical dimension is less tight than with the XBP14E5UFN attempt, I think
08:28
<
marcan >
and I can pull out 3 spare pins
08:28
<
marcan >
maaybe 4-5 if I do some funny routing on the sides
08:28
<
marcan >
for auxiliary protection
09:42
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
10:12
futarisIRCcloud has joined #glasgow
11:14
_whitelogger has joined #glasgow
12:04
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 439a920 - revC1: add MG2040 symbol and footprint
12:04
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 7bb2843 - revC1: fix some ERC errors
12:04
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan b9794b5 - revC1: add ESD protection to IO banks
12:04
<
marcan >
whitequark: please review
12:05
<
marcan >
btw, I made the testpoint top silkscreen size 0.8; ran out of space for the 3V3/5V labels
12:05
<
marcan >
(but I changed them all)
12:05
<
marcan >
bottom testpoints silkscreen is still larger since we have space there
12:06
<
marcan >
missing the 3D model for the new IC of course, let me see if I can put something together
12:07
<
whitequark >
ack. needs an issue for upstreaming the symbol and fp
12:08
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 705033b - gateware.fx2_crossbar: rename FIFOs to reflect their function. NFC.
12:08
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark ffdc0ae - gateware.fx2_crossbar: simplify and clarify. NFCI.
12:09
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan e8fcc6f - revC1: fix U32 reference size
12:09
<
marcan >
I swear I'm going to miss something stupid like that and it's going to haunt me forever after we get them fabbed
12:09
<
marcan >
(that one part had a reference text that was larger than the rest)
12:11
<
whitequark >
back when i was laying out revA i was thinking "no way i could let anyone else do the layout, i have an autistic obsession over minor details and will never let go of control"
12:11
<
whitequark >
but you know i feel fine now
12:11
<
marcan >
I also snuck in an alignment fix for the IO bank silkscreen
12:11
<
marcan >
the labels were aligned but the GND lines weren't :p
12:12
<
whitequark >
excellent
12:12
<
marcan >
(and I ended up moving everything in Y to make it overlap less badly with the new vias)
12:12
<
whitequark >
ugh fucking kicad
12:12
<
whitequark >
they still haven't fixed the 3d viewer on hidpi
12:13
<
marcan >
btw, right now we're mixing 0.7 and 0.8 sized refs
12:13
<
marcan >
there is some logic to it
12:14
<
marcan >
everything is 0.8 except the right side of the board on the top (with the Vio supplies, and also the pull ICs and passives around that, but not the resistor networks or connectors), and the references in the box under the FPGA on the rear, which are 0.7
12:14
<
whitequark >
this is like, insanely tight
12:14
<
whitequark >
are you sure it'll fit
12:14
<
marcan >
it might make sense if we just make everything 0.7
12:14
<
marcan >
what will fit?
12:14
<
whitequark >
the ESD protection package
12:14
<
marcan >
the courtyard has margin and I'm not overlapping it with the connectors
12:14
<
marcan >
look at f.fab
12:15
<
marcan >
that's the actual package size
12:15
<
whitequark >
oh, excellent
12:16
<
marcan >
I'm not sure if this is documented anywhere, but my understanding is that the intent of the courtyards is that you're not supposed to overlap them, and that leaves enough clearance
12:16
<
marcan >
(though we are doing that in a few places, but not significantly so)
12:17
<
whitequark >
btw what happened to all the other 3d packages?
12:17
<
marcan >
did something happen?
12:18
<
whitequark >
oh, outdated packages3D
12:18
<
marcan >
oh, I just realized the Sync headr has a bullshit package
12:18
<
marcan >
it should be a KK connector, not a bare pin header, right?
12:18
<
marcan >
(you know, with polarity)
12:19
<
marcan >
oh btw, I did route vsense and vio through the ESD protection (like physically routed near the IC)
12:19
<
marcan >
and I put two pins on Vio because I had three
12:19
<
whitequark >
also, nice
12:20
<
whitequark >
hm, let's change silk from "LVDS Bank" to just "LVDS", it bothers me
12:20
<
whitequark >
because we don't have "A Bank"
12:21
<
marcan >
I think the idea of "bank" was more that it was the FPGA bank
12:21
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 28f520d - revC1: s/LVDS Bank/LVDS/
12:23
<
whitequark >
thanks
12:24
<
marcan >
baaaah, kicad has molex KK vertical, but not horizontal
12:25
<
whitequark >
yeah, that's why the model was bullshit
12:25
<
marcan >
silkscreen too though
12:25
<
marcan >
which bugs me
12:27
<
whitequark >
i'm this close to unfucking the fx2 crossbar
12:28
<
whitequark >
that would be the last major FPGA-side problem besides async resets being broken because lolmigen
12:28
<
marcan >
so there's this
12:28
<
marcan >
for some stupid reason it's not upstream
12:28
<
whitequark >
no license
12:29
<
whitequark >
"generated with kicad-footprint-generator"
12:29
<
whitequark >
maybe we could talk to them?
12:29
<
marcan >
let me open an issue
12:53
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 02cf946 - gateware.fx2_crossbar: factor out more logic into _FX2Bus. NFC.
12:54
<
marcan >
whitequark: we still don't have protection for sync, btw
12:54
<
marcan >
well other than a resistor
12:55
<
marcan >
have a favorite single-channel TVS? :p
12:56
<
whitequark >
not really
12:56
<
marcan >
at least I hope those just come in some trivial diode package
12:56
<
whitequark >
they should
12:56
<
whitequark >
didn't Hellsenberg remove a dead one from a motherboard juts nearby
12:56
<
whitequark >
*just recently
12:58
<
marcan >
do we want to use a 3V3 part or a 5V part?
12:58
<
marcan >
SYNC is nominally 3V3 but, right now, if in input mode, 5V tolerant
12:58
<
whitequark >
5V definitely
12:58
<
whitequark >
people will use it to sync with external 5V logic and that's valid
12:59
<
marcan >
so something like that?
12:59
<
marcan >
(going along with the onsemi theme)
12:59
<
whitequark >
the ESD protection goes before the resistor, right?
12:59
<
marcan >
yes (my theory being that that way the resistor protects downstream from whatever voltage the TVS clamps to)
12:59
<
marcan >
of course it also means enough energy will blow the TVS
13:00
<
marcan >
but it should be specced for that anyway
13:00
<
whitequark >
so if people use 5V input then it will get clamped to our 3V3 rail through the level shifter
13:00
<
marcan >
the shifter doesn't clamp to vcc
13:00
<
whitequark >
at all?
13:00
<
marcan >
in input mode anyway
13:00
<
whitequark >
oh that's handy
13:00
<
whitequark >
yep definitely need a 5V TVS
13:00
<
marcan >
at least that's what the datasheet says
13:00
<
marcan >
I haven't attempted to measure it
13:01
<
marcan >
it's somewhat vague
13:02
<
whitequark >
yeah sure, that onsemi device is ok
13:02
<
marcan >
multimeter says I've got a diode drop to GND but nothing to Vio
13:03
<
gruetzkopf >
are you planning on being showcased by onsemi for their protection devices?
13:03
<
whitequark >
gruetzkopf: lol
13:03
<
whitequark >
seriously though
13:03
<
marcan >
whitequark: do we care about AUX?
13:03
<
whitequark >
i assumed the shifter clamps to Vio
13:03
<
whitequark >
if it doesn't it means we
*really* need these TVS
13:03
<
marcan >
I mentioned this fact earlier here :-)
13:03
<
whitequark >
for positive pulses
13:04
<
whitequark >
yeah, i must have missed it somehow?
13:04
<
whitequark >
as for AUX, it's internal and shouldn't be exposed in cass
13:04
<
whitequark >
*cases
13:05
<
whitequark >
so i think the resistors are fine
13:05
<
whitequark >
i don't plan on keeping AUX anyway on revD
13:06
<
whitequark >
hm, question
13:06
<
whitequark >
are there any shift registers where you shift O and OE into them, and shift out I?
13:06
<
marcan >
it's just going to be D_Zener btw
13:06
<
marcan >
hm, what do you mean?
13:07
<
whitequark >
imagine the PCA bus extender but on SPI instead of I2C
13:07
<
marcan >
hm, good question
13:07
<
whitequark >
revD will not come along for a while and i want an interim solution
13:07
<
whitequark >
i can make a hardware abstraction for a pin extender
13:07
<
marcan >
interim solution for what?
13:07
<
whitequark >
like, gateware abstraction
13:07
<
marcan >
I see what you mean
13:08
<
marcan >
well you could just chain off standard shift registers and our existing level shifters
13:08
<
whitequark >
that sounds depressing
13:08
<
marcan >
hm actually no
13:08
<
whitequark >
that's a fuckton of packages
13:08
<
whitequark >
i mean
13:08
<
whitequark >
it is obviously doable with two packages
13:09
<
whitequark >
wait, no
13:09
<
whitequark >
marcan: troll answer: put an XC9500XL there
13:09
<
whitequark >
which..... might actually be the lowest cost solution
13:09
<
whitequark >
because it's very fast and it can clearly do what i want
13:11
<
whitequark >
marcan: there'd be a stupid problem with XC9500
13:11
<
whitequark >
it can't run on 5V
13:11
<
whitequark >
so that board will need to be shipped with a zener and a ten pack of 0805 SMD fuses
13:11
<
whitequark >
or i guess a polyfuse?
13:12
<
marcan >
err ESD9X5.0 is way too fucking small
13:12
<
whitequark >
too small for what?
13:12
<
marcan >
0.80 x 0.60mm lol
13:12
<
whitequark >
christ
13:12
<
whitequark >
that's well into "inhalation hazard" territory
13:12
<
marcan >
it's somewhat smaller than 0402, but I don't want anything smaller than 0402
13:13
<
marcan >
maybe it
*is* 0402?
13:13
<
marcan >
yeah actually
13:13
<
whitequark >
0.039x0.024
13:13
<
whitequark >
that's more or less 0402
13:14
<
marcan >
yeah actually
13:14
<
marcan >
I think I can just use the 0402 footprint
13:14
<
whitequark >
that feels dirty
13:15
<
whitequark >
though
13:15
<
marcan >
"The SESD0402S-005-054 device is an ultra-low-capacitance SOD-923 (0402-size package)"
13:15
<
marcan >
I think it's probably intended to actually be 0402
13:15
<
whitequark >
doesn't kicad have sod-923?
13:15
<
marcan >
but it has a 0402 diode
13:15
<
ali_as >
I like the xc9500s, they're obsolete now I think.
13:15
<
whitequark >
ali_as: hence XL
13:16
<
ali_as >
Are they still in production?
13:16
<
whitequark >
the XL version is
13:16
<
whitequark >
it's a smaller process
13:17
<
whitequark >
so, no longer 5V, though still 5V-tolerant
13:17
<
whitequark >
internals are quite different too
13:17
<
ali_as >
Cool, I thought they'd all been discontinued.
13:18
<
ali_as >
Still has the 90 product terms limitation.
13:18
<
Hellsenberg >
when did I remove a dead TVS from a board
13:18
<
Hellsenberg >
oh, I did remove an ESD protector
13:19
<
whitequark >
ali_as: i think it's a similar architecture but different silicon
13:19
<
Hellsenberg >
i think it's dual channel, even if it's in a 6 pin package
13:19
<
whitequark >
the bitstream organization is totally different
13:19
<
whitequark >
ali_as: as for 90 product terms... i'm just using it as a long shift register, pretty sure i'll be fine
13:20
<
ali_as >
Strange, the XL is specced at a higher clock rate but pit to pin delay is the same.
13:20
<
ali_as >
Pin to pin.
13:20
<
Hellsenberg >
wait it's actually four channel
13:24
<
whitequark >
ali_as: can XC9500 do DDR?
13:26
<
ali_as >
Latch on both edges? Yikes not sure.
13:27
<
whitequark >
> Each macrocell flip-flop is configurable
13:27
<
whitequark >
for either single edge or DualEDGE clocking, providing
13:27
<
whitequark >
distribute a slower clock (thereby saving power).
13:27
<
whitequark >
either double data rate capability or the ability to
13:27
<
whitequark >
why the fuck is that a trademark
13:27
<
Hellsenberg >
lolwut
13:30
<
marcan >
whitequark: so, lol
13:30
<
marcan >
and they are
*all different*
13:30
<
marcan >
I think I can just get away with using the 0402 diode package :p
13:31
<
whitequark >
marcan: that'll just cause issues when upstreaming i think
13:31
<
whitequark >
but feel free
13:31
<
marcan >
there is nothing to upstream
13:31
<
marcan >
it's a generic diode
13:32
<
marcan >
I'm using the zener symbol
13:32
<
marcan >
and to fix the lack of 3D I'm doing what that last link did
13:32
<
marcan >
which is take the 0603 model and set scale to 0.7
13:35
<
ali_as >
I'm finding references to duel edge capability in coolrunner but not 9500 series.
13:36
<
ali_as >
Was the quote you posted about 9500?
13:37
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 4af0475 - revC1: add a TVS protection diode to SYNC
13:37
<
marcan >
wait I derped
13:39
<
whitequark >
oh wait
13:39
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 59c960b - revC1: add a TVS protection diode to SYNC
13:39
<
marcan >
whitequark: sorry for the force push
13:40
<
whitequark >
marcan: five second rule applies
13:40
<
whitequark >
well more like five minute rule
13:40
<
marcan >
yeah I was going to say :P
13:40
<
marcan >
(had the wrong part, and I also fixed the fab layer)
13:40
<
marcan >
(I always forget about the fab layer, lol)
13:41
<
marcan >
pretty sure it'll work, the pads are just larger
13:41
<
marcan >
but you have more manufacturing experience
13:42
<
marcan >
if needed we can make a more accurate footprint, I'm just not sure if it's worth doing
13:42
<
whitequark >
ali_as: sorry, brain fart
13:42
<
whitequark >
i somehow thought 9500 is the same as coolrunnerii
13:44
<
whitequark >
xc9572 is probably enough
13:44
<
whitequark >
hm, maybe not
13:45
<
whitequark >
for n pins i need n*3 registers
13:46
<
whitequark >
or, no, n*4
13:47
<
whitequark >
a pair to latch io and oe value, and a pair to shift them
13:48
<
whitequark >
so for 16 io that'd be 64 registers
13:51
<
marcan >
whitequark: I just through of this, but are the names on the front intended to be twitter, or github?
13:51
<
marcan >
unfortunately I'm the only one on there with a mismatch
13:51
<
marcan >
(marcan on github, marcan42 on twitter)
13:51
<
whitequark >
marcan: uh, i don't know
13:51
<
Hellsenberg >
are we going to stick a cpld on the glasgow? reminds me of several chonky fpga boards
13:52
<
whitequark >
i think they're intended to be both
13:52
<
whitequark >
pick your poison?
13:52
<
whitequark >
i'd say github
13:52
<
whitequark >
Hellsenberg: no, as an addon
13:52
<
marcan >
well, first of all, let me take care of the obvious problem
13:59
_whitelogger has joined #glasgow
14:01
<
marcan >
probably safer to leave it as @marcan42 then
14:01
<
marcan >
since @marcan is some rando
14:01
<
marcan >
(on twitter)
14:31
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark c4ec091 - revC: tiny changes to text placement on schematic for readability.
14:55
<
marcan >
Hellsenberg: lol
14:56
<
Hellsenberg >
wouldn't be a bad idea :P
14:58
<
marcan >
apparently the "recommended" way is freecad, but fuuuck that
14:59
<
marcan >
the ebuild isn't even in gentoo any more because it's still qt4, lol
14:59
<
whitequark >
it normally has to be STEP but this part has no round corners
14:59
<
whitequark >
so it probably doesn't matter?
15:00
<
marcan >
the only round thing is the pin1 marker
15:24
<
marcan >
whitequark: meh, I can't find any flow that doesn't involve freecad
15:24
<
marcan >
have you ever done this before?
15:25
<
whitequark >
marcan: yes, i used freecad
15:25
<
whitequark >
i absolutely detest freecad in every possible way
15:26
<
marcan >
okay, then I'm not bothering with this until freecad is back in gentoo
15:26
<
marcan >
also, what is it with 3d software being shit and unbuildable
15:27
<
marcan >
wings3d fails to build too
15:27
<
whitequark >
solvespace doesn't :P
15:28
<
marcan >
I'm going to see if I can get my openscad thing into blender and out to wrl, just for the fancy render
15:28
<
marcan >
(thus no upstream)
15:28
<
marcan >
and if this doesn't work, screw it
15:29
<
whitequark >
no STEP on peng
15:29
<
whitequark >
like no step on snek, but peng, as in linux penguin
15:42
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
15:47
uovo has joined #glasgow
16:06
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan ed9ac32 - revC1: add UDFN-18 package model
16:24
<
whitequark >
i completely reworked the crossbar and it worked the 1st time
16:25
m4ssi has joined #glasgow
16:30
<
whitequark >
i mean, i also simplified it to like three FSM states
16:30
<
whitequark >
well, five states, four decision points
16:30
<
whitequark >
and it ALSO works even faster now
16:31
<
whitequark >
because it correctly sends ZLPs
16:40
<
Hellsenberg >
pardon my ignorance, what is a crossbar?
16:41
<
Hellsenberg >
i am not sure how the fx2 and the fpga talk to each other, so I should address this too
16:41
<
tnt >
Hellsenberg: glue logic between busses
16:42
<
tnt >
in this case the internal FIFOs of the fpga and the FX2 interface.
16:42
<
Hellsenberg >
hm, I see
16:42
<
whitequark >
oh, my skepticism was warranted, it does hang in some edge cases
16:42
<
whitequark >
though in fewer edge cases than before
16:42
<
whitequark >
and more deterministically
16:42
<
whitequark >
so it's still good
16:43
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan bf02244 - revC1: make the routing around the ESD protection more uniform
16:47
<
marcan >
5 minute rule again :p
16:47
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan de5346f - revC1: make the routing around the ESD protection more uniform
16:48
<
marcan >
pin1 of the ESD protection is special, the mirror symmetry caused the trace to enter the pad strangely. adjusted both sides to match and look decent for both
16:48
<
Hellsenberg >
marcan: don't get really used to this, afaik the AUR does not allow it
16:49
<
Hellsenberg >
force pushing
16:49
<
Hellsenberg >
had a friend tell me he's had to do a sad small fixup commit a few times :P
16:50
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 2ee4744 - revC1: make the routing around the ESD protection more uniform
16:50
<
marcan >
Hellsenberg: how is AUR related to this?
16:51
<
Hellsenberg >
not much
16:51
<
Hellsenberg >
don't mind me I brain farted
16:57
<
whitequark >
ah, fencepost error
17:02
<
whitequark >
one i knew about, even
17:02
<
whitequark >
just forgot to actually handle
17:06
<
marcan >
GNDs actually, but I'm not connecting them because I can't
17:09
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 5a7d18a - gateware.fx2_crossbar: rework to handle pipelining. (UPDATE FIRMWARE)
17:21
<
whitequark >
daveshah: can you explain why does ice40 even -have- PIN_INPUT_DDR?
17:22
<
daveshah >
what do you mean exactly?
17:22
<
whitequark >
oh wait
17:22
<
whitequark >
PIN_INPUT_REGISTERED and PIN_INPUT_DDR is exactly same
17:22
<
whitequark >
I thought they were different, but they are not
17:44
ali_as has quit [Remote host closed the connection]
17:44
ali_as has joined #glasgow
17:56
ali_as has quit [Remote host closed the connection]
18:03
<
esden >
marcan: I am not sure, I did use some SOD footprint on an 0603 footprint in the past, and despite on paper they seemed ok in practice I ended up with the diode floating on solder and I had to rework a bunch of boards. I am not sure this will be an issue in this case, but I did end up adjusting the foot print to be exactly as they recommend to battle the issue I had. As I said I was 0603 not 0402.
18:04
<
marcan >
hm, floating on solder as in not attaching at the pins?
18:04
<
esden >
I bet you don't have space for 0603 footprint but for parts that come in plastic tape I prefer them in bigger packages, 0402 parts in plastic tape are super bouncy :(
18:04
<
marcan >
I think I can fit a 0603 in there, if you have a preferred 5V TVS in that package
18:05
<
marcan >
something in SOD-523 I guess (which kicad
*does* have)
18:07
<
esden >
I only have a schottky diodes that I use in many things. I was using those bit less common 0603 packaged ones. Switching over to SOD-523 in the future.
18:08
<
marcan >
oh, onsemi has these in SOD-523 too
18:21
<
whitequark >
gruetzkopf: i found another setup/hold violation
18:21
<
whitequark >
the FX2 has somewhat ridiculous clock-to-flag timings
18:21
<
whitequark >
9.5 ns
18:21
<
whitequark >
well, i understand why they did it
18:22
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan b82a151 - revC1: switch to a SOD-523 diode for the SYNC protection
18:22
<
gruetzkopf >
interesting..
18:23
<
gruetzkopf >
(why can't they provide a useful machinereadable timing model)
18:24
<
marcan >
esden: datasheet says 0.48 × 0.40 pads though, while the KiCad footprint has 0.6 × 0.7
18:24
<
marcan >
(even though both claim to be SOD-523)
18:24
<
marcan >
not sure if you think that might be a problem
18:25
<
esden >
marcan: it could be a problem, it might float the part in a strange way. It is hard to know until tested on a hundred boards or so...
18:26
<
esden >
maybe less but still :)
18:26
<
marcan >
well, the problem is the usual thing where several manufacturers call a package $foo but then specify totally different recommended solder patterns
18:26
<
esden >
just put the large one on the board for now... if we need a custom one because the one in kicad is wrong we will try to solve it. :)
18:26
<
tnt >
whitequark: 9.5 ns should be fine ?
18:26
<
marcan >
yeah, that photo is of that commit I just made
18:27
<
tnt >
why do you think it's a setup/hold violation ?
18:27
<
marcan >
SOD-523 (0603 ish size)
18:27
<
marcan >
only reason we had a 0402 is it was the first part I stumbled upon from a related datasheet from onsemi
18:27
<
esden >
marcan: yes that is why I chose it. I will be making my custom footprint that matches the datasheet for the icebreaker.
18:27
<
whitequark >
tnt: 9.5 ns or 13.5 ns with externally sourced IFCLK
18:27
<
marcan >
well, and it's $.10 cheaper in 0402
18:28
<
whitequark >
tnt: oh yeah 9.5 ns is fine at 30 MHz
18:28
<
whitequark >
but not 48 MHz
18:28
<
marcan >
esden: the footprint I'm using claims to be SOD-523, to be clear (it's different from plain 0603)
18:28
<
marcan >
but if you want me to dump a custome one with the pad sizes adjusted that's trivial too
18:29
<
marcan >
it's just one more one-off footprint
18:29
<
gruetzkopf >
48MHz * (*not for any interesting case)
18:29
<
gruetzkopf >
9.5ns leaves what, .7ns to falling edge of CLK?
18:30
<
whitequark >
interesting case?
18:30
<
tnt >
whitequark: still ndon't get it. If you capture on the falling edge, 9.5 ns clk-to-out it still fine
18:31
<
tnt >
capture window is 1.3 ns to 5.6 ns after the capture edg.e
18:31
* whitequark
reverts some changes
18:33
<
whitequark >
logic error elsewhere caused me to look for this S/H violation
18:33
<
whitequark >
nevermind everything
18:34
<
esden >
marcan: it might be better to trust the data sheet on the footprint probably. I will cross check that with the parts I will be using later today. And see if they differ.
18:45
<
whitequark >
marcan: tnt: review requested on the final form of the FX2 crossbar
18:45
<
whitequark >
i think i like everything about it now
18:45
<
whitequark >
and it withstands my tests
18:45
<
gruetzkopf >
even the cursed device test?
18:45
<
whitequark >
haven't checked yet
18:45
<
whitequark >
er and haven't pushed
18:46
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 995e002 - gateware.fx2_crossbar: re-register FX2 outputs.
18:46
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 468e706 - gateware.fx2_crossbar: eliminate wait states.
18:49
<
whitequark >
gruetzkopf: jesus fuck that machine is
*slow*
18:49
<
whitequark >
Info: SA placement time 65.18s
18:50
<
gruetzkopf >
it's a slow-clocking, laptop variant of AMD Fam 14h, "Bobcat"
18:51
<
gruetzkopf >
that's a 2011-ish ultra-low-power thing
18:51
<
gruetzkopf >
(and yeah, i want a replacement for it)
18:51
<
whitequark >
tnt: dunno, i don't want to fiddle with that over ssh
18:51
<
whitequark >
i absolutely hate that shit
18:54
<
Hellsenberg >
i guess the only good thing this amd chip has is coreboot support
18:54
<
whitequark >
it's bad enough that i need to download 8 MB over... 15 KB/s?
18:54
<
whitequark >
gruetzkopf: ok yeah no, i'm not gonna debug thi
18:54
<
whitequark >
if you want me to look at it any further give me a real machine with a real internet connection
18:55
<
whitequark >
selftest succeeds, source benchmark fails
18:55
<
whitequark >
i have two files, actual.bin and golden.bin
18:56
<
gruetzkopf >
15KB/s is like factor 20 off from expected
18:57
<
whitequark >
that's upload
18:57
<
whitequark >
i'm trying to grab those files from a machine where i don't have root, to a machine where i do
18:58
<
whitequark >
it looks like the difference starts at byte 0x200
18:58
<
whitequark >
which is weird
18:58
<
whitequark >
oh wait
18:58
<
whitequark >
wait nevermind
18:58
<
whitequark >
i forgot to rebuild and upload firmware
19:01
<
whitequark >
gruetzkopf: YEP
19:01
<
whitequark >
the cursed device works now
19:01
<
whitequark >
I: g.applet.internal.benchmark: mode loopback: 6.91 MiB/s (55.26 Mb/s)
19:01
<
whitequark >
that's a whopping one third of the speed you should be getting
19:02
<
whitequark >
gruetzkopf: enjoy your glasgow :D
19:02
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 238cced - device.config: fix typo.
19:02
<
tnt >
whitequark: so what was the issue ?
19:02
<
whitequark >
tnt: issue with what exactly?
19:03
<
whitequark >
gruetzkopf's device?
19:03
<
whitequark >
i'm not entirely sure, but it's probably some combination of s/h violations and me using pipelining incorrectly
19:04
<
whitequark >
okay, so i also made everything 1.5-1.8 times faster
19:04
<
whitequark >
because now we're limited by posedge->posedge and not negedge->posedge
19:07
<
whitequark >
aaaaaand i made it EVEN FASTER
19:07
<
whitequark >
I: g.applet.internal.benchmark: mode loopback: 30.83 MiB/s (246.62 Mb/s)
19:08
<
tnt >
E: g.applet.internal.benchmark: mode source failed!
19:08
<
whitequark >
tnt: need to update firmware
19:09
<
whitequark >
go to software/ and do python3 setup.py build_ext
19:10
<
marcan >
whitequark: wait hold on what
19:10
<
marcan >
30MiB/s loopback?
19:11
<
marcan >
that is not a thing
19:11
<
tnt >
whitequark: ah yes, indeed, thanks :)
19:11
<
marcan >
that is faster than the USB bit rate
19:11
<
whitequark >
did i make an error in math somewhere?
19:12
<
whitequark >
i... don't think so?
19:12
<
whitequark >
1 << 20 is one megabyte
19:12
<
hl >
I think what he means is, USB HS is still half-duplex, so 480/2=240Mb/s
19:12
<
marcan >
so this is impossible
19:13
<
whitequark >
oh, i know what happens
19:13
<
whitequark >
i forgot a flush call lmao
19:13
<
whitequark >
wait no
19:13
<
whitequark >
what the fuck
19:13
<
hl >
only explanation: you broke through the USB shittiness barrier and made USB better than it previously was
19:14
<
marcan >
for reference, my record is 42MiB/s on an FT2232H in one direction (so no turnaround overhead).
19:14
<
whitequark >
oh, i see the problem
19:14
<
whitequark >
i count each byte twice
19:14
<
marcan >
that makes more sense
19:15
<
marcan >
so it's full throughput, not in both directions
19:15
<
marcan >
so you still have 40% improvement margin to match my FTDI record :p
19:15
<
whitequark >
i mean
19:15
<
whitequark >
not using python to run the benchmark would be a start?
19:16
<
marcan >
FTDI thing was in C :P
19:16
<
marcan >
though if you have big pipelined URBs that shouldn't be an issue
19:16
<
daveshah >
kernel mode glasgow ;)
19:16
<
whitequark >
i have big pipelined URBs but i'm pretty sure this can be improved
19:16
<
whitequark >
because i haven't even profiled it
19:16
<
whitequark >
i mean, big = 8k
19:16
<
marcan >
this is master, right?
19:16
<
marcan >
oh I think I had like 128k URBs lol
19:16
<
whitequark >
not yet
19:16
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 097593b - Raise IFCLK frequency on revC0+ to 48 MHz. (UPDATE FIRMWARE)
19:16
<
whitequark >
now it's master
19:17
<
tnt >
oh, it's rev C only :)
19:18
<
whitequark >
well yes
19:18
<
marcan >
ah, just checked. I was doing 16K URBs but queuing 32 of them at once
19:18
<
whitequark >
revB is faster too, but it can't quite clear that barrier
19:18
<
whitequark >
i get 40 MHz Fmax
19:18
<
marcan >
so 512k worth of queuing
19:18
<
whitequark >
it
*might* be possible to optimize
19:18
<
whitequark >
marcan: lemme try those settings
19:19
<
marcan >
note that this was single direction. do you have a test like that?
19:19
<
marcan >
i.e. glasgow just generates a stream of crap
19:19
<
whitequark >
marcan: yes
19:19
<
whitequark >
benchmark runs source, sink and loopback
19:20
<
marcan >
also note that the FTDI iface clock is 60MHz
19:20
<
marcan >
this is 48, right?
19:20
<
whitequark >
but it should be able to saturate the bus with 48 MHz
19:21
<
marcan >
E: g.applet.internal.benchmark: mode source failed!
19:21
<
marcan >
E: g.applet.internal.benchmark: mode loopback failed!
19:21
<
whitequark >
since that's 384 Mbps and USB can't move that much data
19:21
<
marcan >
what happened here?
19:21
<
whitequark >
marcan: need to update firmware
19:21
<
whitequark >
python3 setup.py build_ext
19:21
<
whitequark >
it probably should replace that with a symlink if you run `python3 setup.py develop`, maybe
19:22
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark dc63586 - access.direct.demultiplexer: increase buffering to 32 packets ×16.
19:23
<
marcan >
okay there is something le dumb about this
19:23
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 8.000 MiB
19:23
<
marcan >
I: g.applet.internal.benchmark: mode source: 21.50 MiB/s (172.00 Mb/s)
19:23
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 128.000 MiB
19:23
<
marcan >
I: g.applet.internal.benchmark: mode source: 5.24 MiB/s (41.92 Mb/s)
19:23
<
marcan >
CPU limited
19:23
<
whitequark >
i'm not entirely sure why
19:24
<
marcan >
cutting up bytestrings the dumb way, maybe?
19:24
<
whitequark >
shouldn't be
19:24
<
whitequark >
wait, let me check something
19:27
<
whitequark >
marcan: yeah
19:27
<
whitequark >
lemme fix this
19:27
<
marcan >
read_data += packet? :p
19:27
<
marcan >
(or the like)
19:27
<
marcan >
called it.
19:32
<
whitequark >
is that quadratic?
19:33
<
marcan >
well the statement is linear in the size of read_data
19:33
<
marcan >
so overall calling it for every packet is quadratic
19:34
<
whitequark >
marcan: I: g.applet.internal.benchmark: mode source: 30.14 MiB/s (241.09 Mb/s)
19:34
<
whitequark >
with quadratic fix
19:34
<
whitequark >
I: g.applet.internal.benchmark: mode source: 31.61 MiB/s (252.90 Mb/s)
19:34
<
whitequark >
and this is what i get if i don't concatenate the received packets inside the timed section
19:35
<
marcan >
yeah, that's reasonable
19:35
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark f574101 - access.direct.demultiplexer: fix accidentally quadratic read().
19:36
<
marcan >
eh, there's still something wrong here
19:36
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 32.000 MiB
19:36
<
marcan >
I: g.applet.internal.benchmark: mode source: 26.19 MiB/s (209.52 Mb/s)
19:36
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 128.000 MiB
19:36
<
marcan >
I: g.applet.internal.benchmark: mode source: 18.10 MiB/s (144.78 Mb/s)
19:37
<
whitequark >
yes, it's linear in the amount of data
19:37
<
whitequark >
because it's concatenating all those URBs in the timed loop
19:37
<
marcan >
it's
*slowing down* with more data, so it's worse than linear
19:37
<
whitequark >
maybe python's join() is not linear?
19:39
<
whitequark >
marcan: lemme just add some more benchmark modes
19:39
<
whitequark >
that would discard the received data
19:39
<
whitequark >
or send zeroes
19:41
<
marcan >
I can concatenage 8GB of data in 3.8 seconds in python, so .join() is clearly not the problem here
19:41
<
marcan >
*concatenate
19:42
<
marcan >
(that's 8K buffers)
19:44
m4ssi has quit [Remote host closed the connection]
19:53
<
whitequark >
marcan: hm, no
19:53
<
whitequark >
i added zero mode instead of prbs
19:53
<
whitequark >
no difference whatsoever
20:01
<
marcan >
whitequark:
*now* it's linear.
20:01
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] marcan 48bd1a3 - chunked_fifo: fix O(n²) __len__()
20:01
<
whitequark >
of fucking course
20:03
<
marcan >
still very clearly CPU limited during the transfer though, but at least now it's a constant optimization problem
20:03
<
marcan >
okay, off to sleep :p
20:06
<
marcan >
whitequark: actually, _packets_per_xfer = 64 makes it no longer CPU limited on my system
20:06
<
marcan >
but I barely get any improvement; looks like I'm right on the edge here
20:06
<
marcan >
so the bottleneck seems to be elsewhere (could be a pipelining issue)
20:08
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 128.000 MiB
20:08
<
marcan >
I: g.applet.internal.benchmark: mode source: 26.81 MiB/s (214.49 Mb/s)
20:08
<
marcan >
I: g.applet.internal.benchmark: mode sink: 30.97 MiB/s (247.76 Mb/s)
20:08
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode sink for 128.000 MiB
20:08
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode loopback for 128.000 MiB
20:08
<
marcan >
I: g.applet.internal.benchmark: mode loopback: 31.15 MiB/s (249.20 Mb/s)
20:08
<
marcan >
that's what I get right now
20:08
<
marcan >
whitequark: I might opevizsla this later to check bus utilization
20:09
<
marcan >
(will probably have to write some analysis tool for the output though :p)
20:09
<
marcan >
anyway, nn!
20:39
<
marcan >
whitequark: okay it's definitely hardware limited. (I did attempt to go to sleep but failed :p)
20:39
<
whitequark >
how so?
20:39
<
marcan >
I see NAKs from the FX2
20:40
<
marcan >
an IN xfer takes about 9-10µs; I see a pattern of 3 packets - NAK - 4 packets - NAK, approximately
20:41
<
marcan >
and my host controller decides to wait 21µs after each NAK before trying again
20:41
<
marcan >
so that's 70µs active 40µs blocked
20:41
<
whitequark >
so if i use an iso endpoint with bInterval=1 it should get better, right?
20:42
<
whitequark >
and three packets per microframe of course
20:42
<
marcan >
iso is complicated
20:42
<
marcan >
you need high bandwidth transfers for that
20:42
<
marcan >
and you might lose data
20:42
<
marcan >
don't use iso
20:42
<
marcan >
iso is a major PITA
20:42
<
whitequark >
why can't the HC just, not wait before another BULK IN token ;w;
20:43
<
gruetzkopf >
because usbif?
20:43
<
gruetzkopf >
isn't that enough?
20:43
<
whitequark >
usbif does not specify HC behavior
20:54
<
tnt >
welll why the NAK in the first place ? if the fpga kept the FX2 buffer filled, it shouldn't NAK.
20:55
<
tnt >
it doesn't seem unreasonable for the HC to pause a bit if the device last reported it had nothing to say.
20:55
<
marcan >
because the FPGA can't keep the FX2 buffer filled
20:55
<
marcan >
not at 48MHz
20:55
<
marcan >
USB2 linerate is 60MHz
20:55
<
marcan >
(hence why the FTDI FIFO runs at that rate, and
*that* certainly keeps the buffers topped up)
20:56
<
whitequark >
FX2 can do better than 30 MB/s i think
20:56
<
whitequark >
lemme see
20:56
<
marcan >
the problem here is we're running into NAKs
20:56
<
marcan >
so, like, as soon as you
*can't* saturate the bus, you drop a lot of bandwidth
20:56
<
marcan >
and this is HC dependent
20:57
<
Hellsenberg >
stupid question: is "make the fpga run faster" not an option?
20:57
<
Hellsenberg >
or is the 30 MHz clock a hard requirement?
20:57
<
marcan >
in fact, lol.
20:57
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 32.000 MiB
20:57
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode sink for 32.000 MiB
20:57
<
marcan >
I: g.applet.internal.benchmark: mode sink: 31.64 MiB/s (253.13 Mb/s)
20:57
<
marcan >
I: g.applet.internal.benchmark: mode source: 35.81 MiB/s (286.47 Mb/s)
20:57
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode loopback for 32.000 MiB
20:57
<
marcan >
I: g.applet.internal.benchmark: mode loopback: 40.54 MiB/s (324.32 Mb/s)
20:57
<
marcan >
that's on EHCI
20:57
<
whitequark >
marcan: what.
20:57
<
marcan >
previous was on xHCI :D
20:57
<
marcan >
see, the FTDI runs faster on xHCI (42MB/s vs 40 or so)
20:57
<
marcan >
buuut I guess EHCI retries faster?
20:57
<
whitequark >
Hellsenberg: we already run the FPGA at 48 MHz
20:58
<
whitequark >
on revC
20:58
<
Hellsenberg >
oh, so it got a speedup. nice.
20:58
<
Hellsenberg >
thought it would still be running at 30 MHz
20:58
<
marcan >
I was using xHCI under the assumption that it would be faster, as it was for FTDI
20:58
<
marcan >
but I guess not :D
20:59
<
gruetzkopf >
xhci firmware bug?
20:59
<
whitequark >
marcan: The results
20:59
<
whitequark >
show that the average throughput that can be achieved with the BULK transfers is 43.8 MBps and the maximum
20:59
<
whitequark >
throughput that can be achieved with ISO transfers is 24 MBps.
20:59
<
whitequark >
this is what the FX2 docs say
20:59
<
whitequark >
that's Intel IHC9 EHCI on Win7
20:59
<
marcan >
well I just got 40MB/s on EHCI sooo
21:00
<
whitequark >
marcan: ohhhhhh
21:00
<
whitequark >
marcan: i know how to improve it dramatically lol
21:00
<
whitequark >
give me a moment
21:02
<
whitequark >
I: g.applet.internal.benchmark: running benchmark mode source for 8.000 MiB
21:02
<
whitequark >
I: g.applet.internal.benchmark: running benchmark mode sink for 8.000 MiB
21:02
<
whitequark >
I: g.applet.internal.benchmark: mode source: 43.37 MiB/s (346.94 Mb/s)
21:02
<
whitequark >
I: g.applet.internal.benchmark: running benchmark mode loopback for 8.000 MiB
21:02
<
whitequark >
I: g.applet.internal.benchmark: mode sink: 42.76 MiB/s (342.09 Mb/s)
21:02
<
whitequark >
I: g.applet.internal.benchmark: mode loopback: 42.91 MiB/s (343.24 Mb/s)
21:02
<
whitequark >
that's on xhc
21:02
<
Hellsenberg >
sorcery
21:02
<
marcan >
I saw that
21:02
<
marcan >
and I was wondering if you were using it
21:02
<
marcan >
is this okay for all use cases?
21:02
<
whitequark >
this only works in 2 EP mode
21:03
<
whitequark >
lemme wire it up so it automatically activates if there's only two EPS
21:03
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 64.000 MiB
21:03
<
marcan >
I: g.applet.internal.benchmark: mode source: 40.07 MiB/s (320.54 Mb/s)
21:03
<
marcan >
I: g.applet.internal.benchmark: mode sink: 39.63 MiB/s (317.06 Mb/s)
21:03
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode sink for 64.000 MiB
21:03
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode loopback for 64.000 MiB
21:03
<
marcan >
I: g.applet.internal.benchmark: mode loopback: 40.61 MiB/s (324.89 Mb/s)
21:04
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode source for 64.000 MiB
21:04
<
marcan >
I: g.applet.internal.benchmark: mode source: 43.03 MiB/s (344.21 Mb/s)
21:04
<
marcan >
I: g.applet.internal.benchmark: mode sink: 45.49 MiB/s (363.96 Mb/s)
21:04
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode sink for 64.000 MiB
21:04
<
marcan >
I: g.applet.internal.benchmark: running benchmark mode loopback for 64.000 MiB
21:04
<
marcan >
I: g.applet.internal.benchmark: mode loopback: 44.37 MiB/s (354.94 Mb/s)
21:04
<
marcan >
now we're talking
21:04
<
marcan >
congratulations, you beat FTDI
21:04
<
gruetzkopf >
whoa, neat
21:04
<
marcan >
45MiB/s in sink mode is very nice
21:05
<
marcan >
okay, I can sleep now :p
21:07
<
marcan >
btw, max physical is 45.77 MiB/s (that's 48MHz)
21:07
<
gruetzkopf >
if jtag-pinout doesn't need revC i can connect the AlpineRidge Card like this time tomorrow
21:07
<
marcan >
so
*basically* sink mode is fully utilizing the FIFO interface
21:07
<
marcan >
that makes sense, since that will never NAK
21:07
<
marcan >
source mode is probably still losing some throughput to NAKs
21:07
<
marcan >
(but not as much)
21:07
<
Hellsenberg >
these FX2 chippos are rather interesting
21:08
<
marcan >
er, sorry, sink mode will NAK, but as long as the buffers are full it'll saturate
21:10
<
tnt >
err, on revB that patch with setConfig(2) reduces throughput
21:10
<
tnt >
mmm ... that might have been a fluke
21:11
<
whitequark >
sounds very unlikely that it would
21:12
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark a727634 - access.direct: select configuration with optimal pipe count.
21:12
<
tnt >
yeah, it doesnt ... sorry must have been my cpu doing something at that particular benchmark.
21:22
futarisIRCcloud has joined #glasgow
21:25
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark pushed 1 commit to wip-audio.yamaha_opl-ymf262 [+0/-0/±2]
https://git.io/fjtmp
21:25
<
_whitenotifier-1 >
[GlasgowEmbedded/Glasgow] whitequark 9ee6fc5 - WIP: applet.audio.yamaha_opl: YMF262 support.