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 · play https://amaranth-lang.org/play/ · code https://github.com/amaranth-lang · logs https://libera.irclog.whitequark.org/amaranth-lang · Matrix #amaranth-lang:matrix.org
peepsalot has quit [Remote host closed the connection]
peepsalot has joined #amaranth-lang
jn has quit [Ping timeout: 252 seconds]
jn has joined #amaranth-lang
jn has quit [Changing host]
jn has joined #amaranth-lang
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 265 seconds]
Raito_Bezarius has quit [Ping timeout: 268 seconds]
Raito_Bezarius has joined #amaranth-lang
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 252 seconds]
<_whitenotifier-2> [amaranth-stdio] whitequark opened pull request #22: Add IEEE 1149.1 boundary scan TAP controller - https://github.com/amaranth-lang/amaranth-stdio/pull/22
<whitequark[cis]> let's start adding modern peripherals to amaranth-stdio at last
<whitequark[cis]> comments welcome on https://github.com/amaranth-lang/amaranth-stdio/pull/22
Degi has quit [Ping timeout: 252 seconds]
Degi has joined #amaranth-lang
<whitequark[cis]> we should have a write_vcd() variant that only writes the files if the tests fail
<Wanda[cis]> I think TDO is supposed to change on the falling edge?
<whitequark[cis]> technically yes
<whitequark[cis]> do we care?
<whitequark[cis]> EXTEST is also mandatory and i'm definitely not mandating that
<Wanda[cis]> it sounds like the kind of thing that'd end up causing weird problems at a completely unexpected moment
<Wanda[cis]> so hm. this is not exactly the "conventional" way of implementing TAPs
<Wanda[cis]> you have one shift register for everything instead of multiple shift registers, and then you have the separate "update" registers which are per-instruction
<Wanda[cis]> I'm not sure if the single SR is actually a win; it results in many muxes (from all the capture inputs) instead of a single mux and more FFs spent on SRs
<Wanda[cis]> the latter option sounds like it would have better locality (it certainly would if there were actual bscan registers involved)
<Wanda[cis]> I also don't see a way to implement an actual readable/writable register with the interface as it stands (there is no write strobe)
<whitequark[cis]> you just use the controller state
<whitequark[cis]> i've considered adding strobes but people love to implement weird shit like "this register only matters in RTI" so i am going to completely ignore the whole "strobe" business. go match TAP state for anything
<whitequark[cis]> * i've considered adding strobes but people love to implement weird shit like "this register only does anything in RTI" so i am going to completely ignore the whole "strobe" business. go match TAP state for anything
frgo has joined #amaranth-lang
<whitequark[cis]> the single SR is for usability reasons rather than optimization, you usually want the state retained past Update-DR
<whitequark[cis]> and having it shift under you in Shift-DR may have unintended consequences
<whitequark[cis]> like right now i'm looking at a doc for an ARM core where in Shift-DR the patterns you shift in appear on the actual memory bus. hope none of that has any side effects
frgo has quit [Ping timeout: 252 seconds]
<whitequark[cis]> hm, I guess we could implement a more compliant TAP by usng DDR buffers
<whitequark[cis]> s/usng/using/
frgo has joined #amaranth-lang
FFY00 has joined #amaranth-lang
d_olex has quit [Remote host closed the connection]
frgo_ has joined #amaranth-lang
d_olex has joined #amaranth-lang
frgo has quit [Ping timeout: 272 seconds]
zyp[m] has joined #amaranth-lang
<zyp[m]> I like the mux approach, it means you can have an IR value ignore the whole shift register business and mux in a synchronous serial interface instead: https://paste.jvnv.net/view/9Vefv
Chips4MakersakaS has joined #amaranth-lang
<Chips4MakersakaS> <whitequark[cis]> "do we care?" <- I do think you need to care as likely JTAG probes will sample TDO on rising edge so if you change TDO on rising edge the chance of having metastability in the probe is high.
<zyp[m]> can't you just have a second domain on the falling edge that clocks a buffer on TDO?
<zyp[m]> AIUI that's what the ECP5's JTAGG primitive does
<zyp[m]> DDR buffers sounds like too much latency
<whitequark[cis]> <Chips4MakersakaS> "I do think you need to care as..." <- you sample at the same time as changing TCK, which is fine
<whitequark[cis]> just need zero hold time requirement
<whitequark[cis]> <zyp[m]> "can't you just have a second..." <- it starts to become a pain at that point, although i guess now that we have local domains and a fully functional simulator, not so much
<Chips4MakersakaS> <whitequark[cis]> "just need zero hold time..." <- I don't think you can assume that existing JTAG probes are compliant with zero hold time requirements.
<whitequark[cis]> i actually wonder how many devices implement this correctly now
Guest66 has joined #amaranth-lang
Guest66 has quit [Client Quit]
frgo_ has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 260 seconds]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
<_whitenotifier-2> [amaranth-lang/rfcs] whitequark pushed 1 commit to main [+0/-0/±1] https://github.com/amaranth-lang/rfcs/compare/2979ebfbefe6...98c79d3f1b42
<_whitenotifier-2> [amaranth-lang/rfcs] whitequark 98c79d3 - RFC #2: Fix typo
<_whitenotifier-2> [amaranth-lang/amaranth-lang.github.io] whitequark pushed 1 commit to main [+0/-0/±4] https://github.com/amaranth-lang/amaranth-lang.github.io/compare/e7a385aceb25...ccaa874ad4d1
<_whitenotifier-2> [amaranth-lang/amaranth-lang.github.io] whitequark ccaa874 - Deploying to main from @ amaranth-lang/rfcs@98c79d3f1b42eb19546af14dcf9d837c02f97547 🚀
d_olex has quit [Read error: Connection reset by peer]
d_olex has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Read error: Connection reset by peer]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 244 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 245 seconds]
frgo has joined #amaranth-lang
frgo has quit [Remote host closed the connection]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 260 seconds]
jjsuperpower has joined #amaranth-lang
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 245 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 248 seconds]
BentoMon has quit [Ping timeout: 260 seconds]
jjsuperpower has quit [Ping timeout: 265 seconds]
frgo has joined #amaranth-lang
frgo has quit [Ping timeout: 244 seconds]
d_olex has quit [Ping timeout: 252 seconds]
frgo has joined #amaranth-lang
<_whitenotifier-2> [amaranth] whitequark opened pull request #1586: lib.wiring: make `wiring.connect` source locations accurate - https://github.com/amaranth-lang/amaranth/pull/1586
<_whitenotifier-2> [amaranth] whitequark opened pull request #1587: lib.wiring: make `wiring.connect` source locations accurate [0.5 backport] - https://github.com/amaranth-lang/amaranth/pull/1587
<whitequark[cis]> finally fixed source locations for wiring.connect so that driver conflict errors don't point into the nethers of the stdlib
frgo has quit [Ping timeout: 268 seconds]
<anuejn> very nice :)
<_whitenotifier-2> [amaranth] github-merge-queue[bot] created branch gh-readonly-queue/main/pr-1586-7664a00f4d3033e353b2f3a00802abb7403c0b68 - https://github.com/amaranth-lang/amaranth
<whitequark[cis]> sorry it took so long
<whitequark[cis]> but at least there's a backport (i really want this for glasgow as it finally migrates to streams proper)
<_whitenotifier-2> [amaranth-lang/amaranth] github-merge-queue[bot] pushed 1 commit to main [+0/-0/±1] https://github.com/amaranth-lang/amaranth/compare/7664a00f4d30...fd41201e2059
<_whitenotifier-2> [amaranth-lang/amaranth] whitequark fd41201 - lib.wiring: make `wiring.connect` source locations accurate.
<_whitenotifier-2> [amaranth] github-merge-queue[bot] deleted branch gh-readonly-queue/main/pr-1586-7664a00f4d3033e353b2f3a00802abb7403c0b68 - https://github.com/amaranth-lang/amaranth
<_whitenotifier-2> [amaranth] whitequark closed pull request #1586: lib.wiring: make `wiring.connect` source locations accurate - https://github.com/amaranth-lang/amaranth/pull/1586
<_whitenotifier-2> [amaranth] whitequark closed pull request #1587: lib.wiring: make `wiring.connect` source locations accurate [0.5 backport] - https://github.com/amaranth-lang/amaranth/pull/1587
<_whitenotifier-2> [amaranth-lang/amaranth-lang.github.io] whitequark pushed 1 commit to main [+0/-0/±35] https://github.com/amaranth-lang/amaranth-lang.github.io/compare/ccaa874ad4d1...b24925973ee0
<_whitenotifier-2> [amaranth-lang/amaranth-lang.github.io] github-merge-queue[bot] b249259 - Deploying to main from @ amaranth-lang/amaranth@fd41201e20592f412b15fd33fd29a9eb36899c69 🚀
lf_ has joined #amaranth-lang
lf has quit [Ping timeout: 276 seconds]