-
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
Exn #71
base: main
Are you sure you want to change the base?
Conversation
…that every memory used in an excepting pipeline is Locked (this can be weakened to: any memory which is _written_ to, or has reservations made in the main body of the pipeline must be locked)
…commit and exception blocks
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.
@yy665 See my comments for required changes.
|
||
val new_m = addExnVars(m) | ||
new_m.name.typ = m.name.typ | ||
print(new_m.body) |
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.
Delete this print statement before merging.
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.
addExnVars should probably just take a Command
and return a new Command
and only be applied to m.body
This lets us avoid making like 3 new ModuleDef
s.
m.copy(body = CSeq(IStageClear(), convertPrimitives(m.body)), commit_blk = m.commit_blk, except_blk = m.except_blk) | ||
} | ||
|
||
def convertPrimitives(c: Command): Command = { |
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.
Maybe change the name or at least add a javadoc style comment - it's not really clear what this is doing from the name. (It's converting exception call arguments and inserting stage kill commands, right?)
verify(s, pc + 1); | ||
} | ||
} | ||
} |
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.
adding in stage separators (with nothing between them) can be a way to ensure we have more speculative or excepting threads that need to be killed so that the tests are meaningful.
} | ||
} | ||
--- | ||
commit: |
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.
this commit block is kinda early - normally we would want it to be the final stage. I don't think we're testing anything interesting in this example (other than having more code than the little tests).
We should probably have the commit block be only the final stage (so that there are rf.write and dmem.write calls before the commit block that actually need to be aborted)
resolve all comments and fix bugs, add ehr
fix tests
move to ubuntu 22
This is tracking the Exception feature as documented by the
docs/exceptions.md
file.