Skip to content
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

Change "done" mechanism to be tolerant to Single Event Upsets. #17

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Lynx005F
Copy link

@Lynx005F Lynx005F commented Jul 8, 2024

This changes how the true_done flag is calculated:

  • If the internal is_working register experiences a single event upset, then currently true_done might never be set and as such the FSM can stall the accelerator. At the same time true_done can not just be done from the input since that might be set on reset.
    To solve this, make true_done assert on the rising edge of done input.
    (A fault-tolerant accelerator should continuously asserts done and then has the guarantee that this will eventually be forwarded).
  • The pulsed true_done output itself might also experience a single event upset in just the cycle where it is asserted and thus done signal is destroyed. To mitigate this extend the above mechanism to assert the output for two cycles at minimum.

This does not add any protection in the other direction e.g. an SEU causing an abort when the accelerator is in fact doing fine.

@Lynx005F Lynx005F force-pushed the itemm/fault_tolerant_fsm branch from ef1663b to 08fffa0 Compare July 8, 2024 08:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant