cmr_z has quit [Quit: FIN]
cmr_z has joined #glasgow
cmr_z has quit [Changing host]
cmr_z has joined #glasgow
ExeciN has joined #glasgow
nicexe has quit [Ping timeout: 240 seconds]
<whitequark> ktemkin: neat :D
<whitequark> Stormwind_mobile: oh yeah sorry I typoed, it's around 320 Mbps or 40 MB/s, like electronic_eel says
<Stormwind_mobile> USB 2.0?
<sorear> yes
<ktemkin> (lol, I'm good at leaving out key words: *USB analyzer/multi-tool; not "FPGA analyzer", which sounds like it's analyzing FPGAs)
<ktemkin> no FPGA shall escape my vapid stare
<sorear> i Kind Of Want it to be possible to share software between all the vaguely glasgow-shaped things, not sure if that's an impossible technical problem or just an impossible coordination problem
<whitequark> whichever problem it is i don't want to be in the middle of it
<ktemkin> the real trick there is just to make everything basically the same hardware
<ktemkin> "I've found it super easy to support multiple copies of the same board"
<whitequark> lol
<whitequark> ktemkin: speaking of which, i've given some thoughts to improving glasgow applet API
<whitequark> the existing imperative one with get_pins/add_pin_argument is... well, it's really bad
<whitequark> to take advantage of the capability to use e.g. nmigen's sdr/ddr instantiation, it's necessary to integrate with nmigen.build
<whitequark> that means if you e.g. have a d[0:7] pin set, you need to define a resource (somewhere that you have the actual pin numbers), and then request it (somewhere that you know whether you want SDR, DDR, etc), and carry the name of this resource in between
<whitequark> and then there's the added complication of individually controllable OE pins
<whitequark> i wonder if the right solution to this problem would be more declarative
<whitequark> something like
<whitequark> class YamahaOPxBus:
<whitequark> d : Pin(4)
<whitequark> a : Pin(2)
<ktemkin> that's close to what I've arrived at when I was solving the same problem
<ktemkin> my current model is something like: you have "Interfaces" that define their requirements declaratively; and then those interfaces are things you can either connect imperatively (live) with an object that represents your board configuration
<ktemkin> or create a meta-object that gathers interfaces and then let a simple constraint solver advise you on which pins you should use
<ktemkin> (the meta-object being a declarative definition like above, except it gathers interfaces)
<ktemkin> but I'm currently breaking out an ECP5 BGA, so I'm pretty sure my brain is gradually turning to mush
<whitequark> yeah. i'm not super fond of imperative connections like that personally, but i know other people like it, and it ends up being pretty natural regardless
<whitequark> how does your code look like? I'm pretty short on inspiration
<ktemkin> specifically, I want the imperative connections because I want to be able to make connections at runtime from e.g. a REPL
<ktemkin> I wish I had a better example, but my stuff's still in proof-of-concept enough a state that I don't have much to share
<ktemkin> this is the problem with having like ten active projects; I keep having to time-domain-multiplex between them and wind up not sure what state anything's in beyond plans :(
<whitequark> no, I get the want to use a REPL
<whitequark> I have some sort of mild aversion to REPLs because I tend to instinctively quit them and lose all the state.
<whitequark> which is frankly a pretty stupid reason, but here we are
<ktemkin> I mean, there are Horror (TM) solutions to that, like jupyter notebooks, that at least prevent you from instinctively pressing ^C too many times, or instinctively mashing ^D
<whitequark> yep
<whitequark> I've seen your screenshot (?) on twitter re imperative connections
<whitequark> you don't need to justify it; I already think it makes sense!
<whitequark> wasn't my first choice though, for the reasons listed above
<ktemkin> mm
<ktemkin> I like the idea of declarative definitions that create objects that you can imperatively modify
<whitequark> nmigen itself is pretty imperative
<whitequark> what with the m.d.sync +=
<ktemkin> I've gone overboard with declarative stuff in the past; and the one thing I can say that's a downside to it is that it can easily obfuscate what's going on
<whitequark> yep
<whitequark> so... one thing I kinda want is to automate what's currently happening in all the *Bus classes
<whitequark> declare some input as "this needs to be synchronized to sync"
<ktemkin> (for overdeclarative, see e.g. the GreatFET comms API, where the firmware describes its method to the host, and then the host winds up automatically generating RPC-stub python methods for each of the verbs: https://github.com/greatscottgadgets/greatfet/blob/master/firmware/greatfet_usb/classes/pattern_generator.c#L272)
<whitequark> ouch
<ktemkin> we have a lot of users who don't want to learn python (and shouldn't have to in order to get stuff done)
<ktemkin> it's super easy to get caught up in the "I want to be able to just describe things and have the backend handle it" and wind up with a huge tower of code-responsibility to avoid bits of user responsibility
<whitequark> yep
<whitequark> been there
<ktemkin> It doesn't seem like -too- much abstraction to be able to declare clock-domains and the I/O inside them in an abstract, declarative way, and then have the backend handle synchronization and generation of an equivalent domain during elaboration, though
<ktemkin> where the declarative form is really just driving an imperative set of methods, which are public to allow live modification of objects e.g. from a REPL
<whitequark> true
<ktemkin> which in turn are just prodding nmigen to instantiate the right things (e.g. the relevant clock domains and synchronizers at the I/O boundary)
<ktemkin> meanwhile, my desire to murder KiCad for its stubborn insistence that I click through a dialog _every time_ I want to change signal <--> BGA ball mapping is growing
<whitequark> yeah I think I ended up editing the files
<ktemkin> at least you don't have to regenerate the .net file manually for each change anymore
<ktemkin> it's easy enough to move the signals around and use the "update PCB from schematic" tool; but I shouldn't have to click "update PCB" on the dialog that pops up each time
<ktemkin> but hey, I have three sides of this ECP5 routed with no non-power vias, so I'd say it's been worth it
Stormwind_mobile has quit [Ping timeout: 250 seconds]
craigo has quit [Ping timeout: 240 seconds]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Ping timeout: 240 seconds]
ExeciN has quit [Ping timeout: 276 seconds]
Stormwind_mobile has joined #glasgow
nicexe has joined #glasgow
cyrillu[m] has quit [Remote host closed the connection]
fridtjof[m] has quit [Write error: Connection reset by peer]
jschievink has quit [Write error: Connection reset by peer]
JJJollyjim has quit [Read error: Connection reset by peer]
disasm[m] has quit [Read error: Connection reset by peer]
chocol4te has quit [Write error: Connection reset by peer]
nrossi has quit [Write error: Connection reset by peer]
nicexe is now known as ExeciN
Stormwind_mobile has quit [Read error: Connection reset by peer]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Read error: Connection reset by peer]
<emily> 06:56 <sorear> i Kind Of Want it to be possible to share software between all the vaguely glasgow-shaped things, not sure if that's an impossible technical problem or just an impossible coordination problem
<emily> counterpoint: the APIs and models in this space are underdeveloped and some friendly competition in this area is probably a good thing
<emily> eg glasgow composes pretty badly
<whitequark> yep
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Ping timeout: 252 seconds]
<emily> whitequark: marcan: looks like zfs+rt is a no go :(
<emily> or hm, actually might be fine
Stormwind_mobile has joined #glasgow
<sorear> true
ExeciN has quit [Ping timeout: 268 seconds]
Stormwind_mobile has quit [Read error: Connection reset by peer]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Read error: Connection reset by peer]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Ping timeout: 250 seconds]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Ping timeout: 252 seconds]
Stormwind_mobile has joined #glasgow
Stormwind_mobile has quit [Ping timeout: 264 seconds]
craigo has joined #glasgow
Stormwind_mobile has joined #glasgow
ExeciN has joined #glasgow
jschievink has joined #glasgow
jschievink has quit [Ping timeout: 246 seconds]
jschievink has joined #glasgow
JJJollyjim has joined #glasgow
nrossi has joined #glasgow
disasm[m] has joined #glasgow
cyrillu[m] has joined #glasgow
chocol4te has joined #glasgow
fridtjof[m] has joined #glasgow
Stormwind_mobile has quit [Remote host closed the connection]
pg12 has quit [Ping timeout: 276 seconds]