-
Notifications
You must be signed in to change notification settings - Fork 918
[dv/push_pull] Make sure that ack_o is always reset #28812
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
base: master
Are you sure you want to change the base?
Conversation
marnovandermaas
left a comment
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.
I think this looks reasonable to me. Just for my understanding can you point me to the equivalent race check for the valid/ready interface? Also, what task is the one that is racing against the drive task?
martin-velay
left a comment
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.
It sounds like a good catch, thanks for the fix!
Sure: opentitan/hw/dv/sv/push_pull_agent/push_pull_driver_lib.sv Lines 136 to 139 in e65c354
Maybe we can update the comment there, I think it says the same, just in a bit different words. As for the task, I am not sure where the "reset_task" in question resides, maybe someone from the DV team can comment? |
|
This I cannot see the implementation for And at some point we plan to improve the DV base library to be more "resetable" and probably change slightly the logic. |
marnovandermaas
left a comment
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.
Thanks for the explanation, looks good to me.
89966f7 to
8085ffe
Compare
|
Thanks for your feedback. I now added handling of this case to all four flavors of this protocol and reworded the pre-existing comment. @rswarbrick can you please have a look and get it merged, if you don't see any issues? |
|
It looks good to me, thanks for the latest changes! |
This commit ensures that the ack_o signal is de-asserted when the interface is reset under all conditions. A similar condition already exists for the valid/ready mode of the interface. Signed-off-by: Florian Glaser <[email protected]>
8085ffe to
b3a7d95
Compare
This PR addresses a rare issue where
ack_oof the push_pull_interface could get stuck high when asserted at the exact same time that the interface is reset. For the valid/ready flavor of the interface, a similar mechanism is already there.