-
Notifications
You must be signed in to change notification settings - Fork 263
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
Question about axi_stream_protocol_checker rule 5. #798
Comments
I'd say it's an oversight. |
The rules are created from ARM's own document "AMBA® 4 AXI4™, AXI4-Lite™, and |
I think the problem here, and the reason why ARM made the rule the way they did, is that I see that the suggested change is a useful extension but it should be made an optional extension, Also note that there can be null bytes if |
Can you describe how you imagined this to work some more? I was looking for an existing component that implements an extension or something similar but couldn't find anything.
https://developer.arm.com/documentation/ihi0051/a/Interface-Signals/Byte-qualifiers/TKEEP-and-TSTRB-combinations seems to indicate that only |
I'm thinking that I think the default value for a parameter like
You're right, the combination I was referring to is called a position byte. However, that is also a byte containing no information. |
I updated PR #799, it would be great if you could take a look.
I don't quite understand what the spec is saying for this case. My understanding was that |
My understanding is the opposite. For example https://developer.arm.com/documentation/ihi0051/a/Interface-Signals/Byte-qualifiers/TSTRB-qualification?lang=en reads
The "When TSTRB is deasserted LOW it indicates that the associated byte does not contain valid information and is a position byte." part implies to me that it is perfectly legal for an AXI-Stream master to drive a position byte with e.g. Extending the check to allow undefined position bytes as well might make the name |
IMO, the naming in the spec is not very intuitive, but if I look at in the context of a resizer (32->8) for example then this makes sense to me:
The output of the resizer can (should) be:
So like you said, the data value for a position byte doesn't matter, but it cannot be removed.
Thanks for taking a look. I'll try to update it this week. |
Agreed, but just to be clear I do believe your example still needs a
|
@Nik-Sch I am also very interested in it. I have implemented workarounds around all protocol checker instances in order to solve it in my code base. But it would be nicer to have it merge here in VUnit officially. I have reviewed #799 before and I looked through it again now, and everything looks good to me. IMHO, ready to merge. |
Merged #799 |
Rule 5 of the AXI stream protocol checker ensures that
tdata
is valid whentvalid
is asserted.I am wondering if that should also be the case when not all bytes are valid (i.e.
tkeep /= "1111"
).For example the following trace results in an error:
# 62490000 ps - master:rule 5 - ERROR - Not unknown check failed for tdata when tvalid is high - Got ----_----_----_----_----_----_1111_0000.
The workaround is trivial, but I like setting unused byte lanes to '-' to easily see downstream issues.
Is the current behavior of the checker intentional or just an oversight?
The text was updated successfully, but these errors were encountered: