ChanServ changed the topic of #nmigen to: nMigen hardware description language · code at https://github.com/nmigen · logs at https://freenode.irclog.whitequark.org/nmigen · IRC meetings each Monday at 1800 UTC · next meeting November 9th
a314 has quit [Ping timeout: 260 seconds]
futarisIRCcloud has joined #nmigen
a314 has joined #nmigen
lkcl has quit [Ping timeout: 258 seconds]
lkcl has joined #nmigen
Degi has quit [Ping timeout: 246 seconds]
Degi has joined #nmigen
FFY00 has quit [Ping timeout: 240 seconds]
FFY00 has joined #nmigen
bmartin427 has quit [Quit: Leaving]
PyroPeter_ has joined #nmigen
lkcl has quit [Ping timeout: 260 seconds]
PyroPeter has quit [Ping timeout: 265 seconds]
PyroPeter_ is now known as PyroPeter
lkcl has joined #nmigen
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
electronic_eel has quit [Ping timeout: 260 seconds]
electronic_eel_ has joined #nmigen
lkcl has quit [Ping timeout: 260 seconds]
<lsneff> When simulating my project, I'm getting `ValueError: Value (128) not representable in 7 bits` when it's in the `sim.write_vcd` function. The trace isn't particularly useful. Is there any way I can narrow down where this error is coming from?
<lsneff> Ah, nvm, was trying to pack a value to large into a memory
<whitequark> can you produce an MCVE? this seems like a really bad error
lkcl has joined #nmigen
<d1b2> <OmniTechnoMancer> seems like something should have complained earlier than that?
<whitequark> yeah
jeanthom has joined #nmigen
emeb_mac has quit [Quit: Leaving.]
happycube has quit [Ping timeout: 260 seconds]
happycube has joined #nmigen
korken89 has joined #nmigen
jeanthom has quit [Ping timeout: 272 seconds]
<korken89> When using nMigen, are there any examples on how to interoperate with litex modules? I was thinking of putting a DRAM on the board I am making to tryout the ECP5, but I don't feel like writing a DRAM controller :)
jeanthom has joined #nmigen
lkcl has quit [Ping timeout: 260 seconds]
jeanthom has quit [Ping timeout: 256 seconds]
Asu has joined #nmigen
<lsneff> whitequark: sure will do tomorrow if I have time. Some formatting code deep in the vcd writing module was throwing, but it probably should be caught in nmigen itself.
lkcl has joined #nmigen
cr1901_modern1 has joined #nmigen
cr1901_modern has quit [Ping timeout: 246 seconds]
lkcl has quit [Ping timeout: 246 seconds]
electronic_eel_ is now known as electronic_eel
Shari2 has joined #nmigen
lkcl has joined #nmigen
chipmuenk has joined #nmigen
lkcl has quit [Ping timeout: 272 seconds]
lkcl has joined #nmigen
samlittlewood has quit [Ping timeout: 240 seconds]
samlittlewood has joined #nmigen
phire has quit [Remote host closed the connection]
<d1b2> <NZSmartie> Hi, not sure if this is on topic. the LimeSDR Mini has a Intel Max 10 FPGA, would it be okay to add a LimeSDR Mini to the nmigen-boards repo? if that's the right place to add it?
<d1b2> <NZSmartie> (disclaimer, I haven't touched FPGAs before, and i'm trying to figure out if a LimeSDR mini is an okay place to start)
phire has joined #nmigen
<whitequark> it's a reasonable addition
jeanthom has joined #nmigen
XMPPwocky has quit [Ping timeout: 264 seconds]
XMPPwocky has joined #nmigen
cr1901_modern1 has quit [Quit: Leaving.]
cr1901_modern has joined #nmigen
Shari2_ has joined #nmigen
Shari2 has quit [Read error: Connection reset by peer]
<agg> korken89: probably the simplest way at the moment is to build litedram into a verilog module, then you can use it with `platform.add_file("...")` and the `Instance` class
key2 has quit [Read error: Connection reset by peer]
key2 has joined #nmigen
<korken89> Thanks for the tip agg!
<agg> korken89: if you're using the rest of litex, it might be simpler to compile your nmigen designs into verilog and have litex link them in, I guess
<Shari2_> How does one mark a subsignal as double data rate/xdr=2? I only found platfrom.request with xdr argument but the resource is already requested. I want to output a clock signal and Spartan6 wants an ODDR buffer to output a BUFG clock.
<korken89> agg: Makes sense, I've never used litex before, but their DRAM support is what is quite interesting for me, and what I mainly used the vendor tools for before. You know, I simply want a high bandwidth bus for a DSP pipeline and DRAM fits the bill for the required bandwidth :)
<agg> Shari2_: you have to set xdr=2 when you first request it, not afterwards, and then the thing returned from request() has a .o0, .o1, and .o_clk attribute instead of just .o
<agg> (but I don't know about the xilinx platform stuff)
<daveshah> The closest equivalent to a vendor DDR wizard is https://github.com/enjoy-digital/litedram/blob/master/litedram/gen.py. You give it a YAML config file like https://github.com/enjoy-digital/litedram/blob/master/examples/arty.yml and it generates a standalone core
<agg> korken89: if you do just want a standalone dram and not a whole SoC you should be ok to use litedram by itself in nmigen (after building to verilog), though i've not tried it
<korken89> Thanks daveshah! I'll give it a try!
<korken89> Then I feel safe about adding a DRAM module to the test board
<korken89> A quick look seems to suggest that they generate a Wishbone interface to the controller, so that's perfect
<agg> depending on how much bandwidth you need the hyperram stuff looks much simpler to route and control, but it's definitely not as quick as ddr3 or whatever
<daveshah> There is also RPC coming on the horizon, but litedram support isn't quite there yet and availability is still a bit meh
<daveshah> near-DDR3-bandwidth with far fewer pins
<agg> and such small packages
<korken89> I've used HyperRAM before, and it is actually OK, the issue is that DRAM is cheaper :)
<agg> yep fair!
<korken89> For RPC DRAM, I am quite hoping it will come more
<Shari2_> agg: the xdr part is Spartan6/platfrom specific and the request is done by a platform independent module. I guess manualy instatiate a ODDR then?
<korken89> I never need the density of a DRAM, like the image processing pipline I am porting now needs about 5 MB of RAM, and RPC would give me DRAM with a lot less IO and less board space
<agg> Shari2_: a platform independent module is calling platform.request()?
<korken89> I saw that antmicro are working on the RPC support https://github.com/antmicro/litedram/tree/rpc-dram-support/litedram
<daveshah> yep
<Shari2_> agg: yes i have luna simple_device.py which calls "bus = platform.request(platform.default_usb_connection)".
<agg> hmm, that sounds sort of trickier
<agg> maybe ktemkin will have ideas when she's around
<ktemkin> what’s the question?
<ktemkin> oh, I might see
<vup> Shari2_: you can give platform.request() a dict for xdr: `xdr = {"subsignal": 2}`, is that what you need? It should then use a ODDR on Spartan6
<vup> oh no I misunderstood, sorry
<Shari2_> ktemkin: I need the ulpi clock to be and output my platform (Spartan6) and to output a BUFG clock a ODRR is needed. So the question is how and where to set the xdr attribute for ulpi clk.
<ktemkin> check out the Genesys2 platform in LUNA for an example of custom clocking that works with the default examples
<Shari2_> Okay
<ktemkin> I suspect you can use that construct to split the clock domain in a way that works with the examples
<ktemkin> otherwise, add handle_clocking=False to the USBDevice instantiation, and then use xdr={‘clk’: 2} in your .request to create the DDR buffer
<ktemkin> and then drive the signal yourself
<ktemkin> the latter is what you want for real usage on a platform like that
<ktemkin> but it’ll require you to tweak each example you want to use
<Shari2_> I will try to keep platform specific parts out of generic modules. Thanks.
<ktemkin> I mean, top-level modules maybe shouldn’t be considered necessarily generic; I just have them genericized in LUNA to make it easy to run the examples on whatever platform :)
<ktemkin> there’s already some hacks (.request_optional) in place that make that work that you may not want to take to extremes outside of the examples
jeanthom has quit [Ping timeout: 246 seconds]
korken89 has quit [Remote host closed the connection]
korken89 has joined #nmigen
greni has joined #nmigen
greni has quit [Remote host closed the connection]
jeanthom has joined #nmigen
gerni has joined #nmigen
<gerni> Hi, is there a simple way to run nmigen-soc / minerva / lambdasoc in a simulator?I would like to take nmigen based RISC-V, write a simple "Hello World" app. in C or nim,run it all in a simulator (iverilog?). It would be nice to have the SoC serial output ("Hello World") in my terminal.
<awygle> nmigen has an integrated simulator called pysim. it's probably a bit slow for this use case. in the relatively near future it will also have cxxsim which is intended to scale better.
<gerni> I'm just starting so I'm looking for something simple, easy to follow, I've just tried Litex "lxsim --cpu-type=minerva", it works but ...a lot of things are happening behind, I was hoping to find something simpler
<whitequark> gerni: try this https://github.com/jfng/minerva-examples
<gerni> @whitequark wow worked out of the box, exactly what I was looking for, thanks!
<cr1901_modern> Random musing: The ability to have multiple processes in pysim (and cxxsim? Haven't tried) is extremely useful for arranging disjoint parts of a simulation. But it seems like it would be rather easy to have multiple processes go out of sync with each other.
<cr1901_modern> Haven't experienced this yet, but I dread the day when it happens
lkcl has quit [Ping timeout: 246 seconds]
<Sarayan> You have to synchronize on the clock(s)
<Sarayan> not sure how much the overhead would be
<Sarayan> but I'm pretty sure the FF give you enough independant domains to make boundary-on-FF viable
<Sarayan> just have to be careful with syncs and caches
lkcl has joined #nmigen
korken89 has quit [Remote host closed the connection]
emeb_mac has joined #nmigen
gerni has quit [Remote host closed the connection]
Asu has quit [Remote host closed the connection]
Asu has joined #nmigen
<lkcl> whitequark: that minerva example is *really* useful! things like it are completely missing from nmigen-soc. working out how nmigen-soc (etc) hang together from the APIs, well-written as they are, is almost impossible.
* lkcl makes a note of that example
korken89 has joined #nmigen
korken89 has quit [Remote host closed the connection]
korken89 has joined #nmigen
jeanthom has quit [Ping timeout: 265 seconds]
<kbeckmann> oh, that was neat. no fuzz, it just works as well without any complicated setup.
Degi has quit [Quit: ZNC 1.6.6+deb1ubuntu0.2 - http://znc.in]
<kbeckmann> i have ran into a new problem with the gowin pnr tool... when creating instances of IOBUF and TBUFs, you have to pass the actual top level port - it seems you can't have them connected through wires at all. nmigen seems to create wires even in the simplest design. is there any way to work around this?
<daveshah> opt_clean -purge on the Yosys side might fix this, although would also be a bit of a sledgehammer
cr1901_modern1 has joined #nmigen
<kbeckmann> oh, thanks, i will try this
<kbeckmann> it seems you can create the IOBUF instances in deeper modules, however the port has to be passed directly from module to module, not via a wire.
cr1901_modern has quit [Ping timeout: 260 seconds]
<kbeckmann> daveshah: thanks, that worked!
cr1901_modern1 has quit [Client Quit]
cr1901_modern has joined #nmigen
Degi has joined #nmigen
jeanthom has joined #nmigen
jeanthom has quit [Ping timeout: 256 seconds]
Asu has quit [Remote host closed the connection]
jeanthom has joined #nmigen
Shari2_ has quit [Quit: Leaving]
jeanthom has quit [Ping timeout: 272 seconds]
jeanthom has joined #nmigen
korken89 has quit [Remote host closed the connection]
chipmuenk has quit [Quit: chipmuenk]
Chips4Makers has quit [Ping timeout: 272 seconds]
Chips4Makers has joined #nmigen
jeanthom has quit [Ping timeout: 256 seconds]
lkcl has quit [Ping timeout: 264 seconds]