diff options
author | Marcelina KoĆcielnicka <mwk@0x04.net> | 2021-05-25 15:17:29 +0200 |
---|---|---|
committer | Marcelina KoĆcielnicka <mwk@0x04.net> | 2021-05-25 15:59:41 +0200 |
commit | 5628f5a88fa49c126af0149e302a8292229ab9df (patch) | |
tree | 302ebeeb17d5ad6ca87bb145d885fdeb4c0dd25a /tests/opt | |
parent | 4858721637fc5d6ae6d7e0fb0489e0cec8bb388b (diff) | |
download | yosys-5628f5a88fa49c126af0149e302a8292229ab9df.tar.gz yosys-5628f5a88fa49c126af0149e302a8292229ab9df.tar.bz2 yosys-5628f5a88fa49c126af0149e302a8292229ab9df.zip |
opt_mem_feedback: Respect write port priority.
Diffstat (limited to 'tests/opt')
-rw-r--r-- | tests/opt/opt_mem_feedback.ys | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/opt/opt_mem_feedback.ys b/tests/opt/opt_mem_feedback.ys index 6a68921c3..56078ec27 100644 --- a/tests/opt/opt_mem_feedback.ys +++ b/tests/opt/opt_mem_feedback.ys @@ -140,3 +140,50 @@ memory_map design -save postopt equiv_opt -assert -run prepare: : + + + +design -reset + +# Tricky case: legit feedback path, but priority needs to be preserved. + +read_verilog << EOT + +module top(...); + +input clk; +input sel; +input [3:0] wa1; +input [3:0] wa2; +input [15:0] wd1; +input [3:0] ra; +output [15:0] rd; + +reg [15:0] mem [0:15]; + +always @(posedge clk) begin + mem[wa1] <= sel ? wd1 : mem[wa1]; + mem[wa2] <= mem[wa2]; +end + +assign rd = mem[ra]; + +endmodule + +EOT + +hierarchy -auto-top +proc +opt_clean + +design -save start +memory_map +design -save preopt + +design -load start +opt_mem_feedback +select -assert-count 1 t:$memrd +memory_map +design -save postopt + +equiv_opt -assert -run prepare: : |