diff options
author | Dan Ravensloft <dan.ravensloft@gmail.com> | 2020-06-11 22:25:04 +0100 |
---|---|---|
committer | Marcelina KoĆcielnicka <mwk@0x04.net> | 2020-07-05 23:28:59 +0200 |
commit | 09ecb9b2cf3ab76841d30712bf70dafc6d47ef67 (patch) | |
tree | 11db41357b31c25744d10ef150ce2efda94bd42d /techlibs/intel_alm/common/mem_sim.v | |
parent | af54b8bc6123f6e90a97268624b84ac270dc1879 (diff) | |
download | yosys-09ecb9b2cf3ab76841d30712bf70dafc6d47ef67.tar.gz yosys-09ecb9b2cf3ab76841d30712bf70dafc6d47ef67.tar.bz2 yosys-09ecb9b2cf3ab76841d30712bf70dafc6d47ef67.zip |
intel_alm: direct M10K instantiation
Diffstat (limited to 'techlibs/intel_alm/common/mem_sim.v')
-rw-r--r-- | techlibs/intel_alm/common/mem_sim.v | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/techlibs/intel_alm/common/mem_sim.v b/techlibs/intel_alm/common/mem_sim.v index f6f9ecb02..23ffc6c87 100644 --- a/techlibs/intel_alm/common/mem_sim.v +++ b/techlibs/intel_alm/common/mem_sim.v @@ -68,3 +68,37 @@ always @(posedge CLK1) assign B1DATA = mem[B1ADDR]; endmodule + +// The M10K +// -------- +// TODO + +module MISTRAL_M10K(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN); + +parameter CFG_ABITS = 10; +parameter CFG_DBITS = 10; + +input CLK1; +input [CFG_ABITS-1:0] A1ADDR, B1ADDR; +input [CFG_DBITS-1:0] A1DATA; +input A1EN, B1EN; +output reg [CFG_DBITS-1:0] B1DATA; + +reg [2**CFG_ABITS * CFG_DBITS - 1 : 0] mem = 0; + +specify + $setup(A1ADDR, posedge CLK1, 0); + $setup(A1DATA, posedge CLK1, 0); + + if (B1EN) (posedge CLK1 => (B1DATA : A1DATA)) = 0; +endspecify + +always @(posedge CLK1) begin + if (A1EN) + mem[(A1ADDR + 1) * CFG_DBITS - 1 : A1ADDR * CFG_DBITS] <= A1DATA; + + if (B1EN) + B1DATA <= mem[(B1ADDR + 1) * CFG_DBITS - 1 : B1ADDR * CFG_DBITS]; +end + +endmodule |