whitequark[cis] changed the topic of #amaranth-lang to: Amaranth hardware definition language · weekly meetings: Amaranth each Mon 1700 UTC, Amaranth SoC each Fri 1700 UTC · code https://github.com/amaranth-lang · logs https://libera.irclog.whitequark.org/amaranth-lang · Matrix #amaranth-lang:matrix.org
_whitenotifier-e has joined #amaranth-lang
<_whitenotifier-e> [amaranth] wanda-phi opened pull request #980: sim: disambiguate duplicate names of traced signals - https://github.com/amaranth-lang/amaranth/pull/980
<_whitenotifier-e> [amaranth] codecov[bot] commented on pull request #980: sim: disambiguate duplicate names of traced signals - https://github.com/amaranth-lang/amaranth/pull/980#issuecomment-1837295019
<_whitenotifier-e> [amaranth] github-merge-queue[bot] created branch gh-readonly-queue/main/pr-980-193fdaccd0031881de0cc7034adea33dbb46336a - https://github.com/amaranth-lang/amaranth
<_whitenotifier-e> [amaranth-lang/amaranth] github-merge-queue[bot] pushed 1 commit to main [+0/-0/±1] https://github.com/amaranth-lang/amaranth/compare/193fdaccd003...28139f5f4bdc
<_whitenotifier-e> [amaranth-lang/amaranth] wanda-phi 28139f5 - sim: disambiguate duplicate names of traced signals
<_whitenotifier-e> [amaranth] whitequark closed pull request #980: sim: disambiguate duplicate names of traced signals - https://github.com/amaranth-lang/amaranth/pull/980
<_whitenotifier-e> [amaranth] github-merge-queue[bot] deleted branch gh-readonly-queue/main/pr-980-193fdaccd0031881de0cc7034adea33dbb46336a - https://github.com/amaranth-lang/amaranth
<_whitenotifier-e> [amaranth] whitequark closed issue #976: VCD writing with signals having identical names - https://github.com/amaranth-lang/amaranth/issues/976
<_whitenotifier-e> [amaranth-lang/amaranth-lang.github.io] whitequark pushed 1 commit to main [+0/-0/±32] https://github.com/amaranth-lang/amaranth-lang.github.io/compare/f0a7df0a286c...f623e9afab83
<_whitenotifier-e> [amaranth-lang/amaranth-lang.github.io] github-merge-queue[bot] f623e9a - Deploying to main from @ amaranth-lang/amaranth@28139f5f4bdc328045f2e28f4126518255237645 🚀
<_whitenotifier-e> [rfcs] wanda-phi opened pull request #34: Add an RFC for `amaranth.lib.wiring.Interface` renaming. - https://github.com/amaranth-lang/rfcs/pull/34
<_whitenotifier-e> [rfcs] wanda-phi edited pull request #34: Add an RFC for `amaranth.lib.wiring.Interface` renaming. - https://github.com/amaranth-lang/rfcs/pull/34
<iposthuman[m]> Question: Machdyne's Keks SBC has a DDR O-SPI RAM (32MB) PSRAM chip: https://www.apmemory.com/wp-content/uploads/APM_PSRAM_OPI_Xccela-APS256XXN-OBRx-v1.0-PKG.pdf. I've been looking through *memory.py* and can't really see a good match. Aside of copying and modifying one of the SPI resources what other help is there for adapting a new PSRAM chip?
<whitequark[cis]> we could have an OctalSPIResource or something
<whitequark[cis]> isn't octal SPI and HyperBus basically the same thing?
vegard_e[m] has joined #amaranth-lang
<vegard_e[m]> octal spi is closely related to hyperram, and I believe GSG is working on a hyperram controller in amaranth for cynthion
<whitequark[cis]> oh, what a coincidence: I'm also working on one for Glasgow
<whitequark[cis]> it's partially ready
<_whitenotifier-e> [amaranth] wanda-phi opened pull request #981: Implement RFC 34: Rename `amaranth.lib.wiring.Interface` to `PureInte… - https://github.com/amaranth-lang/amaranth/pull/981
<_whitenotifier-e> [amaranth] wanda-phi edited pull request #981: Implement RFC 34: Rename `amaranth.lib.wiring.Interface` to `PureInterface`. - https://github.com/amaranth-lang/amaranth/pull/981
<_whitenotifier-e> [amaranth] wanda-phi edited pull request #981: Implement RFC 34: Rename `amaranth.lib.wiring.Interface` to `PureInterface`. - https://github.com/amaranth-lang/amaranth/pull/981
<_whitenotifier-e> [amaranth] codecov[bot] commented on pull request #981: Implement RFC 34: Rename `amaranth.lib.wiring.Interface` to `PureInterface`. - https://github.com/amaranth-lang/amaranth/pull/981#issuecomment-1837302591
<cr1901> I'm kinda stuck... how would you expose remote build system config to pdm/amaranth, so that a user need not have to type out SSH params each time they want to use remote build (and not hardcode it to my machine/settings in the source code)?
<cr1901> (Anyone who uses pdm w/ Amaranth and remote build can answer)
<whitequark[cis]> ~/.ssh/config?
<cr1901> Oh huh. Paramiko _does_ parse ~/.ssh/config. Nevermind.
<cr1901> https://www.fabfile.org/ Also TIL (no immediate use for Amaranth AFAICT, but it's cool)
<_whitenotifier-e> [amaranth] wanda-phi opened pull request #982: lib.wiring: add `__repr__` to `Interface`. - https://github.com/amaranth-lang/amaranth/pull/982
<_whitenotifier-e> [amaranth] codecov[bot] commented on pull request #982: lib.wiring: add `__repr__` to `Interface`. - https://github.com/amaranth-lang/amaranth/pull/982#issuecomment-1837305684
<iposthuman[m]> well, i have the HRAM verilog source from Machdyne's Zucker SoC and I could adapt that to Amaranth but I'm not sure which memory resource to use as a template. i'm thinking SPIFlashResources?
<whitequark[cis]> yeah
notgull has quit [Ping timeout: 256 seconds]
<iposthuman[m]> speaking of Glasgow, i have no idea when i'll get mine--i wasn't in the early bird crowd.
<whitequark[cis]> I don't either! i
<whitequark[cis]> *I'm just maintaining the open source project
<iposthuman[m]> Wow! i thought you would have been given super duper early version 😉
<whitequark[cis]> I got one from the early bird batch, together with everyone else in that batch (maybe slightly earlier?)
<iposthuman[m]> atleast my Cynthion will ship on my birthday!
<whitequark[cis]> I also got a revC2 prototype
<_whitenotifier-e> [amaranth] github-merge-queue[bot] created branch gh-readonly-queue/main/pr-982-28139f5f4bdc328045f2e28f4126518255237645 - https://github.com/amaranth-lang/amaranth
notgull has joined #amaranth-lang
<_whitenotifier-e> [amaranth-lang/amaranth] github-merge-queue[bot] pushed 1 commit to main [+0/-0/±2] https://github.com/amaranth-lang/amaranth/compare/28139f5f4bdc...ab6503e35282
<_whitenotifier-e> [amaranth-lang/amaranth] wanda-phi ab6503e - lib.wiring: add `__repr__` to `Interface`.
<_whitenotifier-e> [amaranth] whitequark closed pull request #982: lib.wiring: add `__repr__` to `Interface`. - https://github.com/amaranth-lang/amaranth/pull/982
<_whitenotifier-e> [amaranth] github-merge-queue[bot] deleted branch gh-readonly-queue/main/pr-982-28139f5f4bdc328045f2e28f4126518255237645 - https://github.com/amaranth-lang/amaranth
<_whitenotifier-e> [amaranth-lang/amaranth-lang.github.io] whitequark pushed 1 commit to main [+0/-0/±32] https://github.com/amaranth-lang/amaranth-lang.github.io/compare/f623e9afab83...fae19efa8318
<_whitenotifier-e> [amaranth-lang/amaranth-lang.github.io] github-merge-queue[bot] fae19ef - Deploying to main from @ amaranth-lang/amaranth@ab6503e352825b36bb29f1a8622b9e98aac9a6c6 🚀
Degi_ has joined #amaranth-lang
Degi has quit [Ping timeout: 245 seconds]
Degi_ is now known as Degi
<whitequark[cis]> hm, is -dff even sound?
<whitequark[cis]> is your design single-clock?
<cr1901> yes
<whitequark[cis]> re: obj-copy, I think you're supposed to use phdrs, not shdrs
<whitequark[cis]> it's less work, you only really need to handle one phdr on embedded firmware
<whitequark[cis]> I had an example somewhere
<cr1901> the remote branch has "refactor" branch as ancestor. So if you have that example, I'll steal from it and add it to the refactors
<whitequark[cis]> literally one linelol
<whitequark[cis]> s/linelol/line lol/
<cr1901> doit is absolutely fucking amazing, btw
<cr1901> (and yea works for me lol)
<whitequark[cis]> https://github.com/cr1901/sentinel/blob/remote/examples/attosoc.py#L540-L541 this isn't strictly speaking true
<whitequark[cis]> you can override the build.sh file template to add your own build command to the end
<whitequark[cis]> it will work locally as well as remotely
<whitequark[cis]> but this is probably fine
<cr1901> Yea, this could be a heredoc inside the build script if I really wanted it to be, couldn't it?: https://github.com/cr1901/sentinel/blob/remote/examples/attosoc.py#L525-L526
<cr1901> This file is meant to be a smorgasboard of "functionality I find useful for bringing up the SoC example". In the future, I hope parts of it get moved out of this file into a more shareable form, and maybe some ideas can form the basis of RFCs
<cr1901> (E.g. icebram support for building amaranth-soc firmware would be useful, and it's something I wish litex had)
<whitequark[cis]> hm. yes, that sounds feasible to add to the platform class. though the algorithm would have to be reimplemented
<whitequark[cis]> typo: "prescalar" (should be "prescaler")
<cr1901> (Noted) Q: What do you get when cross a mosquito with a mountain climber? A: You can't take the cross product of a vector and a scaler.
<cr1901> Actually, looking at this, I don't even really remember why I do the RNG/hex file gen in Python. I think it was a combo of "I don't want to write a hexfile parser, I know it's easy, I just don't want to think", and "I don't want to depend on riscv-objcopy for the examples"
<cr1901> (icebram outputs hexfiles only)
<_whitenotifier-e> [amaranth-soc] tpwrules reviewed pull request #40 commit - https://github.com/amaranth-lang/amaranth-soc/pull/40#discussion_r1413004159
nelgau has quit [Read error: Connection reset by peer]
nelgau has joined #amaranth-lang
_whitenotifier-e has quit [Ping timeout: 245 seconds]
smkz has quit [Quit: smkz]
smkz has joined #amaranth-lang
<galibert[m]> Something unclear to me, perhaps you people know. On wishbone, are there times where a cs=0 cycle is required between transactions?
<galibert[m]> Oh cute, yosys -v segfaults (yosys --version works)
<galibert[m]> cr1901: the sentinel doc is missing host to use it in an amaranth design
<galibert[m]> s/host/how/
nelgau has quit [Read error: Connection reset by peer]
<whitequark[cis]> galibert: afaik not
<galibert[m]> So ideally an arbiter should generate back-to-back accesses without a gap as long as there are upstream requests?
<galibert[m]> Trying to design a zero latency (first access, between accesses) arbiter with priority. It’s not trivial
chaoticryptidz has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
chaoticryptidz has joined #amaranth-lang
chaoticryptidz has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
chaoticryptidz has joined #amaranth-lang
SpaceCoaster has quit [Ping timeout: 260 seconds]
SpaceCoaster has joined #amaranth-lang
_whitelogger has joined #amaranth-lang
<tpw_rules> galibert[m]: with your PLL code, is it possible to say "output 0 needs to be exactly frequency X" and then "output 1 needs to be at least frequency Y"? currently if the frequencies are not something quartus likes down to the Hz it just explodes
<tpw_rules> (maybe it doesn't help that i specify desired frequencies in Hz?)
<galibert[m]> Perhaps :-)
<galibert[m]> I mean the verilog is very simple, it’s all Quartus after that
<tpw_rules> sure, i guess i'm asking if you understand the underlying instance more and how to do that
<galibert[m]> Ah ok :-) Ok, iirc your output frequencies must have a common multiple that's between something like 800 and 1600Mhz
<galibert[m]> and the divider to get them must be between 1 and 511 (maybe 512, not sure)
<galibert[m]> There's a lot more leeway on how to reach the common multiple because it's a fpll, not a simple pll. IOW, it can dither between two frequencies to get what you want
<galibert[m]> Also there's an optional /2 in the path that could allow you to go down to 400Mhz in the common frequency (in reality, to have 2x1...2x511 divider), dunno if its activation is transparent with the instance
<galibert[m]> also, you have multiple fplls on the die (how many depends on your model) so you can create really unrelated frequencies, but beware CDC of course
<tpw_rules> using the multiple PLLs would require another PLL instance tho right
<tpw_rules> multiple FPLLs
<galibert[m]> Yeah, it's one fpll per instance
<tpw_rules> ok
<tpw_rules> that's just what i decided to do, make two PLL instances for my two clocks
<tpw_rules> cause i want their frequency to be automatically calculated according to changeable design parameters
<galibert[m]> the plls are dynamically reprogrammable, but I didn't work on that yet (I'll have to if I want to support EDID correctly...)
<tpw_rules> i didn't mean that, i meant at verilog generation time
<galibert[m]> Yeah, I got it
<galibert[m]> just letting you know
<cr1901> galibert[m]: I'll fix that, albeit it'll be "see examples/attosoc.py" for now (and possibly a code snippet connecting sentinel.top.Top to a wishbone.Decoder)
<iposthuman[m]> This is what I created for my OSPI PSRAM def: ```def OctalSPIResources(*args, cs_n, clk, reset, wp_n=None, hold_n=None,... (full message at <https://catircservices.org/_matrix/media/v3/download/catircservices.org/ktyseAYiOtUNxgVLPAOGebBn>)
<iposthuman[m]> * This is what I created for my OSPI PSRAM def: ```python... (full message at <https://catircservices.org/_matrix/media/v3/download/catircservices.org/IsfFunavCSFKMzQODMfaMJpS>)
<iposthuman[m]> Is it Amaranth proper?
<iposthuman[m]> * This is what I created for my OSPI PSRAM def: ```python... (full message at <https://catircservices.org/_matrix/media/v3/download/catircservices.org/fwdSyhsykDEMzHBwwuyOwhUL>)
<iposthuman[m]> Or should I pass in all the address and data io pins?
<whitequark[cis]> if you want the definition to be included in amaranth-boards, all of the pins need to be configurable
SpaceCoaster has quit [Quit: Bye]
jfng[m] has quit [Quit: Idle timeout reached: 172800s]
cr1901 has quit [Read error: Connection reset by peer]
cr1901 has joined #amaranth-lang
SpaceCoaster has joined #amaranth-lang