01:58
GenTooMan has joined ##openfpga
01:58
m_t has quit [Quit: Leaving]
02:23
uovo has quit [Read error: Connection reset by peer]
02:30
<
awygle >
this is simultaneously really interesting and deeply weird
02:48
unixb0y has quit [Ping timeout: 240 seconds]
02:51
unixb0y has joined ##openfpga
03:35
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
03:37
rohitksingh_work has joined ##openfpga
03:37
GenTooMan has quit [Quit: Leaving]
04:03
keith-man has quit [Ping timeout: 245 seconds]
04:51
pie__ has quit [Ping timeout: 252 seconds]
05:08
<
azonenberg >
digshadow, mithro, kc8apf__: Have any of you looked at the config process for SLR-based devices?
05:08
<
azonenberg >
it doesn't appear to be documented anywhere
05:17
Bike has quit [Quit: Lost terminal]
05:17
Dolu has joined ##openfpga
05:22
<
mithro >
azonenberg: SLR?
05:31
<
sorear >
super logic regions?
05:32
<
azonenberg >
They have a 6*N bit JTAG IR for N SLRs
05:32
Dolu has quit [Ping timeout: 256 seconds]
05:33
<
azonenberg >
there's a "nop" instruction you can load into a SLR to execute a command only there, or you can broadcast it to the whole chip
05:33
<
azonenberg >
When configuring, they have a separate CFG_IN for each SLR in a strange order i dont fully understand
05:33
<
azonenberg >
in particular the usual sync word isnt where i expect it
05:42
pie__ has joined ##openfpga
05:57
pie__ has quit [Ping timeout: 252 seconds]
06:27
digshadow has quit [Quit: Leaving.]
06:31
Dolu has joined ##openfpga
06:31
pie__ has joined ##openfpga
06:45
pie__ has quit [Ping timeout: 240 seconds]
06:58
Dolu2 has joined ##openfpga
06:59
Dolu has quit [Ping timeout: 252 seconds]
07:17
digshadow has joined ##openfpga
07:22
soylentyellow has quit [Ping timeout: 240 seconds]
07:35
soylentyellow has joined ##openfpga
07:41
Dolu2 has quit [Ping timeout: 252 seconds]
08:07
FabM has joined ##openfpga
08:50
pie__ has joined ##openfpga
08:59
pie__ has quit [Ping timeout: 256 seconds]
09:13
<
azonenberg >
Continuing to tinker with SLR-based FPGA JTAG config
09:13
<
azonenberg >
this is...interesting to say the least
09:14
<
azonenberg >
i guess the SLR dies must have some kind of strap pin to specify what address range they have
09:14
<
azonenberg >
I expected one of two things
09:14
<
azonenberg >
1) you split the bitstream up by frame address and write frames to the SLR they live in
09:15
<
azonenberg >
2) you send the whole bitstream to the master SLR and it pushes it out from there
09:15
<
azonenberg >
Turns out, both are wrong
09:15
<
azonenberg >
what you ACTUALLY do is, send the entire bitstream to one SLR at a time
09:15
<
azonenberg >
it acts on the config state machine for initial setup, then ignores everything written to FDRI that isn't for that die
09:16
<
azonenberg >
Then processes the CRC etc just like a monolithic die
09:17
<
azonenberg >
Then at the end, you send START; DESYNC to two of the SLRs (interestingly enough only the left and middle get this, not the right) individually
09:17
<
azonenberg >
then push what i think is a bunch of dummy frames but i havent parsed the stuff after the desync to confirm
09:17
<
azonenberg >
then send a bunch of dummy clocks, JSTART, and you're good to go
09:18
<
azonenberg >
i have yet to code this up myself and test it on real hardware but i think i understand how it works (mostly)
09:18
<
azonenberg >
I cant guarantee everything i've figured out generalizes to other devices yet, so far i'm only looking at the XCVU9P
09:18
<
azonenberg >
i don't have licenses for any other non-monolithic parts
09:19
<
sorear >
so configuring a 3-SLR part takes 9 times as long as configuring a 1-SLR part?
09:19
<
azonenberg >
Over JTAG, i think so
09:19
<
azonenberg >
This seems stupidly inefficient but i'm parsing the SVF
09:19
<
azonenberg >
the key bit is the type-2 write transactoins
09:19
<
sorear >
(SLRs per XCVU9P?)
09:19
<
azonenberg >
lookign at the .bit file itself, the same sequence of register writes is there
09:20
<
azonenberg >
but it's repeated for each SLR
09:20
<
azonenberg >
the {inst, inst, inst} notation indicates the JTAG IR for each of the three SLRs
09:20
<
azonenberg >
I conjecture, but am afraid to test, that you could do this faster
09:20
<
azonenberg >
by doing {CFG_IN, CFG_IN, CFG_IN} and broadcasting the bitstream to each chip
09:20
<
azonenberg >
each die*
09:20
<
azonenberg >
Rather than {CFG_IN, BYPASS, BYPASS} etc
09:21
<
azonenberg >
And well, it's not 9x as long
09:21
<
azonenberg >
it's 3x as much data, but then sent 3x redundantly
09:21
<
azonenberg >
9x total time but 3x is overhead and 3x is actually there being more data to send
09:29
rohitksingh_work has quit [Read error: Connection reset by peer]
09:32
<
azonenberg >
So basically the overall flow to configure a vu9p is:
09:33
<
azonenberg >
* broadcast JPROGRAM to all three SLRs
09:33
<
azonenberg >
Wait 100 ms, send 10K dummy clocks
09:33
rohitksingh_work has joined ##openfpga
09:33
<
azonenberg >
Load CFG_IN to leftmost SLR, spam the bitstream to it
09:33
<
azonenberg >
Repeat for middle SLR
09:33
<
azonenberg >
Repeat for right SLR
09:34
<
azonenberg >
Load CFG_IN to middle SLR (master if memory serves me right), send CMD START;DESYNC
09:34
<
azonenberg >
Load CFG_IN to left SLR, send START;DESYNC
09:34
<
azonenberg >
Go to idle, send 100K dummy clocks
09:34
<
azonenberg >
Broadcast JSTART to all three SLRs
09:34
<
azonenberg >
send 2K dummy clocks, verify chip booted correctly
09:59
<
eduardo_ >
azonenberg: you might want to point @maxslug at twitter at your problem
10:05
futarisIRCcloud has joined ##openfpga
10:46
m_t has joined ##openfpga
10:55
pie__ has joined ##openfpga
11:07
pie__ has quit [Ping timeout: 260 seconds]
11:26
eduardo_ has quit [Remote host closed the connection]
12:19
rohitksingh_work has quit [Read error: Connection reset by peer]
13:01
ZipCPU|Laptop has joined ##openfpga
13:04
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
13:52
m_t has quit [Quit: Leaving]
14:43
rohitksingh has joined ##openfpga
15:02
rohitksingh has quit [Quit: Leaving.]
15:19
keith-man has joined ##openfpga
15:33
rohitksingh has joined ##openfpga
15:36
azonenberg_work has quit [Ping timeout: 240 seconds]
15:47
rohitksingh has quit [Quit: Leaving.]
15:51
ZipCPU|Laptop has quit [Ping timeout: 256 seconds]
16:11
genii has joined ##openfpga
16:21
<
mithro >
tinyfpga: can you send me an email at me@mith.ro and I will get an Arty in the mail for you.
16:22
<
mithro >
tinyfpga: I'll also include some of Rohit's adapter boards for dual-pmod to umti if I can figure out what I've done with them
16:23
<
mithro >
daveshah: morning?
16:24
<
daveshah >
mithro: Hi
16:24
<
mithro >
daveshah: So, I need to reintergrate your Verilog->XML changes now the Makefile stuff is almost finished
16:25
<
mithro >
daveshah: Getting close to being able to type "make" in the top level directory and have it do things :-P
16:26
<
daveshah >
mithro: I will look through it now. I started reintegration the XML generation stuff
16:26
<
mithro >
daveshah: oh cool
16:27
<
daveshah >
mithro: I need to add a make rule, I think to your deps makefile, to call the XML gen stuff
16:30
<
mithro >
daveshah: Yes, that is correct
16:31
<
daveshah >
mithro: would it be OK to run the make rule whenever *.sim.v exists but *.pb_type.xml doesn't or is out of date (excluding Ntemplate)
16:32
<
mithro >
daveshah: I think it should depend on the "$(call ALL,<verilogfile>)" target?
16:34
<
daveshah >
mithro: yes, that sounds good. BTW you can use yosys -E to make a dependency file IIRC
16:34
<
mithro >
daveshah: Oh cool - didn't know that
16:39
<
mithro >
daveshah: Not sure how that would work with the files being missing at the time?
16:40
<
daveshah >
mithro: Yes, you're right, it needs to open the files
16:41
azonenberg_work has joined ##openfpga
16:41
azonenberg_work has quit [Client Quit]
16:41
azonenberg_work has joined ##openfpga
16:44
keith-man has quit [Ping timeout: 240 seconds]
17:00
<
daveshah >
mithro: I left a couple of comments on the PR.
17:00
oeuf has joined ##openfpga
17:01
<
daveshah >
mithro: Interesting, that's how timing data on the iCE40 is output by iCEcube - and hence how Clifford documented the iCE40 timing for icetime
17:04
<
mithro >
daveshah: It seems a pretty standard format?
17:04
<
daveshah >
mithro: Yes, it must be
17:06
<
daveshah >
mithro: Are you thinking about using a SDF file for the VPR XML generation, instead of Verilog timings? It looks easy enough to parse (we can even reuse the parser code from icestorm)
17:07
<
mithro >
daveshah: kind
17:12
<
daveshah >
Yes - I've been meaning to look at OpenTimer too. I think theoretically icetime can work with it, but I don't know if anyone ever tried
17:13
azonenberg_work has quit [Ping timeout: 248 seconds]
17:45
pie_ has joined ##openfpga
18:00
<
unixb0y >
mithro: How's it going with X-Ray?
18:01
<
mithro >
unixb0y: More slowly then I would like
18:01
<
unixb0y >
I'm going to try to dig a bit deeper into the project as soon as my exams are over!
18:01
<
unixb0y >
Oh why is that?
18:01
<
mithro >
unixb0y: I spent a lot of the weekend fighting with Make
18:01
<
unixb0y >
I saw the commit ;)
18:01
<
unixb0y >
Well, now you figured it out!
18:02
<
unixb0y >
C'ya later!
18:05
azonenberg_work has joined ##openfpga
18:15
m_w has quit [Quit: leaving]
18:17
mumptai has joined ##openfpga
18:29
<
daveshah >
mithro: I have started a PR to your branch with some initial reintegration of the XML generation stuff
18:29
<
mithro >
daveshah: Cool
18:29
<
mithro >
daveshah: I got distracted by fixing some docs in VPR
18:29
<
daveshah >
But I still need to get it working in conjunction with the verilog deps stuff.
18:29
m_w has joined ##openfpga
18:30
<
mithro >
daveshah: Let me look at it
18:30
<
daveshah >
Also, we do need to get your Travis pr for yosys merged I think before we can get builds working with CI again
18:47
<
azonenberg_work >
Per twitter thread with Yannick
18:47
<
azonenberg_work >
It looks like I was wrong
18:47
<
azonenberg_work >
I think i'm parsing the .bit file incorrectly and it's not O(n^2)
18:47
<
azonenberg_work >
i think the .bit has more data after the DESYNC command
18:50
<
azonenberg_work >
Need to investigate more when i get home
19:12
<
awygle >
rqou: webmidi
19:13
<
awygle >
err no, CDC-ECM+rndis
19:14
<
rqou >
arguably even worse and hackier :P
19:14
<
rqou >
CDC-ECM+rndis was my old idea
19:15
<
pie_ >
what do those even mean
19:17
<
awygle >
"remote network driver interface specification" iirc
19:18
<
rqou >
yeah, it's even hackier than that
19:19
<
rqou >
azonenberg thinks i shouldn't deploy it :P
19:19
<
awygle >
and "communications device class - ethernet control module"
19:19
<
awygle >
not to be confused with cipher block chaining which i always mix up with it
19:21
<
awygle >
my refactoring of this code took it from 70 MB/s to 3 MB/s... must be Monday
19:27
<
pie_ >
yeah i was like cipher dlock chaining
19:27
genii has quit [Remote host closed the connection]
19:27
<
pie_ >
rqou, does it involve dns queries
19:28
<
pie_ >
man i havent the faintest clue what you could have come up with but i keep wanting to guess xD
19:28
genii has joined ##openfpga
19:28
<
pie_ >
s/dns queries/dns abuse/
19:34
m_t has joined ##openfpga
19:35
<
rqou >
no, no dns involved
19:36
<
rqou >
the hack i have in mind doesn't involve the network stack
19:36
<
rqou >
it's a very very specific (and very wtf) usb device
20:03
<
awygle >
writing C#, python, and verilog in the same day has me writing "foreach byte b in array begin" which isn't valid in any of the three
20:05
digshadow has quit [Ping timeout: 252 seconds]
20:24
digshadow has joined ##openfpga
20:32
<
daveshah >
Braille output devices or something of that level of obscurity?
21:02
knielsen has quit [Ping timeout: 260 seconds]
21:05
ym has quit [Ping timeout: 256 seconds]
21:06
ym has joined ##openfpga
21:36
m_t has quit [Read error: Connection reset by peer]
21:37
m_t has joined ##openfpga
21:40
knielsen has joined ##openfpga
21:41
<
whitequark >
simpler
21:41
<
whitequark >
just an USB sound card
21:59
mumptai has quit [Quit: Verlassend]
22:09
<
rqou >
nope, sound cards have permission prompts still
22:10
<
rqou >
and afaict the APIs to select a specific output device are still missing
22:12
<
whitequark >
you can definitely play something without a permission prompt.
22:12
<
rqou >
yes, but afaict you also can't select a specific output device
22:13
<
whitequark >
so what? just blast it over all existing ones
22:13
<
rqou >
i thought you will be at the mercy of the system mixer settings
22:14
<
rqou >
not as good a plug-and-play experience as my current idea
22:19
<
whitequark >
rqou: then, printer.
22:19
<
whitequark >
except I wouldn't call that "plug and play" lol
22:19
<
rqou >
i did think about that too
22:19
<
rqou >
but you can't automatically initiate a print from JS
22:19
<
rqou >
the LUFA guy did make a usb printer bootloader though (you would print an intel hex file to update firmware)
22:20
<
whitequark >
the gamepad API doesn't support feedback
22:20
<
rqou >
no, the idea was that you would send data to the device by playing sounds
22:20
<
rqou >
and the device would send data back by pressing buttons
22:20
<
whitequark >
>at the mercy of system mixer settings
22:21
<
rqou >
the one i'm thinking of isn't as convoluted
22:21
<
rqou >
it's just a lot more obscure
22:23
<
whitequark >
is this like "theoretically supported in the standard" or more like "i actually know this is decently portable"?
22:23
<
rqou >
it's also a major major abuse of the intended use case
22:23
<
whitequark >
because if it's the former then you could only mean one thing
22:24
<
rqou >
already implemented in chrome and on track to be implemented in FF (currently pref-ed off)
22:24
<
rqou >
not webusb obviously
22:25
<
whitequark >
is it supported in firefox nightly?
22:26
<
rqou >
it's already in releases but behind a pref
22:26
<
rqou >
so probably enabled in nightly?
22:26
<
whitequark >
FIDO U2F?
22:26
<
rqou >
ding ding ding ding
22:26
<
rqou >
you're winner!
22:26
<
rqou >
wow, very good
22:26
<
whitequark >
I was thinking about smart cards first because that's in the list of USB device classes
22:27
<
whitequark >
but that must be a cross-platform nightmare
22:27
<
rqou >
yup, exact same thought process here
22:27
<
whitequark >
however... what's like a smart card but without the nightmare?
22:27
<
rqou >
_exact_ same thought process here
22:28
<
rqou >
afaict you can smuggle "output" data in the u2f keyhandle, and "input" data in the returned signature
22:28
<
rqou >
and there's no permission prompts or ratelimits on this api
22:28
<
rqou >
(as long as you don't request attestation, which you don't need anyways)
22:28
<
rqou >
and it runs over usb hid
22:28
<
rqou >
if you have more spare time than me, try testing this in reality?
22:33
m_t has quit [Quit: Leaving]
22:40
jn_ has joined ##openfpga
22:43
jn has quit [Ping timeout: 240 seconds]
23:20
soylentyellow has quit [Ping timeout: 248 seconds]
23:44
soylentyellow has joined ##openfpga
23:58
soylentyellow has quit [Ping timeout: 245 seconds]
23:58
genii has quit [Quit: GO LEAFS GO !!]