-
Notifications
You must be signed in to change notification settings - Fork 2
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
Investigate asynchronous and active-low reset #63
Comments
https://www.embedded.com/asynchronous-reset-synchronization-and-distribution-challenges-and-solutions talks a bit about the down-sides of async reset, like the metastability when reset is deasserted. |
Alex uses synchronous. The more I read the less I think we should change this right now. It would likely help timing as some combinatorial elements would be removed from the data path, but unsure to what cost. |
Reading more, what Intel suggests is a synchronized synchronous reset scheme where the dessert is synchronized to the clock. See "Example 12–11. Verilog Code for Synchronized Asynchronous Reset" from the Quartus handbook. Also see Zip's discussion on proving the reset behavior here: https://zipcpu.com/formal/2018/04/12/areset.html |
Looking at lowRISC it seems their reset manager emits dual-rank synchronized resets, but the IPs are made to consume asynchronous resets (without any synchronizations done). I guess that's fine if you're sure the reset that is connected is a good one and actually synchronized (which you know if you make the reset controller), then you could do this trick to move the reset logic from the data path. |
Anyway, I feel that insanity might be down this path and this is not currently an issue - keeping this bug open for potential future work but right now I'll stick to synchronous resets, if for nothing else because they are metastability safer. |
@olofk "helpfully" provided me with even more reading material. https://olofkindgren.blogspot.com/2017/11/resetting-reset-handling.html To his defense that's a really cool observation that as he mentions I have never seen talked about before. Might be worth investigating how the reset network is actually synthesized... some day. |
From the LowRISC style guide it is apparent that they are using asynchronous reset and active-low.
Thinking about it, that does make a whole lot of sense, and might mean that reset in Qsys do not need to be associated with clocks anymore? That would help the design to be less complex.
They use sections like these:
We should:
The text was updated successfully, but these errors were encountered: