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.
We've had ongoing problems with really understanding how to handle
@externalcells and their ports. For example, #1034 tracks a slew of issues where we either keep attempting to add back@clkand@resetports 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
readmemhandwritememhfunctions we emit for the simulation backend and forcing ourselves to use the externalized signature of the top-level component directly.Concretely, this would mean:
externalizepass runs for the default compilation pipelineI 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.