-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add StreamUtils #5
base: main
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isStreamAEnd
is misleading. isStreamAEnd
looks like streamA.isLast
, but infact it's not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
StreamUtils
includes 2 modules:mkStreamConcat
andmkStreamSplit