Skip to content

Commit 4fb92f4

Browse files
authored
Fix write logic in SP model (#14)
The simulation model for SP memories wasn't describing a functional memory as on a write it was only setting bits, never clearing them. Fix the write statement. The bitwise OR operation may have been a remnant of a write mask. Before commit 0fb7f8c ("Re-factored fakeram to support sp/dp ram/regfile") there was a commented-out line: # V_file.write(' mem[addr_in] <= (wd_in & w_mask_in) | (mem[addr_in] & ~w_mask_in);\n') Signed-off-by: Martin Povišer <povik@cutebit.org>
1 parent 63706f6 commit 4fb92f4

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

test/au/spsram_256x256.au

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5008,7 +5008,7 @@ module spsram_256x256
50085008
end
50095009
else if (we_in)
50105010
begin
5011-
mem[addr_in] <= (wd_in) | (mem[addr_in]);
5011+
mem[addr_in] <= wd_in;
50125012
end
50135013
// read
50145014
rd_out <= mem[addr_in];

test/au/spsram_256x32.au

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@ module spsram_256x32
867867
end
868868
else if (we_in)
869869
begin
870-
mem[addr_in] <= (wd_in) | (mem[addr_in]);
870+
mem[addr_in] <= wd_in;
871871
end
872872
// read
873873
rd_out <= mem[addr_in];

test/au/spsram_256x32_h.au

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,7 +874,7 @@ module spsram_256x32_h
874874
end
875875
else if (we_in)
876876
begin
877-
mem[addr_in] <= (wd_in) | (mem[addr_in]);
877+
mem[addr_in] <= wd_in;
878878
end
879879
// read
880880
rd_out <= mem[addr_in];

utils/single_port_ram_verilog_exporter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def export_module(self, out_fh):
6060
out_fh.write(f" else if ({we_pin})\n")
6161
out_fh.write(" begin\n")
6262
out_fh.write(
63-
f" mem[{addr_bus}] <= ({din_bus}) | (mem[{addr_bus}]);\n"
63+
f" mem[{addr_bus}] <= {din_bus};\n"
6464
)
6565
out_fh.write(" end\n")
6666
out_fh.write(" // read\n")

0 commit comments

Comments
 (0)