aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/intel_alm/common/quartus_rename.v
diff options
context:
space:
mode:
Diffstat (limited to 'techlibs/intel_alm/common/quartus_rename.v')
-rw-r--r--techlibs/intel_alm/common/quartus_rename.v39
1 files changed, 39 insertions, 0 deletions
diff --git a/techlibs/intel_alm/common/quartus_rename.v b/techlibs/intel_alm/common/quartus_rename.v
index ac0fe12aa..c40a4e02d 100644
--- a/techlibs/intel_alm/common/quartus_rename.v
+++ b/techlibs/intel_alm/common/quartus_rename.v
@@ -1,8 +1,10 @@
`ifdef cyclonev
`define LCELL cyclonev_lcell_comb
+`define MLAB cyclonev_mlab_cell
`endif
`ifdef cyclone10gx
`define LCELL cyclone10gx_lcell_comb
+`define MLAB cyclone10gx_mlab_cell
`endif
module __MISTRAL_VCC(output Q);
@@ -80,3 +82,40 @@ parameter LUT1 = 16'h0000;
`LCELL #(.lut_mask({16'h0, LUT1, 16'h0, LUT0})) _TECHMAP_REPLACE_ (.dataa(A), .datab(B), .datac(C), .datad(D0), .dataf(D1), .cin(CI), .sumout(SO), .cout(CO));
endmodule
+
+
+module MISTRAL_MLAB(input [4:0] A1ADDR, input A1DATA, A1EN, CLK1, input [4:0] B1ADDR, output B1DATA);
+
+// Here we get to an unfortunate situation. The cell has a mem_init0 parameter,
+// which takes in a hexadecimal string that could be used to initialise RAM.
+// In the vendor simulation models, this appears to work fine, but Quartus,
+// either intentionally or not, forgets about this parameter and initialises the
+// RAM to zero.
+//
+// Because of this, RAM initialisation is presently disabled, but the source
+// used to generate mem_init0 is kept (commented out) in case this gets fixed
+// or an undocumented way to get Quartus to initialise from mem_init0 is found.
+
+`MLAB #(
+ .logical_ram_name("MISTRAL_MLAB"),
+ .logical_ram_depth(32),
+ .logical_ram_width(1),
+ .mixed_port_feed_through_mode("Dont Care"),
+ .first_bit_number(0),
+ .first_address(0),
+ .last_address(31),
+ .address_width(5),
+ .data_width(1),
+ .byte_enable_mask_width(1),
+ .port_b_data_out_clock("NONE"),
+ // .mem_init0($sformatf("%08x", INIT))
+) _TECHMAP_REPLACE_ (
+ .portaaddr(A1ADDR),
+ .portadatain(A1DATA),
+ .portbaddr(B1ADDR),
+ .portbdataout(B1DATA),
+ .ena0(A1EN),
+ .clk0(CLK1)
+);
+
+endmodule