aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-03-15 17:16:57 +0000
committerGitHub <noreply@github.com>2020-03-15 17:16:57 +0000
commit685392fed88db3df3dbc077f3d52fb0b4ae36c45 (patch)
treebc17453fc9765b02c53dbc4a2fcc8aef55fafb7a
parentacb341745d436987ad764c9198ff0c6ab63c572c (diff)
parentacd9eeef7c85f1bd72f42d86bb634769556a04c6 (diff)
downloadyosys-685392fed88db3df3dbc077f3d52fb0b4ae36c45.tar.gz
yosys-685392fed88db3df3dbc077f3d52fb0b4ae36c45.tar.bz2
yosys-685392fed88db3df3dbc077f3d52fb0b4ae36c45.zip
Merge pull request #1773 from smunaut/fix_spram_model
ice40: Fix SPRAM model to keep data stable if chipselect is low
-rw-r--r--techlibs/ice40/cells_sim.v13
1 files changed, 8 insertions, 5 deletions
diff --git a/techlibs/ice40/cells_sim.v b/techlibs/ice40/cells_sim.v
index 17fe2ec99..aa1d7aa86 100644
--- a/techlibs/ice40/cells_sim.v
+++ b/techlibs/ice40/cells_sim.v
@@ -2350,16 +2350,19 @@ module SB_SPRAM256KA (
if (off) begin
DATAOUT <= 0;
end else
- if (CHIPSELECT && !STANDBY && !WREN) begin
- DATAOUT <= mem[ADDRESS];
- end else begin
- if (CHIPSELECT && !STANDBY && WREN) begin
+ if (STANDBY) begin
+ DATAOUT <= 'bx;
+ end else
+ if (CHIPSELECT) begin
+ if (!WREN) begin
+ DATAOUT <= mem[ADDRESS];
+ end else begin
if (MASKWREN[0]) mem[ADDRESS][ 3: 0] = DATAIN[ 3: 0];
if (MASKWREN[1]) mem[ADDRESS][ 7: 4] = DATAIN[ 7: 4];
if (MASKWREN[2]) mem[ADDRESS][11: 8] = DATAIN[11: 8];
if (MASKWREN[3]) mem[ADDRESS][15:12] = DATAIN[15:12];
+ DATAOUT <= 'bx;
end
- DATAOUT <= 'bx;
end
end
`endif