aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/intel_alm/common/mem_sim.v
diff options
context:
space:
mode:
authorDan Ravensloft <dan.ravensloft@gmail.com>2020-06-11 22:25:04 +0100
committerMarcelina Koƛcielnicka <mwk@0x04.net>2020-07-05 23:28:59 +0200
commit09ecb9b2cf3ab76841d30712bf70dafc6d47ef67 (patch)
tree11db41357b31c25744d10ef150ce2efda94bd42d /techlibs/intel_alm/common/mem_sim.v
parentaf54b8bc6123f6e90a97268624b84ac270dc1879 (diff)
downloadyosys-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.v34
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