<whitequark>
the problem with the indirect API is that with it, you can't re-record or erase the trace until the kernel finishes, since the kernel captures a pointer
<whitequark>
indirect being trace/replay
<whitequark>
with just replay taking a name, this isn't an issue
<whitequark>
ah, two more questions
<whitequark>
3. did you eventually connect the DMA core such that analyzer records DMA transactions?
<whitequark>
4. are the records big or little endian?
_florent__ has joined #m-labs
froggyto1d has joined #m-labs
_florent_ has quit [Ping timeout: 252 seconds]
froggytoad has quit [Ping timeout: 252 seconds]
_florent__ is now known as _florent_
cyrozap has quit [Read error: Connection reset by peer]
cyrozap has joined #m-labs
cyrozap has quit [Remote host closed the connection]
cyrozap has joined #m-labs
<whitequark>
sb0: ok so I'm going to start implementing playback once you can answer this
rohitksingh has joined #m-labs
Guest42326 has joined #m-labs
Guest42326 has left #m-labs [#m-labs]
hedgeberg is now known as hedgeberg|away
kilae has joined #m-labs
<sb0>
whitequark, I think the code should always wait on DMA transfers
<sb0>
3. no, I'm busy with moninj right now
<sb0>
I didn't implement stopping DMA (and this is somewhat annoying to implement)
<sb0>
whitequark, you should have the DMA driver always wait on the end of the transfer, I don't like this wait() API
<sb0>
as for the record format, it's somewhat tricky and it's been a while since I wrote that, you should read the source
<sb0>
look at the encode_record() function in the test bench
<sb0>
(gateware/test/rtio/test_dma.py)
<sb0>
whitequark, for stopping DMA, a sensible CPU interface would be to write 0 to the enable register, and wait until it reads back 0
<sb0>
right now the core will ignore the second write and continue until it has written the whole sequence, but then the gateware can be modified later to interrupt the transfer asap when that happens
<sb0>
whitequark, patch line 353 of dma.py "If(self.enable.re," -> "If(self.enable.re & self.enable.r," to fix the race condition when doing that
<sb0>
otherwise writing 0 to enable may restart the core if it finishes at the wrong moment