mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 00:55:32 +00:00
opt_mem_feedback: Respect write port priority.
This commit is contained in:
parent
4858721637
commit
5628f5a88f
2 changed files with 62 additions and 0 deletions
|
@ -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: :
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue