whitequark changed the topic of #amaranth-lang to: Amaranth hardware definition language · weekly meetings on Mondays at 1700 UTC · code https://github.com/amaranth-lang · logs https://libera.irclog.whitequark.org/amaranth-lang
bl0x- has quit [Ping timeout: 252 seconds]
bl0x has joined #amaranth-lang
lf has quit [Ping timeout: 260 seconds]
lf has joined #amaranth-lang
gruetzkopf has quit [Ping timeout: 248 seconds]
gruetzkopf has joined #amaranth-lang
<_whitenotifier-9> [YoWASP/yosys] whitequark pushed 1 commit to develop [+0/-0/±1] https://github.com/YoWASP/yosys/compare/da482b84d93c...f395f1b4f277
<_whitenotifier-9> [YoWASP/yosys] whitequark f395f1b - Update dependencies.
Qyriad has quit [Quit: Connection closed for inactivity]
<_whitenotifier-9> [YoWASP/nextpnr] whitequark pushed 1 commit to develop [+0/-0/±1] https://github.com/YoWASP/nextpnr/compare/65df89fa3ce2...f9b404274d63
<_whitenotifier-9> [YoWASP/nextpnr] whitequark f9b4042 - Update dependencies.
bl0x_ has joined #amaranth-lang
bl0x has quit [Ping timeout: 255 seconds]
Degi has quit [Ping timeout: 255 seconds]
Degi_ has joined #amaranth-lang
Degi_ is now known as Degi
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1430904652
<_whitenotifier-9> [amaranth] whitequark commented on issue #746: Building verilog output with synplify pro - https://github.com/amaranth-lang/amaranth/issues/746#issuecomment-1430910555
<_whitenotifier-9> [amaranth-lang/amaranth] whitequark pushed 1 commit to rfc-issue-693 [+2/-0/±0] https://github.com/amaranth-lang/amaranth/compare/cc574a6a3cc2...7dc7464b2bbb
<_whitenotifier-9> [amaranth-lang/amaranth] whitequark 7dc7464 - lib.data: implement RFC 1 "Aggregate data structure library".
<_whitenotifier-9> [amaranth] whitequark synchronize pull request #697: Implement RFC 1 "Aggregate data structure library" - https://github.com/amaranth-lang/amaranth/pull/697
<_whitenotifier-9> [amaranth] whitequark closed pull request #697: Implement RFC 1 "Aggregate data structure library" - https://github.com/amaranth-lang/amaranth/pull/697
<_whitenotifier-9> [amaranth-lang/amaranth] whitequark deleted branch rfc-issue-693
<_whitenotifier-9> [amaranth-lang/amaranth] whitequark pushed 1 commit to main [+2/-0/±0] https://github.com/amaranth-lang/amaranth/compare/a7fec279aa38...7e3e10e73336
<_whitenotifier-9> [amaranth-lang/amaranth] whitequark 7e3e10e - lib.data: implement RFC 1 "Aggregate data structure library".
<_whitenotifier-9> [amaranth] whitequark deleted branch rfc-issue-693 - https://github.com/amaranth-lang/amaranth
<_whitenotifier-9> [amaranth-lang/amaranth-lang.github.io] whitequark pushed 1 commit to main [+0/-0/±26] https://github.com/amaranth-lang/amaranth-lang.github.io/compare/5c47777a172e...3fafc7a662f5
<_whitenotifier-9> [amaranth-lang/amaranth-lang.github.io] whitequark 3fafc7a - Deploying to main from @ amaranth-lang/amaranth@7e3e10e7333630999c5b51440f0e5f0daef0358c 🚀
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431122594
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431125803
mindw0rk has quit [Read error: Connection reset by peer]
mindw0rk has joined #amaranth-lang
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431383945
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431390657
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431518603
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431524717
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431540599
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Suggestion: Interface simplification for simple wishbone case - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431541993
<d1b2> <Olivier Galibert> Nice renaming I like it
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #36: Constructing Wishbone interface with a single memory window is overly complex / uses redundant parameters - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431558098
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #36: Constructing Wishbone interface with a single memory window is overly complex / uses redundant parameters - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431565512
kbeckman1 has quit [Quit: WeeChat 3.4.1]
<_whitenotifier-9> [amaranth-soc] tannewt commented on issue #36: Constructing Wishbone interface with a single memory window is overly complex / uses redundant parameters - https://github.com/amaranth-lang/amaranth-soc/issues/36#issuecomment-1431796817
<_whitenotifier-9> [amaranth-soc] tannewt commented on issue #34: [pre-RFC] Ideas for an I2C peripheral interface on Wishbone - https://github.com/amaranth-lang/amaranth-soc/issues/34#issuecomment-1431800610
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #34: [pre-RFC] Ideas for an I2C peripheral interface on Wishbone - https://github.com/amaranth-lang/amaranth-soc/issues/34#issuecomment-1431802374
<tannewt> I would love to see wishbone over I2C too :-)
* tannewt looks at his mach xo2
<whitequark> oh yeah
<whitequark> deliciously cursed
<tannewt> I imagine a world where circuitpython can load a custom peripheral onto a mach xo2 and then talk to it over i2c
<whitequark> that would be sweet
<whitequark> I think we can get there
<tannewt> 👍
<whitequark> I mostly just need something for chronic pain so that I can actually work more than, I don't know, 10 hours a week
<tannewt> ❤️
<tannewt> I'm happy to see you more active now anyway. even at 10 hours a week
<tannewt> (I'm a long time lurker/fan)
<whitequark> it helps to not be completely isolated from any support or anyone i know anywhere in the world
<tannewt> sounds like things are improving :-)
<whitequark> (well, unless you're willing to do some dubious border crossings)
<whitequark> they are, yes
<tannewt> good. I don't want to add more work for you but I have lots of API opinions from my circuitpython experience
<tannewt> so let me know if you want them
<whitequark> I'm sad about the several years I lost to domestic and workplace abuse (M-Labs especially but they weren't alone)
<whitequark> hmm
<whitequark> sure, why not
<tannewt> my comment on #36 was a bit of my idea
<tannewt> my goal is to have peripheral class define both the gates and the code to use them
<whitequark> that's kind of the idea behind amaranth-soc
<tannewt> ya, I definitely think you are going that direction
<tannewt> and I'm a bit out of the loop on the latest thinking. I was starting from lamda-soc last I looked deeply into this
<whitequark> though in amaranth-soc, the idea is that the peripheral class declares an interface that can be later consumed from C or Rust
<whitequark> lambda-soc isn't something that had my input or what I looked at
<tannewt> In circuitpython we tend to use data descriptors to define the register level interface
<tannewt> which is what I switch to in the `systemonachip` system I experimented with
<tannewt> the data descriptors are then documented like python
<whitequark> I can see generating Python code as well as C and Rust
<whitequark> what I'm not sure about is merging them all in one class
<whitequark> yes, you could do this, and that's kind of how Glasgow works (though not quite)
<whitequark> in Glasgow I think it's appropriate too
<whitequark> oh yeah I recall that
<tannewt> I was approaching it as `elaborate()` was the only hardware generation specific function
<whitequark> so I think defining register banks this way is fine and might even end up being the way to do it in -soc
<tannewt> everything else was "just" driver code
<whitequark> right
<tannewt> that's mostly what I deal with
<whitequark> I definitely see the intent and, hm
<tannewt> (register code)
<whitequark> the only concern I have against this design is that the use case of generating a design, immediately turning it into a bitstream, and then interacting with it, is actually fairly special
<whitequark> this isn't a very realistic flow for Xilinx devices for example
<tannewt> one other reason I liked this approach is that it is documented like standard python
<whitequark> if you have a very long bitstream generation step, you end up wanting to cache either the bitstream or the Python design hierarchy
<tannewt> its not a separate custom generation process
<tannewt> totally. I've been experimenting with this with arm code loaded over i2c
<whitequark> so there are two separate things here: defining registers as class members (entirely reasonable idea, we'll definitely explore it; I'm already using something like that in lib.data and lib.intf)
<whitequark> and having those class members be able to run code that talks to hardware
<whitequark> the whole thing with MemoryMap, etc, is about taking the design hierarchy as it's created when you are generating the bitstream, and turning it into something serializable
<whitequark> I think there might be a compromise solution that makes your use case feasible, but I'd have to think deeper about the way -soc is doing things, which we can do a bit later
<whitequark> after interfaces land
<whitequark> to summarize: mostly something I already want, to a lesser extent something we can explore with likely success
<whitequark> it's something that might be usable in Glasgow too
<tannewt> the python class is actually generated from C
<whitequark> interesting
<whitequark> how does that work?
<tannewt> this is for the espressif chips with a ultra low power processor
<tannewt> you build the c file for it and the generator reads the global variables and their address
<tannewt> then makes them available on the python class
<tannewt> I was thinking of something similar for an external stm32g0 which can have code loaded over i2c
<tannewt> my hope would be that you don't need to manage a memorymap object separately from defining the register class members
<whitequark> the idea is that there would be a register bank class that'd have that functionality built in
<whitequark> the design for that was riiiight about the time i stopped working with m-labs
<josuah> this would allow declaring registers in RTL, and this would also generate a register map by the same occasion?
<whitequark> yeah
<whitequark> most likely, like with lib.data, there would be a lower-level interface with more flexibility, and high-level interface that lets you go tx_fifo: Register(unsigned(16)) or something in a class
<whitequark> it's a bit complex in that you'll need some magic to override class construction
<tannewt> because you are using a type to define it rather than constructing a class?
<whitequark> because each instance of the class needs to have its own fresh set of Signals
<whitequark> yeah more or less
<whitequark> I didn't quite know all the innards of Python back then but I do now
<whitequark> all the relevant ones anyway
<tannewt> I'd be curious to see how you do it
<whitequark> you will, eventually!
<tannewt> I can wait. Lots of stuff to do
* tannewt looks at imx rt
<tannewt> feel free to ping me here or on github if you I can be helpful. unfortunately I don't have the time to code on this atm
<tannewt> * if you think
<whitequark> will do!
jess has quit []
<_whitenotifier-9> [amaranth-soc] galibert opened issue #37: [pre?-RFC] Generic constant-frequency enable generator - https://github.com/amaranth-lang/amaranth-soc/issues/37
<_whitenotifier-9> [amaranth-soc] whitequark commented on issue #37: [pre?-RFC] Generic constant-frequency enable generator - https://github.com/amaranth-lang/amaranth-soc/issues/37#issuecomment-1432044325
<_whitenotifier-9> [amaranth-soc] galibert commented on issue #37: [pre?-RFC] Generic constant-frequency enable generator - https://github.com/amaranth-lang/amaranth-soc/issues/37#issuecomment-1432052161
Luke has quit [Quit: o/ 2d 18h 52m 42s]
Luke has joined #amaranth-lang
<koschei[m]> This is outside Amaranth’s scope, but I really wish I could name asserts and have symbiyosys output those names on assert failure
<jn> naming amaranth-generated asserts is a feature that was merged in amaranth very recently
<koschei[m]> Wait what? That’s what I get for not updating
<koschei[m]> That’s awesome, I figured it wouldn’t even be possible after reading through SBY’s docs
Degi has quit [Ping timeout: 246 seconds]
Degi_ has joined #amaranth-lang
Degi_ is now known as Degi