-
-
Notifications
You must be signed in to change notification settings - Fork 303
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
WishboneSlaveFactory - doWrite is never called in pipelined mode #1310
Comments
Versions: |
Thanks for the extensive report! I had a look at the Wishbone spec and I'd also say that this looks wrong - I'll have a bit more of a look tomorrow though because I've not looked at wishbone in a long time. |
Yes, I can confirm that this is wrong, I was curious why our tests did not pick this up... looks to me like they were not finished back in 2018, they don't verify that the register was really written... |
It may be totally possible that I am completely and utterly wrong...
but I have been playing with WishboneSlaveFactory and and noticed some odd behaviour:
When driving WishboneSlaveFactory from a master in "classic" mode everything works fine.
However, when I try a "single write operation" in Wishbone B4 pipelined mode with a cycle according to specification, the data is never written to the register. In fact the internal signal "askWrite" is fired, but the signal "doWrite" is never activated.
Wishbone specification B4:
If I extend the STB-Pulse one more cycle - which is not according to the specification - "doWrite" is called and the register is successfully written:
The problem seems to be, that SpinalHDL Lib's wishbone implementation also expects STB to be high in the cycle when ACK is received. However, the specification requires STB only to be high in the cycle before ACK when in pipelined mode:
My WB Slave test code:
I hope, I have found a valid issue and not wasted your time.
The text was updated successfully, but these errors were encountered: