-
Notifications
You must be signed in to change notification settings - Fork 174
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
Memory port transparency model is flawed #216
Comments
Comment by whitequark According to Clifford, the |
Comment by whitequark According to UG473, |
Comment by whitequark According to @nakengelhardt, a read/write collision between asynchronous ports always results in undefined data being read. Apparently, using the Based on this and m-labs/nmigen#216 (comment), the current semantics actually seems fine (if confusing), and so #172 is likely caused by something else. |
Comment by whitequark Reopening per discussion in YosysHQ/yosys#1390. |
Comment by whitequark After careful consideration, it is my opinion that |
Comment by whitequark After discussion with Yosys maintainers, the most likely way this will be solved upstream is by (a) keeping This is a less invasive solution than the |
If there a way to say "I'm not going to read and write in the same cycle ever, so do what's best given the platform"? |
No. Yosys doesn't support it. |
Yosys now supports a much better memory port transparency model. This issue will be solved by amaranth-lang/rfcs#45. |
Issue by whitequark
Friday Sep 20, 2019 at 18:04 GMT
Originally opened as m-labs/nmigen#216
Investigating #172, it appears that there are two major issues with the way port transparency is handled.
I propose to remove
transparent
completely, replacing it with atransparent_for=[write_ports]
argument. The default (when this argument is not specified) would be "transparent for no write ports" for synchronous read ports, and "transparent for all ports" for asynchronous read ports. It would not be possible to specify a non-default value for an asynchronous read port.The lowering to RTLIL would be the same as today, with the selected write port ignored (beyond checking that the domain is compatible),
The text was updated successfully, but these errors were encountered: