Conversation
Fix StreamUtils
src/StreamUtils.bsv
Outdated
| isStreamAEnd <= False; | ||
| end | ||
| // the last StreamA + the first StreamB | ||
| else if (streamA.isLast && prepareFifoB.notEmpty) begin |
There was a problem hiding this comment.
infact, the condition in this else if statement is not necessary. the bsv has implicit conditions, so if the prepareFifoB is empty, this else if branch will not be executed.
but you write the condition here is good for code readability, you can keep the condition here, but this lead to another problem: this if statement has other possiblity that is not covered. you should add a else branch, and add some code there, maybe only some comment like "in all other condition, wait for stream B to be ready"
There was a problem hiding this comment.
Yes, the condition here is not necessary but good for understanding. I have added a else branch where just waiting for streamB in this clock.
src/StreamUtils.bsv
Outdated
| hasLastRemainReg <= streamB.isLast; | ||
| remainStreamReg <= remainStream; | ||
| remainBytePtrReg <= remainBytePtr; | ||
| isStreamAEnd <= !streamB.isLast; |
There was a problem hiding this comment.
isStreamAEnd is misleading. isStreamAEnd looks like streamA.isLast, but infact it's not.
There was a problem hiding this comment.
isStreamAEnd means streamA.isLast, but it need to be reset when the whole concat ends, i.e. streamB.isLast asserts. The codes here are misleading and I have modified for better understanding.
test StreamShift
StreamUtilsincludes 2 modules:mkStreamConcatandmkStreamSplit