aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAndrew Waterman2018-07-03 15:45:00 -0700
committerJack Koenig2018-07-03 15:45:00 -0700
commitceac36d7ce1223078ca47bc097884532faacd7e1 (patch)
tree275334042d0a41d362108404ec89e18a357d4104 /scripts
parent2b405652a266114377816b8175ef9fad7d36ed14 (diff)
Improve code generation for smem wmode and [w]mask ports (#834)
[skip formal checks] LEC passes with Formality * Improve code generation for smem RW-port wmode port A common case for these port-enables is wen = valid & write ren = valid & !write which the RW-port transform currently turns into en = (valid & write) | (valid & !write) wmode = valid & write because it proved `wen` and `ren` are mutually exclusive via `write`. Synthesis tools can trivially optimize `en` to `valid`, so that's not a problem, but the wmode field can't be optimized if going into a black box. This PR instead sets `wmode` to whatever node was used to prove mutual exclusion, which is always a simpler expression. In this case: en = (valid & write) | (valid & !write) wmode = write * In RemoveCHIRRTL, infer mask relative to port definition Previously, it was inferred relative to the memory definition causing the mask condition to be redundantly conjoined with the enable signal. Also enable ReplSeqMems to ignore all ValidIfs (not just on Clocks) to improve QoR.
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions