Revert "intel_alm: direct M10K instantiation"
authorLofty <dan.ravensloft@gmail.com>
Mon, 13 Jul 2020 13:08:52 +0000 (14:08 +0100)
committerMarcelina Koƛcielnicka <mwk@0x04.net>
Mon, 13 Jul 2020 16:05:38 +0000 (18:05 +0200)
This reverts commit 09ecb9b2cf3ab76841d30712bf70dafc6d47ef67.

techlibs/intel_alm/Makefile.inc
techlibs/intel_alm/common/bram_m10k.txt
techlibs/intel_alm/common/bram_m10k_map.v [new file with mode: 0644]
techlibs/intel_alm/common/megafunction_bb.v
techlibs/intel_alm/common/mem_sim.v
techlibs/intel_alm/common/quartus_rename.v
techlibs/intel_alm/synth_intel_alm.cc
tests/arch/intel_alm/blockram.ys [deleted file]

index e36c81c0ec49a489df13ddd80b52e6bf44d3fe57..552f00c658eaabc001ef556f0dce9e8d3246243a 100644 (file)
@@ -15,9 +15,9 @@ $(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/ds
 $(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/mem_sim.v))
 
 # RAM
-$(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/bram_m10k.txt))
-$(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/bram_m20k.txt))
-$(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/bram_m20k_map.v))
+bramtypes := m10k m20k
+$(foreach bramtype, $(bramtypes), $(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/bram_$(bramtype).txt)))
+$(foreach bramtype, $(bramtypes), $(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/bram_$(bramtype)_map.v)))
 $(eval $(call add_share_file,share/intel_alm/common,techlibs/intel_alm/common/lutram_mlab.txt))
 
 # Miscellaneous
index e9355fe2cc9e4731ec47f021c6f36dae6616aaf4..837e3a3303272a0b5f35f0f37069d0ad3478dd7b 100644 (file)
@@ -1,4 +1,4 @@
-bram MISTRAL_M10K
+bram __MISTRAL_M10K_SDP
     init   0   # TODO: Re-enable when I figure out how BRAM init works
     abits 13   @D8192x1
     dbits  1   @D8192x1
@@ -27,7 +27,7 @@ bram MISTRAL_M10K
 endbram
 
 
-match MISTRAL_M10K
+match __MISTRAL_M10K_SDP
     min efficiency 5
     make_transp
 endmatch
diff --git a/techlibs/intel_alm/common/bram_m10k_map.v b/techlibs/intel_alm/common/bram_m10k_map.v
new file mode 100644 (file)
index 0000000..061463c
--- /dev/null
@@ -0,0 +1,31 @@
+module __MISTRAL_M10K_SDP(CLK1, A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN);\r
+\r
+parameter CFG_ABITS = 10;\r
+parameter CFG_DBITS = 10;\r
+parameter CFG_ENABLE_A = 1;\r
+parameter CFG_ENABLE_B = 1;\r
+\r
+input CLK1;\r
+input [CFG_ABITS-1:0] A1ADDR, B1ADDR;\r
+input [CFG_DBITS-1:0] A1DATA;\r
+output [CFG_DBITS-1:0] B1DATA;\r
+input [CFG_ENABLE_A-1:0] A1EN, B1EN;\r
+\r
+altsyncram #(\r
+    .operation_mode("dual_port"),\r
+    .ram_block_type("m10k"),\r
+    .widthad_a(CFG_ABITS),\r
+    .width_a(CFG_DBITS),\r
+    .widthad_b(CFG_ABITS),\r
+    .width_b(CFG_DBITS),\r
+) _TECHMAP_REPLACE_ (\r
+    .address_a(A1ADDR),\r
+    .data_a(A1DATA),\r
+    .wren_a(A1EN),\r
+    .address_b(B1ADDR),\r
+    .q_b(B1DATA),\r
+    .clock0(CLK1),\r
+    .clock1(CLK1)\r
+);\r
+\r
+endmodule\r
index 820b0430e0bf4b183f2726c845c6becff82733c7..b5a3d88926160e517da990dd559a27a978bd393d 100644 (file)
@@ -156,39 +156,4 @@ input [ax_width-1:0] ax;
 input [ay_scan_in_width-1:0] ay;
 output [result_a_width-1:0] resulta;
 
-endmodule
-
-(* blackbox *)
-module cyclonev_ram_block(portaaddr, portadatain, portawe, portbaddr, portbdataout, portbre, clk0);
-
-parameter operation_mode = "dual_port";
-parameter logical_ram_name = "";
-parameter port_a_address_width = 10;
-parameter port_a_data_width = 10;
-parameter port_a_logical_ram_depth = 1024;
-parameter port_a_logical_ram_width = 10;
-parameter port_a_first_address = 0;
-parameter port_a_last_address = 1023;
-parameter port_a_first_bit_number = 0;
-parameter port_b_address_width = 10;
-parameter port_b_data_width = 10;
-parameter port_b_logical_ram_depth = 1024;
-parameter port_b_logical_ram_width = 10;
-parameter port_b_first_address = 0;
-parameter port_b_last_address = 1023;
-parameter port_b_first_bit_number = 0;
-parameter port_b_address_clock = "clock0";
-parameter port_b_read_enable_clock = "clock0";
-parameter mem_init0 = "";
-parameter mem_init1 = "";
-parameter mem_init2 = "";
-parameter mem_init3 = "";
-parameter mem_init4 = "";
-
-input [port_a_address_width-1:0] portaaddr;
-input [port_b_address_width-1:0] portbaddr;
-input [port_a_data_width-1:0] portadatain;
-output [port_b_data_width-1:0] portbdataout;
-input clk0, portawe, portbre;
-
-endmodule
+endmodule
\ No newline at end of file
index 23ffc6c878d2f769e863b4a4596286cd09ff6f21..f6f9ecb02b0e5dd1fd37d21e122e4b8babcd8ee9 100644 (file)
@@ -68,37 +68,3 @@ 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
index 926d2d64f9f8b48ba2b6ebd012bd63c5795e842a..46ef2aa0dc78309120a59977e82d258c4445a33a 100644 (file)
@@ -123,51 +123,6 @@ module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, CLK1, input [4:0] B1
 endmodule
 
 
-module MISTRAL_M10K(A1ADDR, A1DATA, A1EN, CLK1, B1ADDR, B1DATA, B1EN);
-
-parameter CFG_ABITS = 10;
-parameter CFG_DBITS = 10;
-
-input [CFG_ABITS-1:0] A1ADDR, B1ADDR;
-input [CFG_DBITS-1:0] A1DATA;
-input CLK1, A1EN, B1EN;
-output [CFG_DBITS-1:0] B1DATA;
-
-// Much like the MLAB, the M10K has mem_init[01234] parameters which would let
-// you initialise the RAM cell via hex literals. If they were implemented.
-
-cyclonev_ram_block #(
-    .operation_mode("dual_port"),
-    .logical_ram_name("MISTRAL_M10K"),
-    .port_a_address_width(CFG_ABITS),
-    .port_a_data_width(CFG_DBITS),
-    .port_a_logical_ram_depth(2**CFG_ABITS),
-    .port_a_logical_ram_width(CFG_DBITS),
-    .port_a_first_address(0),
-    .port_a_last_address(2**CFG_DBITS - 1),
-    .port_a_first_bit_number(0),
-    .port_b_address_width(CFG_ABITS),
-    .port_b_data_width(CFG_DBITS),
-    .port_b_logical_ram_depth(2**CFG_ABITS),
-    .port_b_logical_ram_width(CFG_DBITS),
-    .port_b_first_address(0),
-    .port_b_last_address(2**CFG_DBITS - 1),
-    .port_b_first_bit_number(0),
-    .port_b_address_clock("clock0"),
-    .port_b_read_enable_clock("clock0")
-) _TECHMAP_REPLACE_ (
-    .portaaddr(A1ADDR),
-    .portadatain(A1DATA),
-    .portawe(A1EN),
-    .portbaddr(B1ADDR),
-    .portbdataout(B1DATA),
-    .portbre(B1EN),
-    .clk0(CLK1)
-);
-
-endmodule
-
-
 module MISTRAL_MUL27X27(input [26:0] A, B, output [53:0] Y);
 
 `MAC #(.ax_width(27), .ay_scan_in_width(27), .result_a_width(54), .operation_mode("M27x27")) _TECHMAP_REPLACE_ (.ax(A), .ay(B), .resulta(Y));
index 12137cdeae9dcbeaded95dedfe96e1e451571517..b751e8413fcf045e6be17c19124c4de5102f7360 100644 (file)
@@ -235,8 +235,7 @@ struct SynthIntelALMPass : public ScriptPass {
 
                if (!nobram && check_label("map_bram", "(skip if -nobram)")) {
                        run(stringf("memory_bram -rules +/intel_alm/common/bram_%s.txt", bram_type.c_str()));
-                       if (help_mode || bram_type != "m10k")
-                               run(stringf("techmap -map +/intel_alm/common/bram_%s_map.v", bram_type.c_str()));
+                       run(stringf("techmap -map +/intel_alm/common/bram_%s_map.v", bram_type.c_str()));
                }
 
                if (!nolutram && check_label("map_lutram", "(skip if -nolutram)")) {
diff --git a/tests/arch/intel_alm/blockram.ys b/tests/arch/intel_alm/blockram.ys
deleted file mode 100644 (file)
index 610ae1f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-read_verilog ../common/blockram.v
-chparam -set ADDRESS_WIDTH 10 -set DATA_WIDTH 10 sync_ram_sdp
-synth_intel_alm -family cyclonev
-cd sync_ram_sdp
-select -assert-count 1 t:MISTRAL_M10K
-select -assert-none t:MISTRAL_M10K %% t:* %D