Monday, 2021-10-25

*** tpb <[email protected]> has joined #litex00:00
*** cr1901 <cr1901!~William@2601:8d:8600:911:a870:7807:f9b0:ad06> has quit IRC (Read error: Connection reset by peer)02:02
*** Degi_ <[email protected]> has joined #litex02:25
*** Degi <[email protected]> has quit IRC (Ping timeout: 260 seconds)02:27
*** Degi_ is now known as Degi02:27
*** cr1901 <cr1901!~William@2601:8d:8600:911:681d:764d:8b4d:e996> has joined #litex03:51
*** indy <[email protected]> has quit IRC (Read error: Connection reset by peer)04:14
*** indy <[email protected]> has joined #litex04:17
*** CarlosEDP <CarlosEDP!~carlosedp@2001:470:69fc:105::218e> has quit IRC (*.net *.split)05:00
*** CarlFK <CarlFK!~carlfk@2001:470:69fc:105::5d8> has quit IRC (*.net *.split)05:00
*** novenary <[email protected]> has quit IRC (*.net *.split)05:00
*** zyp <[email protected]> has quit IRC (*.net *.split)05:00
*** zyp <[email protected]> has joined #litex05:00
*** novenary <[email protected]> has joined #litex05:01
*** CarlosEDP <CarlosEDP!~carlosedp@2001:470:69fc:105::218e> has joined #litex05:03
*** CarlFK <CarlFK!~carlfk@2001:470:69fc:105::5d8> has joined #litex05:09
*** TMM_ <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)05:21
*** TMM_ <[email protected]> has joined #litex05:21
*** _franck_ <[email protected]> has quit IRC (Ping timeout: 265 seconds)07:21
*** _franck_ <[email protected]> has joined #litex07:21
leons_florent_: I've looked into the Packetizer/Depacketizer situation a bit and realize that my fixes cause some unexpected behavior for when no data qualifier is being used.08:41
leonsAt the same time, with your revert-commit applied on top -- even when no last_be data qualifier is present -- my tests break because one edge case causes the Packetizer to break pretty badly: when the first bus word is also the last, it'll reach a state where it won't ever get out of and just produce the same packet in a loop08:43
*** Coldberg <[email protected]> has quit IRC (Ping timeout: 244 seconds)08:54
leonsBut honestly speaking, I can't even wrap my head around what a useful implementation for a Packetizer or Depacketizer without a data qualifier should look like.09:05
leonsLet's assume a 5 byte header and 6 bytes data. That'll generate a 32-bit data stream of HHHH HDDD DDDX09:06
leonsWhen we have 8 bytes of data it'll look like HHHH HDDD DDDD DXXX09:06
leonsA depacketizer to avoid dropping bytes would recover the first data as DDDD DDXX, all fine09:06
leonsThe second data would also fit into two bus words, but because the depacketizer doesn't know that it would recover DDDD DDDD XXXX09:06
leonsSo the last word does not contain any useful data.09:06
*** AndrewD_ <[email protected]> has joined #litex09:09
AndrewD_Was is the recommended way to read the clock domain for a sync?09:10
AndrewD_I want to detect if a clockdomainsrenamer has been applied09:11
leons_florent_: What I can propose to do is to integrate your "revert" commit for the last/ready logic into the proper last_be handling code. Then it'll continue to work with the test_packet.py and I'm happy too given that it'll work correctly with last_be. But it won't work with the non-last_be cases in test_packet2.py because they test cases which cause the infinite loop problem which currently also exists upstream09:15
leonsSo it's really not an issue with the tests but indeed broken ๐Ÿ™‚ I'd just comment out the respective tests09:16
*** AndrewD_ <[email protected]> has quit IRC (Quit: Client closed)09:37
_florent_leons: Sorry I just saw your messages here09:49
leons_florent_: I just saw your commit moving it to liteeth ๐Ÿ˜€09:50
_florent_I in fact created a local copy of Packetizer/Depacketizer in LiteEth directly (that now also use them) to ease the development09:50
leonsYeah, it broke my hacky fix PR but that's okay ๐Ÿ™‚09:50
_florent_This way your tests are still passing (and mine is also passing in LiteX for the other cores). 09:51
leonsThanks, I think that makes things easier. My point is still valid for the bugs in the LiteX packetizer though :). It has some bugs which my test infrastructure did uncover (even without the last_be signal) so it might be worth looking into those in the future.09:52
_florent_Yes sure, I want to work on that in the next days and try to switch LitePCIe to Packetizer/Depacketizer09:55
leonsThank you! Looking forward to seeing the changes required to the Packetizer/Depacketizer.09:57
_florent_leons: I think we can agree that the current last_be data qualifier both give us headaches and that there is clearly something to do :)09:59
leonsAbsolutely. This is easily one of the most complex things I have worked on for some time now. But it's great to recover from the PTSD for now and have a "works for me" version in LiteEth ๐Ÿ™‚10:00
_florent_leons: While I'm looking at this, if you have time, would you make sure we have good tests or designs exercising last_be in LiteEth that we could use to switch to the simpler data qualifier?10:01
leonsHappy to collaborate on trying to come up with something that's less painful10:01
leonsWell, I think the rewritten test_stream.py and test_packet.py excercise all known edge-cases of last_be (that's why they take so long), and the infrastructure is pretty flexible in switching it out for a different one, so I think we're covered there10:03
_florent_leons: I'll also prepare some hardware to be able to test it. I'm not sure to remember your test setup, can you describe it to me again?10:03
leonsOh, and if it helps, this is a screenshot the failure case I've seen with upstream Packetizer/Depacketizer:10:03
* leons uploaded an image: (114KiB) < https://libera.ems.host/_matrix/media/r0/download/is.currently.online/lSSjOYABryCRerFjpTnkYOFU/image.png >10:03
_florent_Thanks10:05
acathlaDoc about CSRStorage says: "Size of the CSR register in bits. Can be bigger than the CSR bus width." But it does not say what's the size limit. It seems to use uint64_t in csr.h when CSR is less than 64bits and stop generating the code if >6412:12
acathlaI would like to make a module that controls 5 neopixels only, just send a color value, no complex effects. I already have the logic for one or two pixels using CSRStorage. I would like to use some BRAM or something else a little more optimized than many CSR.13:26
acathlaI started with that code : https://www.hacknology.de/projekt/2020/neopixelar/ but it seems strange to store address and values in CSR to access a memory...13:27
tpbTitle: Neopixelar oder 'Wie geht FPGA?' ยท hacKNology (at www.hacknology.de)13:27
*** Coldberg <[email protected]> has joined #litex13:34
*** AndrewD <[email protected]> has quit IRC (Quit: Client closed)13:56
*** TMM_ <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)18:34
*** TMM_ <[email protected]> has joined #litex18:34
zypacathla, how many colors do you need?19:05
zypI've also got a chain of 5 for indicators, and I've just set them up with 1-bit colors19:06
*** _franck_0 <[email protected]> has joined #litex20:20
*** _franck_ <[email protected]> has quit IRC (Ping timeout: 244 seconds)20:22
*** _franck_0 is now known as _franck_20:22
*** cr1901 <cr1901!~William@2601:8d:8600:911:681d:764d:8b4d:e996> has quit IRC (Read error: Connection reset by peer)23:36
*** cr1901 <cr1901!~William@2601:8d:8600:911:c14c:ce51:723f:8f50> has joined #litex23:44

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!