-
Notifications
You must be signed in to change notification settings - Fork 69
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
[gen] oneloc tests with wrong post condition #706
Comments
Thanks @hugookeeffe for reporting this. I had a little thought about this and I think what you explained makes sense:
However, I am also wondering if we should also allow
I am not sure about the 2nd test, I don't know what the post-condition should look like, currently (before your patch), it would be:
which is satisfied by an execution which not forbidden. After you patch it would be
which is not ideal because what the shape we're testing is really a coRR. But at least, it's a test that is forbidden which is a step forward. |
Thanks for the comments @relokin ! With the second test you mentioned you aren't sure about the post-condition; is there anything in particular about what my patch would generate that you think is off? in regards to For example, with Does this make sense? |
We have found an issue when generating oneloc tests with one Po. These tests seem to be generating the post condition wrong.
In these tests it seems like the write value assigned to the final condition starts calculating between two communication edges, resulting in reads from the previous edge to give the wrong result.
E.g.:
In this example, the postcondition states that the second load reads from the write, even though it is part of Fre. One proposed solution would be to start writing values at the beginning of a communication edge chain (i.e. n.edge = com && n.prev.edge != com), ensuring that the values are properly assigned.
Whilst this seems to work for tests with a single non-communication node such as the one above, it is unclear if this logic still works for tests that have multiple non-communication nodes, e.g.:
The test above has the logic previously described assigned, however, I am uncertain whether this test is correct. Specifically, it is unclear what value the first load should be reading in the second thread.
I have made a patch illustrating this change here : (#705)
From this, I have two questions:
is the behaviour seen in the first test a bug, and if so does the linked patch fix this?
Is there a more fundamental issue with how oneloc is generating tests?
The text was updated successfully, but these errors were encountered: