00:17
be65da6e451238ff has quit [Ping timeout: 260 seconds]
00:34
redstarcomrade has quit [Read error: Connection reset by peer]
00:45
isabelburgos[m] has joined #glasgow
00:45
<
isabelburgos[m] >
It’s just scan control so there’s not really a way to break a SEM by scanning too fast or anything
00:47
<
SnoopJ >
if we're assuming "these questions will
*only* be asked about the scanning code", I guess?
02:32
jn has quit [Ping timeout: 268 seconds]
02:33
jn has joined #glasgow
02:59
redstarcomrade has joined #glasgow
02:59
redstarcomrade has quit [Changing host]
02:59
redstarcomrade has joined #glasgow
04:28
redstarcomrade has quit [Read error: Connection reset by peer]
05:59
galibert[m] has quit [Quit: Idle timeout reached: 172800s]
11:50
f_ has quit [Ping timeout: 252 seconds]
12:16
f_ has joined #glasgow
12:35
redstarcomrade has joined #glasgow
12:35
redstarcomrade has quit [Changing host]
12:35
redstarcomrade has joined #glasgow
12:46
galibert[m] has joined #glasgow
12:46
<
galibert[m] >
I: g.hardware.build_plan: build: ERROR: Max frequency for clock 'applet0_clk': 46.35 MHz (FAIL at 48.00 MHz)
12:52
<
whitequark[cis] >
probably need a register stage somewhere
12:52
<
whitequark[cis] >
post the code?
12:53
<
galibert[m] >
I'm kinda vibe-coding it but without a LLM :-)
12:54
<
galibert[m] >
I measured that lr cycled every 128 clk edges, so I'm trying to send 128-bits frames of datam aligned with lr
13:11
<
whitequark[cis] >
this is probably the 25-bit count counter
13:11
<
whitequark[cis] >
on ice40, i do not recommend making counters much larger than 16 bits
13:11
<
whitequark[cis] >
20 is about the upper edge of what's okay
13:12
<
whitequark[cis] >
there's a class in glasgow.gateware for making big counters
13:12
<
galibert[m] >
just fyi, it was working-but-not-going-what-I-want when m.d.sync += srb.eq(Cat(srb[8:], C(0, 8))) had the Cat parameters swapped
13:12
<
whitequark[cis] >
glasgow.gateware.accumulator
13:12
redstarcomrade has quit [Read error: Connection reset by peer]
13:12
<
galibert[m] >
but lemme just remove the counter, it's irrelevant
13:13
<
galibert[m] >
same error with the counter removed
13:13
<
whitequark[cis] >
interesting. post the complete log?
13:14
<
whitequark[cis] >
btw you don't need the [] when adding multiple statements to m.d.domain +=
13:15
<
whitequark[cis] >
(and the led stuff i usually do as leds = Cat(platform.request("led", n).o for n in range(5)); m.d.comb += leds.eq(count[18:]))
13:15
<
whitequark[cis] >
but this isn't important, just saves you some typing
13:17
<
whitequark[cis] >
ok, the key information is in `Critical path report for clock 'applet0_clk' (posedge -> posedge):`
13:17
<
whitequark[cis] >
you have a gigantic carry chain somewhere
13:18
<
galibert[m] >
I have two 128-bits shift registers, one bit-per-bit, one byte-per-byte
13:18
<
whitequark[cis] >
sr + 1 creates a 128-bit adder
13:18
<
galibert[m] >
the fuck?
13:18
<
galibert[m] >
that's 100% a bug
13:18
<
whitequark[cis] >
i mean... you wrote it...
13:18
<
galibert[m] >
what the hell did I have in mind
13:19
<
galibert[m] >
Must thanks for fiding it
13:19
<
galibert[m] >
* Much thanks for finding it
13:19
<
whitequark[cis] >
anyway, this is actually much better performance than what i recall. hm. i might need to reevaluate my guidelines for how big a counter is reasonable
13:19
<
whitequark[cis] >
i definitely had some cases where a 32-bit counter broke some code
13:19
<
galibert[m] >
yeah, 24 worked perfectly well
13:20
<
whitequark[cis] >
it might be more of a problem with bigger designs
13:20
<
galibert[m] >
possibly yeah
13:23
<
galibert[m] >
nice, it kinda works
13:23
<
galibert[m] >
it's unstable, damnit
15:08
be65da6e451238ff has joined #glasgow
15:34
<
galibert[m] >
hmmm, the message sending over the stream is unreliable
15:36
<
galibert[m] >
there's a |uniq there so it only prints when the packet changes
15:40
anubis has joined #glasgow
15:43
<
whitequark[cis] >
are you checking for o_stream.ready?
16:27
<
galibert[m] >
No, didn't know I had to
16:27
<
galibert[m] >
lemme add that
16:27
<
galibert[m] >
not enough
16:28
<
galibert[m] >
valid needs to be 1 for one sync or it needs more?
16:30
be65da6e451238ff has quit [Quit: WeeChat 4.6.3]
16:30
mei[m] has joined #glasgow
16:30
<
mei[m] >
every clock cycle when valid and ready are both 1, one byte is transferred, iirc
16:30
<
galibert[m] >
nice, easy semantics
16:34
<
mei[m] >
(i believe i read this in a draft of an rfc, so take it with a grain of salt)
16:34
<
galibert[m] >
it reminds me of something too
16:35
<
galibert[m] >
pretty sure I read the amaranth rfc at the time
18:02
<
galibert[m] >
122% cpu, I'm starting to have a feeling that python can't handle the bandwidth
18:03
<
galibert[m] >
5.6Mb + overhead
18:03
<
galibert[m] >
706k bytes/s
18:31
anubis has quit [Remote host closed the connection]
18:32
anubis has joined #glasgow
18:32
anubis has quit [Remote host closed the connection]
19:33
anubis has joined #glasgow
19:40
anubis_ has joined #glasgow
19:40
anubis has quit [Ping timeout: 272 seconds]
19:50
Lord_Nightmare has joined #glasgow
20:12
DragoonAethis has quit [Quit: hej-hej!]
20:13
DragoonAethis has joined #glasgow
20:30
anubis_ has quit [Ping timeout: 272 seconds]
21:28
balrog has joined #glasgow
21:29
balrog_ has quit [Ping timeout: 276 seconds]
22:10
redstarcomrade has joined #glasgow
22:10
redstarcomrade has quit [Changing host]
22:10
redstarcomrade has joined #glasgow