Thursday, 2019-10-10

*** tpb has joined #litex00:00
scanakci_florent_: I guess I am done with the necessary changes to fix the issue that  we discussed. I will probably let you know tomorrow. Do you mind having a separate branch for blackparrot? I think it is the easiest way for final integration, too. I can also create a separate repo.02:47
*** y2kbugger has joined #litex03:07
scanakcils03:27
*** forksand has quit IRC04:23
*** forksand has joined #litex04:39
*** forksand has quit IRC05:04
*** CarlFK has quit IRC05:11
*** forksand has joined #litex05:19
_florent_scanakci: good for the simulation changes, a separate branch or repo would be fine yes09:09
*** _whitelogger has quit IRC10:27
*** _whitelogger has joined #litex10:30
*** CarlFK has joined #litex12:50
*** y2kbugger has quit IRC13:57
*** y2kbugger has joined #litex13:58
*** y2kbugger has quit IRC14:55
*** y2kbugger has joined #litex14:59
*** y2kbugger has quit IRC15:04
*** y2kbugger has joined #litex15:06
*** CarlFK has quit IRC15:08
*** forksand has quit IRC15:23
*** forksand has joined #litex15:39
*** CarlFK has joined #litex16:45
*** acathla has quit IRC16:47
*** y2kbugger has quit IRC16:57
*** y2kbugger has joined #litex17:09
*** acathla has joined #litex17:29
*** cansu has joined #litex17:29
cansuHello @somlo, I have another question. I was checking wishbone-axi interface in rocket core and as far as I understood, in core.py file, two interfaces for axi(64 bit), two interfaces for wishbone(64bit) are defined and then converted to each other by using AXI2WB and then downconverted to 32 bit ibus and dbus wishbone interfaces. What I could not understand is where the data is coming to mem_axi and mmio_axi. I could not17:30
cansusee how it is connected to L1 and MMIO in rocket and  how you get information for ibus and dbus. If you can explain briefly or  send me the file where this connection is made, I would really appreciate. Thanks in advance.17:30
somlocansu: most other (32bit) CPU models in LiteX don't have L1 cache, and have separate wishbone ports for instruction vs. data accesses17:31
somlohence "ibus" and "dbus"17:32
somlothey're both masters on the wishbone bus, and whichever the CPU happens to use, it will write or read data over the bus17:32
somlodata which then gets routed to a CSR (mmio register), sram, bootrom, or main_ram, depending on the address17:33
somlook, now on to Rocket -- which has an "on-board" L1 cache, and internal routing of read/write accesses17:33
somloyou build Rocket with hard-coded MMIO and RAM address ranges, when generating the verilog (in the rocket/verilog litex submodule)17:34
somlothese ranges should match what LiteX has specified in rocket/core.py (or else things can't work)17:35
somloIf a read/write access to an MMIO address (as per rocket's internal routing map) occurs, it will come out over the mmio_axi port17:35
somloif it's to/from a RAM range, the mem_axi port will be used instead17:35
somlodoesn't matter, both end up being converted to 32-bit wishbone, and wired into ibus and dbus (again, doesn't matter, they're both masters on the wb bus)17:36
somloso ibus and dbus are "misnomers" as far as rocket is concerned, it's just that litex is coded to expect those two and add them to the masters list on the wishbone interconnect17:36
somloso I think mem_axi is converted to 64bit wb, then to 32bit wb, then connected to the bus as the "ibus" master port17:37
somlommio_axi is undergoing a similar conversion to 32bit wb, and ends up as the "dbus" wb master17:38
somlonow, with the latest litex commit from yesterday (b627a8fe), the *only* thing being accessed over mem_axi is actual RAM starting at 0x8000_0000, everything else goes over mmio_axi17:39
somlowhich means my next step is to decouple Rocket's mem_axi port and LiteDRAM's data port from the wishbone bus, and just hook them up to each other, point-to-point, at native 64bit axi17:41
somlowhich should hopefully improve memory bandwidth significantly.17:41
somlocansu: how many axi ports does your CPU have?17:42
*** ambro718 has joined #litex17:46
somlocansu: hope that all makes sense, if not let me know and I can elaborate on whichever bits were too vague :)17:46
somlocansu: here's a picture :) https://pastebin.com/8bWCnWR517:50
*** freemint has joined #litex17:56
*** freemint has quit IRC18:15
*** freemint has joined #litex18:23
*** CarlFK has quit IRC18:30
*** freemint has quit IRC18:35
cansu@somlo  Our CPU does not have any AXI ports yet and we are considering to make a connection from MEM-CCE interface to Wishbone,  just for LiteX integration. I am just trying to figure out how things are working in Rocket.  I will check your explanation and get back to you very soon. Thank you very much for your time and for the detailed explanation!19:22
*** freemint has joined #litex19:24
somlocansu: if all (instruction and data) accesses are done over a single wishbone port, you won't have to worry about axi, conversion, or routing19:29
somloyou may have to down-convert wishbone to 32-bit (if yours will be 64 natively)19:31
somlothen you need to connect either ibus or dbus to the 32-bit master side of your cpu-facing wishbone port19:31
somlonot sure what happens if one of them (ibus or dbus) is 'None' right now, but I'm thinking of adding a check for that as a patch19:32
somlobecause I will also only have one to connect to the wishbone bus...19:32
somloonce I bypass wb for the cpu-to-litedram datapath, that is19:33
*** freemint has quit IRC19:45
_florent_somlo: this should simplify things:19:45
_florent_https://github.com/enjoy-digital/litex/commit/1045cda39e63b3bfcf1d24d26dbc15837e25d9e319:45
tpbTitle: cpu: add buses list and use it in soc_core to add bus masters · enjoy-digital/litex@1045cda · GitHub (at github.com)19:45
_florent_https://github.com/enjoy-digital/litex/commit/467d35edee9fd95ab7527a822f1300ebae75211c19:46
tpbTitle: cpu/rocket: rename ibus/dbus to mem_wb/mmio_wb and add size suffix · enjoy-digital/litex@467d35e · GitHub (at github.com)19:46
somlo_florent_: thanks, that makes it simple and straightforward; also for cansu if the new cpu only comes with a single, universal wishbone port!19:54
*** freemint has joined #litex19:54
_florent_yes and in the future we would even allow buses to be wb or axi and non-32-bit and do the adaptation directly in the SoC19:56
*** freemint has quit IRC20:00
*** CarlFK has joined #litex20:29
*** freemint has joined #litex21:27
*** cansu has quit IRC21:30
scanakci__florent_: The branch is ready to be pushed. I guess you need to add me as a contributor before I push the branch.21:35
scanakciI added an environment variable (FILE_LIST_PATH) to the "litex/build/sim/core/Makefile" file to specify the filelist. Verilator accepts this file with -f.  I think it may be good to add another function which specify the path of filelist instead of specifying folder path (i.e. add_source_dir).21:56
*** y2kbugger has quit IRC22:01
*** y2kbugger has joined #litex22:06
*** ambro718 has quit IRC23:00
*** y2kbugger has quit IRC23:33
*** y2kbugger has joined #litex23:34
*** y2kbugger has quit IRC23:40
*** y2kbugger has joined #litex23:43

Generated by irclog2html.py 2.13.1 by Marius Gedminas - find it at mg.pov.lt!