Skip to content

How to configure asynchronous reset #2098

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

Open
2 tasks done
AD738560581 opened this issue Oct 25, 2024 · 5 comments · May be fixed by #2248
Open
2 tasks done

How to configure asynchronous reset #2098

AD738560581 opened this issue Oct 25, 2024 · 5 comments · May be fixed by #2248

Comments

@AD738560581
Copy link

Background Work

Feature Description

Hello, I have encountered some questions and would like to seek advice. At present, the RTL I generate under chipyard is synchronously reset. I hope to generate an asynchronous reset system. Are there any configuration options that can be modified?

Motivating Example

Hello, I have encountered some questions and would like to seek advice. At present, the RTL I generate under chipyard is synchronously reset. I hope to generate an asynchronous reset system. Are there any configuration options that can be modified?

@jerryz123
Copy link
Contributor

The reset pin into the ChipTop is asynchronous w.r.t. any other clock inputs. A reset synchronizer sync's that reset to the clock for the digital logic.

@AD738560581
Copy link
Author

Thank you for your reply, but if I wish to remove the synchronization tool for chiptop. Because I hope to ultimately obtain a digital top system with asynchronous reset.
I added the option "with RequireAsyncReset" in the digital configuration, but there were a series of errors, such as "reset network reset simultaneously connected to async and sync". Do you have any suggestions to solve this problem?

@jerryz123
Copy link
Contributor

This isn't well supported anymore. To support the complexity of the clocking and reset network for a multi-clock-domain SoC, it was necessary to move to global synchronous reset. Reverting that would be a very invasive change.

Could you describe why you need asynchronous reset for all the digital logic?

@AD738560581
Copy link
Author

Because our project requires this project as a sub IP, but we only use the Digital level
However, other IPs are asynchronous resets, and we hope to achieve global asynchronous resets, including Digital top

@AD738560581
Copy link
Author

Also, may I ask if I can generate a system with Digital as the top-level separately

tymcauley added a commit to tymcauley/chipyard that referenced this issue May 1, 2025
Users can now use the `WithAsyncClockGroups` config fragment to coerce
certain clock groups to use an asynchronous reset. Note that users will
likely also want to use the new `WithAsyncResetRocketSubsystem` config
fragment, which ensures the Rocket Chip Debug Module also uses an async
reset. Omitting this will lead to signals being driven by both sync and
async resets, which will cause `firtool` compilation errors.

The new `AsyncResetRocketConfig` config demonstrates this. Note that it
doesn't use async reset for the Rocket Tile itself (just the uncore), as
the Rocket Tile doesn't support async resets (it's hard-coded to use
synchronous resets).

Resolves ucb-bar#2098.
@tymcauley tymcauley linked a pull request May 1, 2025 that will close this issue
16 tasks
tymcauley added a commit to tymcauley/chipyard that referenced this issue May 1, 2025
Users can now use the `WithAsyncClockGroups` config fragment to coerce
certain clock groups to use an asynchronous reset. Note that users will
likely also want to use the new `WithAsyncResetRocketSubsystem` config
fragment, which ensures the Rocket Chip Debug Module also uses an async
reset. Omitting this will lead to signals being driven by both sync and
async resets, which will cause `firtool` compilation errors.

The new `AsyncResetRocketConfig` config demonstrates this. Note that it
doesn't use async reset for the Rocket Tile itself (just the uncore), as
the Rocket Tile doesn't support async resets (it's hard-coded to use
synchronous resets).

Resolves ucb-bar#2098.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants