_florent_ changed the topic of #litex to: LiteX FPGA SoC builder and Cores / Github : https://github.com/enjoy-digital, https://github.com/litex-hub / Logs: https://freenode.irclog.whitequark.org/litex
tpb has quit [Remote host closed the connection]
tpb has joined #litex
Skip has quit [Remote host closed the connection]
CarlFK has quit [Ping timeout: 256 seconds]
CarlFK has joined #litex
HoloIRCUser1 has joined #litex
HoloIRCUser has quit [Ping timeout: 272 seconds]
CarlFK has quit [Ping timeout: 260 seconds]
Degi has quit [Ping timeout: 260 seconds]
Degi has joined #litex
<_florent_> sajattack[m]: the XC7K325T boards could be interesting, but the nice thing with the Acorn is that it's a NiteFury: https://www.crowdsupply.com/rhs-research/nitefury, so already fully documented :)
<zyp> oh, I didn't realize, that's nice
<zyp> I also ordered one of those things yesterday
<benh> _florent_: I orderd one :-) Do you know of some place that sells adapters M2 <-> female PCIe connector to use it as PCIe master ?
<benh> or M2 <- > M2
<benh> _florent_: also what do you typically use to program it ?
<_florent_> benh: the issue when for using it as master will be the clocking, the adapter will need to generate the clock
<_florent_> benh: you could use traditional M2 to PCIe adapter and then connect the two PCIe boards using 2 USB3 to PCIe riser and a USB3 cable (that will swap the pairs)
<benh> sounds ... messy :-) but ok
<_florent_> benh: but that's only for the PCIe lanes, you'll have to add the 100MHz clock.
<benh> can't the Artix generate it ?
<benh> that would be violating the slot standard but ...
<benh> in the meantime, I'll probably need to sort out the jtag cable... what do you use for it ? custom made ?
<benh> and do you get the UART out somewhere ?
<zyp> it shouldn't be that hard to do a board with either two M.2 sockets or an M.2 and a pcie socket, cross routed plus a clock generator
<benh> if you are a hw guy who has done boards in the past :)
<benh> but I can probably find such quirky individuals around here :)
<benh> paulus might be able to
<benh> zyp: additionally such a board could provide power... it would be handy for a number of other things imho
<benh> I was just wondering if such a thing already existed somewhere
<tpb> Title: 0369200601 Molex | Cable Assemblies | DigiKey (at www.digikey.com)
<tpb> Title: SQRL Acorn as an interesting Artix-7 board? - Page 2 (at www.eevblog.com)
<_florent_> and the same for the UART (in my case the UART was done over PCIe)
<benh> yup, thx
<benh> what USB jtag adapter do you guys favor these days ?
<daveshah> Any generic FT2232H is good enough for 99% of stuff imo
<benh> yup
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<benh> _florent_: I assume you haven't had a chance to look at litedram_gen when using cpu "None" ?
<benh> _florent_: If you can't, I'll try to spend some time this weekend understand how the SoC stuff got refactored and see if I can fix it
<_florent_> benh: not yet no sorry
<benh> _florent_: btw, Paulus got Linux booting on microwatt :-)
<benh> still hacks, esp since the toolchain basically assumes that powerpc64le has float & vectors
<_florent_> benh: great, using LiteDRAM?
<benh> but he got it to busybox
<benh> yup
<benh> I've cleaned up my litedram adapter
<benh> I now ship pre-generated cores and a script to re-generate so ppl dont' need to install Litex and don't have to deal with breakage when things change
<benh> I'll send Anton a pull request soon
<benh> doing a bit more testing
<benh> _florent_: I also haven't had much time to dig again into pipelining the wishbone <-> native litedram interface
<benh> that will be a good boost when I can do it
<_florent_> benh: i could try to help that; that would be easier if we get things working with ghdl-synth before to be able to simulate with litex_sim
captain_morgan has quit [Quit: Ping timeout (120 seconds)]
captain_morgan has joined #litex
<benh> yes, it would, I need to learn about it a bit
<benh> Anton knows more but he is a bit scarce at the moment :)
<benh> _florent_: btw, stupid vivado issue but you might know what it's about ... if I build with litedram disabled, I basically have the dram wires still in the xdc and the toplevel but I don't plumb them to anything
<benh> _florent_: that leads to the following error in vivado
<benh> ERROR: [DRC IOSTDTYPE-1] IOStandard Type: I/O port ddram_clk_n is Single-Ended but has an IOStandard of DIFF_SSTL135 which can only support Differential
<benh> ERROR: [DRC IOSTDTYPE-1] IOStandard Type: I/O port ddram_clk_p is Single-Ended but has an IOStandard of DIFF_SSTL135 which can only support Differential
<benh> interestingly it doesn't seem to complain about any other DIFF_SSTL135 wire
<benh> any idea what that means ?
<benh> ie, it's not complaining about dqs_p and dqs_n afaik
<dkozel> My CLE-215+ have arrived. VRM heatsinks need to be reattached and I've ordered the JTAG cables. I haven't tried using an FT2232H (or similar) to load the FPGA and Flash, Sounds well worth a shot.
<benh> _florent_: the weird thing is I'm pretty sure that used to work ...
<_florent_> benh: Vivado is probably considering it as single ended when not connected, the difference with the others DIFF signals is that clk is an output, the others are inouts
<benh> _florent_: interestingly enough that used not to happen ... any suggestion on how to work around it without having separate toplevels ?
<benh> _florent_: what would go wrong if I made it inout for example ?
<_florent_> benh: you can try to make it inout
<benh> otherwise I'd have to hookup a differential buff of some sort right ?
<daveshah> An OBUFDS with I connected to 0 would work
<benh> yup, I was thinking of that, I just couldn't remember the name :) thx. I'll try that
benh has quit [Remote host closed the connection]
benh has joined #litex
scanakci has quit [Quit: Connection closed for inactivity]
<benh> _florent_: so I started having a look at "raw" sdram generation... the new structure makes it hard to completely take out the wishbone :)
<benh> _florent_: you end up with self.bus = None in the SoC stuff and you have to add a lot of conditionals... a bit ugly
<benh> _florent_: I suppose I could continue down that path, or make a dummy "bus" object that does nothing
<benh> _florent_: one problem I haven't solved yet is exposing the CSRs... add_csr_master() is gone or replaced with something else ... digging
<benh> _florent_: it gets really messy to remove the bus completely now :(
<benh> _florent_: another approach would be to just leave a wishbone on top of the CSRs with just the CSRs on it and expose that to microwatt
<benh> what do you reckon ?
<benh> I tend to prefer less extraneous logic as we are trying to fit into the little arty and the core's growing... maybe I'll see about a dummy bus object
<benh> no bus at all wreaks havoc with mem regions etc...
<benh> I'm making progress with a dummy SoCBusHandler... now to get the CSR bus exposed...
<somlo> so, 64-bit Litex+Rocket is now technically capable of self-hosting :) http://www.contrib.andrew.cmu.edu/~somlo/BTCP/LitexRocketSelfHosting.mp4
<somlo> here's the transcript if you don't feel like waiting for the (slow) video: http://www.contrib.andrew.cmu.edu/~somlo/BTCP/LitexRocketSelfHosting.log
<benh> so CSR bus exposed... now to get CSRs in csr.h would be nice :)
Claude has quit [Disconnected by services]
rvense has quit [Ping timeout: 256 seconds]
rvense has joined #litex
<sajattack[m]> @somlo nifty
<somlo> sajattack[m]: thanks :) Free-as-in-Freedom all-the-way-down (to the gateware)
<somlo> now I need to make it faster before it's *useful*, but hey, that's a "simple matter of programming" :)
<sajattack[m]> haha
<sajattack[m]> would be curious to see how long it takes to synth and pnr, looks like you were bottlenecking on I/O
Claude has joined #litex
<somlo> loading things from the sdcard (over SPI) is slow. I guess I'll circle back on LiteSDCard, see what I can get away with once that starts working reliably
<benh> _florent_: I think I'm getting there so don't bother about it until you start seeing patches from me, and then hopefully you won't puke :)
<somlo> also, last time I checked, synth with yosys needed 1.3GB resident memory (on intel), and I only have 1GB on the trellisboard. I should refresh my toolchain and see if the latest and greatest somehow fits in a bit less RAM
<Finde> benh: that is awesome about microwatt linux! are there any pics of the boot to share?
<Finde> is there an irc channel or something for microwatt enthusiasts to gather on? :)
<benh> Finde: not yet :) There's a slack but I don't know if it's public
<benh> Finde: you can ask Mikey
<benh> Michael Neuling <mikey@neuling.org>
HoloIRCUser has joined #litex
<benh> At the last LCA we just got our icache and dcache, and at that point I discovered in horror that I had written about half of microwatt :)
<benh> thankfully I got back to doing real work and Paul has been the busy bee since, adding a little MMU
<benh> he's adding enough FP support now so that the core can do basic FP load/stores and we can emulate the rest in SW :)
HoloIRCUser1 has quit [Ping timeout: 264 seconds]
Skip has joined #litex
HoloIRCUser1 has joined #litex
HoloIRCUser has quit [Ping timeout: 260 seconds]
<Finde> hahaha
<benh> _florent_: hrm... sdram.c now depends on the LiteX timer being there.. that's rather ... annoying :)
<zyp> somlo, I'm tempted to do an ecp5 board with a sodimm socket, to make a cheap design with lots of ram
<zyp> partly because it'd be cool to have a design that can synthesize itself
<benh> _florent_: I might try to hid that behind a simple abstraction...
<benh> _florent_: not just for standalone microwatt inits, but also bcs even if run in LiteX, microwatt doesn't really need/want that external timer
<benh> powerpc has an architected timebase & decrementer facility in the core
<somlo> zyp: I was told it's supposed to be a fiddly endeavor, with lots of trial-and-error, getting all the traces "just right" to a sodimm
<somlo> but if you pull it off, I'll definitely want to put in for a batch of 5-10 of such boards :)
<somlo> ideally, I'd like to see the trellisboard (https://github.com/daveshah1/TrellisBoard) modded to support a sodimm socket
<tpb> Title: GitHub - daveshah1/TrellisBoard: Ultimate ECP5 development board (at github.com)
<somlo> disclaimer: I have zero skill designing PCBs, so this is just me flapping my gums at this point :D
<benh> anything powered off the same USB that does FTDI JTAG & UART will rock for me :)
<benh> ideally with PCIe *host* as well ... hehe
<benh> I can't design PCBs for the life of me... 4 decades doing SW, I just skimmed some HW design skills off colleagues over the year, just enough to hack FPGAs a bit but don't let me go anywhere near anything analog :)
<zyp> somlo, to me, routing a sodimm socket looks easier than routing to soldered ICs
<zyp> the challenge is that a sodimm is 64-bits wide
<benh> an M2 connector would do for PCIe as well
<benh> zyp: aren't there "interesting" issues with trace lenght ?
<somlo> benh: I think I see where you're going with pci host: plant the fpga dev board into something like this: https://www.onestopsystems.com/product/cube2-metal-expansion-enclosure-5-pcie-slots
<tpb> Title: CUBE2 METAL expansion enclosure, 5 PCIe slots | One Stop Systems (at www.onestopsystems.com)
<zyp> as far as I can tell, it'll need IO from both left and right side banks to get enough DQS groups, which makes clocking the design more challenging
<somlo> and have support for off-the-shelf peripherals, like a regular pc motherboard, except with a risc-v cpu and northbridge
<zyp> but ecp5 has an «edge clock bridge» which apparently is supposed to solve that
<benh> somlo: well, I want a way to get PCIe master, anything will do
<zyp> so it might work :)
<benh> M2 female, PCIe female etc...
<benh> that way you can stick an M2 for storage
<benh> or a cable card to an external expansion for more stuff
<benh> and get real IOs
<benh> but that's the guy who use to work on server chips talking so .... :)
<somlo> zyp: all I can do is say encouraging stuff, cheer you on, and kibbitz from the sidelines until you have something that works, but it WOULD rock if you pulled it off! :)
<benh> but once you have the host connector, the sky's the limit. From just a local nvme M2 or wifi to bridges with sockets etc...
<benh> well, if it looks like it's going to rock enough for me I can chip some $ in too
<benh> (mind you personal hobby $, so you won't get rich)
<benh> maybe some friends might too
<benh> At some stage I might try to tweak microwatt into a 32-bit cpu I can run old MacOS on :)
<benh> though not before Paulus gets an FPU going :)
<benh> anyway, I'm way out of topic for the channel, sorry guys :) Friday night ....
<somlo> benh: oh, cool, it's Friday... totally forgot ;)
<benh> well it's Sat. already here :)
<benh> oh btw, now that I have some experienced ppl around ...
<benh> one issue I've been seeing with microwatt when I use litedram (which might relate to sourcing the clock from litedram's pll rather than our old clock generator)
<sajattack[m]> there's a different connector for pcie host and device?
<benh> the UART output is crappola for a few hundred milliseconds
<benh> so the first messages out of the core are garbled
<benh> if I put a wait loop before outputing things, it's fine
<benh> it looks like the clocks aren't rigght for some amount of time despite the PLL being locked
<benh> but it could be something else too...
<benh> sajattack[m]: well... yes and no ...
<benh> PCIe is symetrical P2P mostly
<benh> but someone has to provide the clock and power
<sajattack[m]> oh ok
<benh> and I yet have to see a base board that provides power, has an M2 female, and wires that to a PCIe female connector (or another M2 female) :)
<benh> so far the best idea is _florent_'s (iirc) to use cable cards and swap wires
<benh> (the ones that use a USB cable)
<sajattack[m]> yeah I was talking with my friend about the board florent discovered and he said it would be possible to do stuff like take over the audio card in a pc and make a synth and stuff
<sajattack[m]> bit overkill for a synth but the concept I mean
<sajattack[m]> taking over random pc peripherals
<sajattack[m]> which didn't jive with what you were saying about a different connection in my mind
<sajattack[m]> but I get it now
<benh> well, if somebody is good at doing PCBs it shouldn't be hard to do something like that
<benh> a base board with M2 female connector, power, and a PCIe female socket
<benh> we could probably get away with generating the clock from the Artix, not sure there
<zyp> benh, or just put a clock on it
<sajattack[m]> if you like it then you shoulda put a clock on it
<sajattack[m]> I was talking about just sticking the nvme on the cler? board in a pc
<benh> zyp: yup... PCIe is 100Mhz oscillator right ?\
<sajattack[m]> and hijacking things
<benh> allright, off to bed..
<_florent_> somlo: nice self hosting demo, glad you manage to get all the pieces working! (now it would indeed need to be faster :))
<_florent_> benh: even with a board as PCIe endpoint, if Bus mastering is enabled, you can already do interesting things in the system from the board. LitePCIe only support Endpoint for now, adding Root support should not be too complicated (the lower layers could probably be reused), but it's still a bit of work/testing
<somlo> _florent_: thanks, now my OCD will finally allow me to focus on other things (like maybe reconciling the spi-master gateware and linux driver at bpw > 8bit) :)
<somlo> and studying the ecp5 oddr added-delay impact on litesdcard -- that's probably the best chance I have to get faster storage...
<Skip> _florent_: Just FYI the May 5 commit to linux-on-litex-vexriscv "buildroot/linux.config: enable SMP" broke Linux on the pano_logic_g2 platform.
<Skip> _florent_: I rolled back to May 1 " conda/requirements.txt: add required pythondata repositories." and that fixed it.
<Skip> The kernel booted, but hung after init was started.
CarlFK has joined #litex
<_florent_> Skip: ok thanks, i'll look at this
<zyp> _florent_, is the DMA stuff in litepcie based on bus mastering?
<zyp> apologies if that's a stupid question, I'm not very familiar with pcie yet :)
FFY00 has quit [Remote host closed the connection]
FFY00 has joined #litex
<_florent_> zyp: yes it's done using bus mastering
<zyp> it'll be interesting to delve into once I get that acorn board
<zyp> I don't have anything suitable to plug that into, so I went ahead and ordered one of these as well: https://www.seeedstudio.com/ODYSSEY-X86J4105864-p-4447.html, looked like a nice board for experimenting with this stuff :)
<tpb> Title: Seeed Studio Bazaar, Boost ideas, Extend the Reach (at www.seeedstudio.com)
<zyp> I think the only m.2 slot I've got in the house at the moment is in my wife's computer, and I don't think she'd appreciate me messing with that
futarisIRCcloud has joined #litex
<futarisIRCcloud> If anyone is after a cheap x86 host system with mPCIe slots, I can recommend the APU2 series. https://www.pcengines.ch/apu2.htm . There is also good coreboot support on these.
<tpb> Title: PC Engines apu2 system boards (at www.pcengines.ch)
<futarisIRCcloud> Has anyone made any breakout boards for the DF52 connectors on the NiteFury / Acorn CLE-215+ ?
<zyp> I figured I'll just make a breakout cable assembly
<zyp> DF52 in one end, header sockets in the other
<zyp> those apu2 boards looks cute, but they'd be more interesting if they had m.2
<dkozel> the ODYSSEY board from Seeedstudio looks cool
<dkozel> still hoping to get a Thunderbolt 3 to m.2 adapter :)
<dkozel> Or USB 3.{1,2} to m.2 as consolation prize
<zyp> all the onboard IO looks convenient too, I figure I can use those to hook up the jtag port of the acorn
Skip has quit [Ping timeout: 240 seconds]
<zyp> I believe openocd can already use sysfs gpio, but I guess that'd be fairly slow, so I guess the onboard microcontroller can do well as a jtag adapter
Skip has joined #litex
<tpb> Title: SQRL Acorn as an interesting Artix-7 board? - Page 1 (at www.eevblog.com)
<futarisIRCcloud> mPCIe can be converted to m.2. I'm sure there's a cheap converter or two online somewhere...
<zyp> mpcie is only one lane IIRC
<futarisIRCcloud> For thunderbolt 3 to m.2, I thought someone was doing that with PCILeech FPGA.
<tpb> Title: GitHub - ufrisk/pcileech-fpga: FPGA modules used together with the PCILeech Direct Memory Access (DMA) Attack Software (at github.com)
<zyp> yeah, there are thunderbolt to m.2 adapters around
<tpb> Title: Intel Certified USB C Thunderbolt 3 NVME SSD Enclosure Type C Case M Key NVMe connector Excellent Dissipation for Window Mac OS|HDD Enclosure| - AliExpress (at www.aliexpress.com)
<zyp> but there's also usb3 to m.2 adapters around, which looks similar from the outside (just a usb-c port), but wouldn't work for generic pcie
<zyp> looked a bit into that earlier, and the latter commonly seems to be based on ASM2362, which does usb3 mass storage to pcie nvme