Friday, 2020-05-01

*** tpb has joined #litex00:00
*** rohitksingh has joined #litex01:17
scanakcihttps://www.irccloud.com/pastebin/1AIrGhDw/Recent_Vex_125MhZ01:53
tpbTitle: Snippet | IRCCloud (at www.irccloud.com)01:53
scanakci_florent_: In a clean vm, I gave a shot to Vexriscv for genesys board using standard flavor. I used the most recent commit.01:54
scanakciUnless something is wrong with my FPGA, I am observing failures01:54
scanakciI will try other frequencies than 125MhZ and see if the behaviour matches with BP01:55
*** captain_morgan has quit IRC02:14
*** captain_morgan has joined #litex02:15
scanakciI tried 100MhZ for Vex. It prints meaningless characters. I tried a variety of baudrates but no luck. Overall, the behaviour of Vex and BP matches.02:22
*** CarlFK has quit IRC02:57
*** awordnot has quit IRC03:18
*** awordnot has joined #litex03:18
*** randomloopsa has joined #litex03:39
*** Degi has quit IRC03:53
*** Degi has joined #litex03:56
*** randomloopsa has quit IRC03:56
*** HoloIRCUser has joined #litex04:50
*** HoloIRCUser2 has joined #litex04:51
*** HoloIRCUser1 has quit IRC04:53
*** HoloIRCUser has quit IRC04:54
_florent_scanakci: ok thanks, i'll do a test on a Genesys2 board05:51
scanakci_florent_: thanks. I tried Rocket using 125MhZ. Memory tests failed for it as well.06:24
*** HoloIRCUser has joined #litex07:12
*** HoloIRCUser2 has quit IRC07:12
*** mattytrentini has joined #litex07:14
mattytrentiniOK, I'm finally returning to an old goal - trying to improve MicroPython support on Fomu and, hopefully, for GregD's OrangeCrab. But I've only got a tentative understanding of how the systems hang together. (Maybe I'm in the wrong place; please tell me if there's somewhere else I should be asking these questions!)07:24
mattytrentiniLet's say I want to add a standard digital GPIO that I want to be able to access in MicroPython on Fomu. I get that Migen/Litex is responsible for building the gateware including - I think - the VexRiscv softcore for Fomu. How would I go about modifying the softcore to map a pin to the outside world? And then I think I need to provide a way (as a07:29
mattytrentiniregister on the wishbone bus?) to provide MicroPython with a hook to setting that pin. Finally I need to update MicroPython (currently xobs/MicroPython) to use that hook. Am I even in the ballpark of understanding things correctly?07:29
sajattack[m]sounds about right to me. I'm not sure how to add a gpio in a way linux can see but I'd be curious to know too07:33
sajattack[m]looks like for output you have "leds" https://github.com/litex-hub/linux-on-litex-vexriscv/blob/f96601db3ef6c77a46bd40cc371a4da3c53a295d/soc_linux.py#L10507:34
tpbTitle: linux-on-litex-vexriscv/soc_linux.py at f96601db3ef6c77a46bd40cc371a4da3c53a295d · litex-hub/linux-on-litex-vexriscv · GitHub (at github.com)07:34
sajattack[m]and for input, "switches"07:35
sajattack[m]kinda bodgey though07:35
sajattack[m]the wishbone part should be taken care of07:37
sajattack[m]my guess would be whatever gpio interface in linux raspberry pi uses would be similar to what's used in litex07:39
sajattack[m]since it's on the device tree07:39
*** CarlFK has joined #litex07:51
*** proteusguy has quit IRC08:14
*** proteusguy has joined #litex08:20
mattytrentiniOK, perhaps I can add both an LED and a Switch to have in/out pins...08:37
*** CarlFK has quit IRC08:51
*** captain_morgan has quit IRC09:12
*** captain_morgan has joined #litex09:13
*** mattytrentini has quit IRC09:57
*** mattytrentini has joined #litex09:58
*** mattytrentini has quit IRC10:19
*** mattytrentini has joined #litex10:32
*** nrossi has joined #litex11:20
mithromattytrentini: There was a library which could auto-generate MicroPython functions for the registers provided by the FPGA SoC13:58
disasm[m]Hi everyone! I'm looking at the latest litex and now it uses python modules for CPU core sources. Is there a way to declare all the needed python-module dependencies so that my soc generator "just works" as earlier?13:59
disasm[m](I have been using lxbuildenv.py for maintaining git-deps)14:00
mithromattytrentini: https://github.com/pazzarpj/micropython-ustubby/tree/34a39f9a9a6421ffb0de57cf37a7d75f71f50dcb#parsing-litex-files14:01
tpbTitle: GitHub - pazzarpj/micropython-ustubby at 34a39f9a9a6421ffb0de57cf37a7d75f71f50dcb (at github.com)14:01
mithrodisasm[m]: Yes14:01
mithrodisasm[m]: xobs posted an example of doing just that somehwere...14:03
mithrohttps://github.com/enjoy-digital/litex/pull/399#issuecomment-61137248914:05
tpbTitle: Converting LiteX to use Python modules. by mithro · Pull Request #399 · enjoy-digital/litex · GitHub (at github.com)14:05
mithrodisasm[m]: > My solution was not to do pip install, but rather cd deps; git submodule add https://github.com/litex-hub/pythondata-software-compiler_rt.git; cd ...14:06
*** m4ssi has joined #litex14:06
disasm[m]Thanks! Will try this14:08
mithrohttps://groups.google.com/d/msgid/linux-litex/90d6adca-fd2c-4e54-85bb-1cc115781cb2%40googlegroups.com - 4 core Linux compatible RISC-V using LiteX on the Digilent Arty A7 35T! -- Only 13k LUTs :-P14:10
tpbTitle: Google Groups (at groups.google.com)14:10
mithrodisasm[m]: If it would be helpful, you could send a pull request which updates the README.md template with instructions -> https://github.com/litex-hub/pythondata-auto/blob/master/templates/README.md.jinja14:11
tpbTitle: pythondata-auto/README.md.jinja at master · litex-hub/pythondata-auto · GitHub (at github.com)14:11
*** robert2 has joined #litex14:11
*** robert2 is now known as rw1nkler14:12
disasm[m]I kinda love that good old submodule-dependency approach as you can just `git clone --recursive` a project and build it, without any specific pre-installation instructions and custom python environment14:15
mithrodisasm[m]: You can actually go even better with git-subtrees14:30
*** Dolu has joined #litex14:31
DoluSorry, I miss reported the usage of the SMP quad cores VexRiscv, 13K was when i was testing the cluster itself. With all the required peripherals (DDR, UART, ...) from litex, it is actualy 14762 LUT.14:33
mithroDolu: So, 8 core? :-P14:43
mithroDolu: ~13k LUT for the CPU core complex and roughly ~2k LUT for all the support peripherals like DDR / UART / etc? ?14:49
*** ambro718 has joined #litex14:55
Dolumithro: 8 cores, maybe, but not on 35T. Let's do 5 cores on 35T ^^15:00
DoluYes, the cluster itself, is reported as 13433 LUT, while the top (litex) is reported as 1332 LUT15:01
DoluBut will have to see how much the DDR suffer from having so many cores to handle.15:03
mithroDolu: good thing that we are working on improving litedram's performance!15:04
Doluyes ^^15:06
*** Skip has joined #litex15:20
*** Dolu has quit IRC16:18
*** HoloIRCUser has quit IRC16:34
*** HoloIRCUser has joined #litex16:35
mithrojohn_k[m] / Skip: At 15k LUTs for 4 cores, the Pano Logic G2 could have up to like 20 cores! :-P16:53
_florent_mithro: also for the Pano Logic G2, now that LiteX is supporting SERV, we could use it to have two LiteDRAM standalone core each initialized with a SERV CPU and the VexRiscv SMP in the main SoC would just see the DRAM as a traditional memory already initialized.16:58
Skip_florent_: Speaking about the Pano Logic when you get a chance could you take a look at https://github.com/enjoy-digital/liteeth/issues/38 ?17:08
tpbTitle: Error building for Panologic platform ( Spartan 6 xc6slx150) · Issue #38 · enjoy-digital/liteeth · GitHub (at github.com)17:08
Skipmithro: Wow. I wonder how long it will take to route ... one way to find out !17:09
_florent_Skip: yes, sure can look at it17:21
scanakci@_florent_, @mithro: Did you test pythondata-cpu-blackparrot to check if modules are properly imported during simulation&synthesis? I am trying to adapt BP to this new form and clean BP repo.17:23
scanakcihttps://www.irccloud.com/pastebin/QBxLqrPW/17:24
tpbTitle: Snippet | IRCCloud (at www.irccloud.com)17:24
scanakciThe current form is causing errors. Neither manuel setup  nor pip worked for me.17:24
_florent_Skip: which Ethernet PHY are you using on the PanoLogic?17:25
Skip_florent_: It's a Marvell 88E1119R-NNW2 which is almost the same as 88E1111 (https://github.com/tomverbeure/panologic-g2#fpga-external-clocking-architecture)17:28
tpbTitle: GitHub - tomverbeure/panologic-g2: Pano Logic G2 Reverse Engineering Project (at github.com)17:28
_florent_scanakci: i'm not sure we tested it. On my side i was not able to clone the previous submodule correctly: https://github.com/enjoy-digital/litex/issues/391, so haven't been able to test the previous version of BP17:28
tpbTitle: Issues · enjoy-digital/litex · GitHub (at github.com)17:28
Skip_florent_: The odd thing about the Pano is that the 125 Mhz clock from the Phy is the ONLY external clock coming into the FPGA and the frequency changes to 25 Mhz when the Phy is reset which is why I made the Phy reset optional.17:29
SkipI wasn't sure what bad things would happen else where if the system clock suddenly changes when the Phy is reset.17:30
mithroscanakci: What is the error?17:31
scanakcihttps://www.irccloud.com/pastebin/F8XBghNy/17:31
tpbTitle: Snippet | IRCCloud (at www.irccloud.com)17:32
_florent_Skip: ok, it's possible the issue is specific to the MII/GMII dynamic mode (we have two clock input going to the BUGMUX since the clock is different in MII and GMII), using a MII or GMII only PHY would probably fix the issue.17:32
mithroscanakci: How are you installing litex? If you are using litex_setup you need to rerun it17:32
mithroscanakci: If you are using a virtualenv or other system, you can use the command it tells you17:33
scanakciBP is not part of litex_setup as far as I see17:33
scanakciI am using litex_setup17:33
_florent_Skip: BTW, that would be interesting to have the PanoLogic in Litex-Boards: https://github.com/litex-hub/litex-boards17:33
tpbTitle: GitHub - litex-hub/litex-boards: LiteX boards files (at github.com)17:33
_florent_Skip: Would you like to contribute it?17:34
scanakcimithro: I needed to clone it myself based on the README in pythondata-cpu-blackparrot.17:34
Skip_florent_: I'm all for that!  I didn't do the port, I just picked up what someone else did and added SPI and Ethernet support.17:34
mithro_florent_: https://github.com/timvideos/litex-buildenv/wiki/HowTo-Linux-on-Pano-Logic-G217:34
tpbTitle: HowTo Linux on Pano Logic G2 · timvideos/litex-buildenv Wiki · GitHub (at github.com)17:34
_florent_i also have this board but haven't tested it17:34
mithroSkip: That is where you have been updating things, right?17:35
SkipYes.  I haven't added anything about Ethernet yet.17:35
_florent_mithro: do you know who has done the original Board support for the PanoLogic (for the copyrights if we put it in LiteX-Boards)17:36
mithro_florent_: Antmicro and kgugala's team17:36
SkipI'll move to a GMII only PHY and if that fixed the build problem I'll send a PR for that.17:36
_florent_mithro: ok thanks17:37
mithro_florent_: I would just put the "LiteX Authors"17:37
SkipOnce the board is in both places how do PRs work?  Send in two?  One is the "master" ?17:38
mithro_florent_: We should probably go through LiteX and do what this mentions sometime -> https://github.com/SymbiFlow/ideas/issues/4717:38
tpbTitle: Updated the repositories to comply with the current copyright best practices · Issue #47 · SymbiFlow/ideas · GitHub (at github.com)17:38
SkipI've very new to litex...17:38
mithroSkip: We have been slowly trying to move litex-buildenv onto litex-boards but that work isn't finished yet17:40
mithroSkip: Currently there is a lot of duplication between the litex-buildenv/platforms @ timvideos and litex-boards @ litex-hub17:41
mithroSkip: The big thing that was missing was "spi module" information which is being fixed by https://github.com/litex-hub/litespi17:41
tpbTitle: GitHub - litex-hub/litespi: Small footprint and configurable SPI core (at github.com)17:41
Skipmithro: Thanks, that helps a lot.17:42
mithroSkip: litex-buildenv has been around a *long* time and it a bit behind the latest "best practices" around LiteX development17:43
SkipThat's a good thing.  "tried and true" !17:44
_florent_mithro: for the copyrights we  could discuss it, but i think the current copyrights in LiteX better reflects the contributions than a generic "LiteX Authors".17:44
mithroSkip: We are slowly trying to get rid of and reduce the mishmash of make/shell/python17:44
Skipwith Python wining the day I assume?17:45
*** HoloIRCUser1 has joined #litex17:52
*** HoloIRCUser has quit IRC17:54
scanakcihttps://www.irccloud.com/pastebin/Hvy1Gyp2/Vexriscv_recent_simulation17:59
tpbTitle: Snippet | IRCCloud (at www.irccloud.com)17:59
*** correlation_zone has joined #litex17:59
scanakciI just tried simulating Vexriscv using a fresh LiteX repo. It causes errors.17:59
scanakciRocket gave me the same error.18:02
scanakcimithro: adding blackparrot into litex_setup.py fixed the issue. Import works fine now.18:06
mithroscanakci: What commands did you run?18:31
mithrohttps://github.com/enjoy-digital/litex#quick-start-guide18:32
tpbTitle: GitHub - enjoy-digital/litex: Build your hardware, easily! (at github.com)18:32
scanakcihttps://www.irccloud.com/pastebin/V7pC1LX9/18:32
tpbTitle: Snippet | IRCCloud (at www.irccloud.com)18:32
*** Dolu has joined #litex18:42
Doluscanakci: I think i had the same, i had to install "sudo apt install libevent-dev libjson-c-dev"18:44
scanakcioh my bad. thanks @Dolu, I totally forget dependencies in the fresh vm.18:45
Doluflorent spoted it ^^18:46
scanakcivexriscv works fine (verilator).18:52
*** rw1nkler has quit IRC19:37
zypI'd like to instance a dual ported block ram with differently sized ports, are there any convenient ways to do that, or should I just instance the block ram primitive?19:49
zypas far as I can see, the Memory class in migen assumes a common width for all ports19:50
daveshahThis is a Yosys limitation atm, afaik19:51
daveshahIf you are using vendor synthesis tools, I guess the right logic around memory ports might create the Verilog needed to infer an asymmetric RAM, but it's unlikely19:51
zypif that's the case, I'll just go with the primitive19:53
zypat the moment I just need it to work on ecp5, can deal with portability later19:53
mithrozyp: are you using litex / migen?20:34
zypI assumed that was a given since this is #litex :)20:36
mithrozyp: You never know :-) -- It should be pretty easy to create an abstract "DualPortRAM" class which gets instantiated into block rams correctly20:37
mithrozyp: In fact someone might have already done exactly that?20:38
mithroIIRC nmigen has that?20:38
mithroI was wondering if the ASyncFifo has that already20:39
mithrozyp: https://github.com/m-labs/migen/blob/master/migen/fhdl/specials.py#L27820:39
tpbTitle: migen/specials.py at master · m-labs/migen · GitHub (at github.com)20:39
zypalready looked at that20:40
mithrowhitequark tends to know a lot about these types of things20:40
zyp21:50:19 < zyp> as far as I can see, the Memory class in migen assumes a common width for all ports20:40
zypand if as daveshah says yosys can't infer it correctly anyway, it wouldn't help me much20:41
mithrozyp: I was suggesting that you make the Memory class emit an ECP5 primitive directly rather than trying to make Yosys infer it20:42
mithromattytrentini: https://github.com/antmicro/litex-micropython-tutorial-pipeline20:42
tpbTitle: GitHub - antmicro/litex-micropython-tutorial-pipeline (at github.com)20:42
zypmithro, ah20:43
zypbut still, the width :)20:43
mithrozyp: https://github.com/m-labs/migen/blob/master/migen/build/xilinx/common.py20:44
tpbTitle: migen/common.py at master · m-labs/migen · GitHub (at github.com)20:44
mithrohttps://github.com/m-labs/migen/blob/5b5e4fdee19c4059b61371c6b70ae927980c24ad/migen/build/xilinx/common.py#L97-L10220:44
tpbTitle: migen/common.py at 5b5e4fdee19c4059b61371c6b70ae927980c24ad · m-labs/migen · GitHub (at github.com)20:44
mithrozyp: That should show you how to provide an override for a specific platform20:46
zypfair enough20:46
mithrozyp: Assuming you want to go the "generic dual port block ram" approach20:47
zypbut I really don't want to spend a ton of time on this right now, I just want a memory so that I can work on the interesting stuff that hooks up to the memory20:47
mithrozyp: Then just use this -> https://github.com/timvideos/litex-buildenv/wiki/LiteX-for-Hardware-Engineers#instances20:49
tpbTitle: LiteX for Hardware Engineers · timvideos/litex-buildenv Wiki · GitHub (at github.com)20:49
zyplong term I might replace the whole thing with an arbiter on a single port memory20:49
zypyeah, I'm already in the middle of hooking it up20:49
*** CarlFK has joined #litex20:52
zyphttps://paste.jvnv.net/view/gQZvi <- ending up with something like this21:11
tpbTitle: JVnV Pastebin View paste – Untitled (at paste.jvnv.net)21:11
daveshahThis isn't correct, CSA/B are chip selects for large memories not byte enables21:17
daveshahThe lowest two address bits are the byte enables21:17
daveshahSee https://github.com/YosysHQ/yosys/blob/master/techlibs/ecp5/brams_connect.py#L5421:18
tpbTitle: yosys/brams_connect.py at master · YosysHQ/yosys · GitHub (at github.com)21:18
daveshahAlso note if you want wider than 18 bits you need to use PDPW16KD which is only pseudo dual port21:19
zypoh, right, I read too fast on the cascading ports, thanks for spotting that21:20
daveshahI'm not sure if it is required, but tying the CE and OCE ports to 1 and RST to 0 is a good idea too21:22
*** correlation_zone has quit IRC21:36
*** CarlFK has quit IRC21:38
*** CarlFK has joined #litex21:40
zypdaveshah, so if I'm understanding this correctly, the active address lines are always the upper ones, and then the lower two or four bits are the byte lane enables for 18b and 36b wide ports, right?21:44
zypin the file you linked, why does only line 54 have the EN signal, not line 55? (and correspondingly for line 61/62)21:45
*** Skip has quit IRC21:46
*** shuffle2 has quit IRC22:07
*** zyp has quit IRC22:07
*** daniellimws has quit IRC22:07
*** HoloIRCUser1 has quit IRC22:07
*** tcal has quit IRC22:07
*** _whitelogger has quit IRC22:07
*** FFY00 has quit IRC22:07
*** HoloIRCUser has joined #litex22:07
*** tcal has joined #litex22:08
*** shuffle2 has joined #litex22:08
*** daniellimws has joined #litex22:08
*** _whitelogger has joined #litex22:10
*** FFY00 has joined #litex22:11
*** zyp has joined #litex22:12
*** m4ssi has quit IRC22:44
*** tcal has quit IRC22:59
*** Dolu has quit IRC23:12

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