skipwich has quit [Remote host closed the connection]
skipwich has joined #amaranth-lang
LoveMHz has quit [Read error: Connection reset by peer]
adamse has quit [Ping timeout: 244 seconds]
LoveMHz has joined #amaranth-lang
adamse has joined #amaranth-lang
Bluefoxicy has quit [Ping timeout: 250 seconds]
Bluefoxicy has joined #amaranth-lang
Bluefoxicy has quit [Ping timeout: 244 seconds]
Bluefoxicy has joined #amaranth-lang
mwk has quit [Ping timeout: 260 seconds]
mwk has joined #amaranth-lang
_whitelogger has joined #amaranth-lang
_whitelogger has joined #amaranth-lang
greghashtag9468[ has joined #amaranth-lang
<greghashtag9468[>
I'm trying to compile down an amaranth block into verilog to include in another project. I've been using amaranth.back.verilog.convert(). This has worked well until I wanted to use io.DDRBuffer's in my design, I only end up with signal-ended signals in the final verilog.
<greghashtag9468[>
Ideally I'd like to end up with {i[1:0], o[1:0], oe[0:0} as signals passed to the top level of the verilog. Would the best approach be to implement a custom `io.SimulationPort` that carries the pos/neg edge signals? Or avoid verilog.convert() and implement a custom Platform instead?
<whitequark[cis]>
greg.hashtag.9468: what do you want to get out of using `io.DDRBuffer`?
<greghashtag9468[>
I'm specifically using the QSPI module from glasgow, which makes use of the IOStreamer class, and embeds the io.DDRBuffer class. I've attached this to Luna to implement a bootloader. This works when everything is in Amaranth.
<greghashtag9468[>
I'm trying to take the same base Amaranth code, and create a verilog instance with USB/QSPI connections at the top level to drop into a LiteX project to provide a runtime bootloader function.
<vegard_e[m]>
you could do a glue platform that provides a DDRBuffer platform that ties into litex
<RobTaylor[m]>
<vegard_e[m]> you could do a glue platform that provides a DDRBuffer platform that ties into litex
<RobTaylor[m]>
ah nice!
<greghashtag9468[>
I think I only need the DDRBuffer Signature aspect, since I'll need to create the actual io logic in my overarching design. Following what's been done for `SimulatableDDRBuffer` in glasgows `IOStreamer` I've created a PortLike which just connects i/o/oe through to self._port. Then created a SimulationPort with o/i widths * 2.
<greghashtag9468[>
@zyp The glue/proxy platform looks like it would be a cleaner solution.
skipwich has quit [Ping timeout: 248 seconds]
skipwich has joined #amaranth-lang
<whitequark[cis]>
greg.hashtag.9468: yes, I would recommend making your own platform that instantiates the ECP5 (I assume that's what you want) DDR buffers
urja has quit [Read error: Connection reset by peer]