Open
Description
We've had ongoing problems with really understanding how to handle @external
cells and their ports. For example, #1034 tracks a slew of issues where we either keep attempting to add back @clk
and @reset
ports from these memories or remove them because they behave incorrectly for the synthesis backend.
I think the right thing to do here is completely getting rid of the magical readmemh
and writememh
functions we emit for the simulation backend and forcing ourselves to use the externalized signature of the top-level component directly.
Concretely, this would mean:
- The
externalize
pass runs for the default compilation pipeline - We change the test harness to somehow read and write in values for all the memories manually
I think this will provide clarity on issues like #1034 as well since it'll force us to use our designs in a that our users are having to.