mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
ice40: Fix SPRAM model to keep data stable if chipselect is low
According to the official simulation model, and also cross-checked on real hardware, the data output of the SPRAM when chipselect is low is kept stable. It doesn't go undefined. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
acb341745d
commit
acd9eeef7c
|
@ -2350,16 +2350,19 @@ module SB_SPRAM256KA (
|
||||||
if (off) begin
|
if (off) begin
|
||||||
DATAOUT <= 0;
|
DATAOUT <= 0;
|
||||||
end else
|
end else
|
||||||
if (CHIPSELECT && !STANDBY && !WREN) begin
|
if (STANDBY) begin
|
||||||
DATAOUT <= mem[ADDRESS];
|
DATAOUT <= 'bx;
|
||||||
end else begin
|
end else
|
||||||
if (CHIPSELECT && !STANDBY && WREN) begin
|
if (CHIPSELECT) begin
|
||||||
|
if (!WREN) begin
|
||||||
|
DATAOUT <= mem[ADDRESS];
|
||||||
|
end else begin
|
||||||
if (MASKWREN[0]) mem[ADDRESS][ 3: 0] = DATAIN[ 3: 0];
|
if (MASKWREN[0]) mem[ADDRESS][ 3: 0] = DATAIN[ 3: 0];
|
||||||
if (MASKWREN[1]) mem[ADDRESS][ 7: 4] = DATAIN[ 7: 4];
|
if (MASKWREN[1]) mem[ADDRESS][ 7: 4] = DATAIN[ 7: 4];
|
||||||
if (MASKWREN[2]) mem[ADDRESS][11: 8] = DATAIN[11: 8];
|
if (MASKWREN[2]) mem[ADDRESS][11: 8] = DATAIN[11: 8];
|
||||||
if (MASKWREN[3]) mem[ADDRESS][15:12] = DATAIN[15:12];
|
if (MASKWREN[3]) mem[ADDRESS][15:12] = DATAIN[15:12];
|
||||||
|
DATAOUT <= 'bx;
|
||||||
end
|
end
|
||||||
DATAOUT <= 'bx;
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
`endif
|
`endif
|
||||||
|
|
Loading…
Reference in a new issue