fuzzers: Fix MULT18X18D enable config bits

Signed-off-by: David Shah <dave@ds0.me>
diff --git a/database b/database
index d960350..41759ec 160000
--- a/database
+++ b/database
@@ -1 +1 @@
-Subproject commit d9603500f4a4df5b643c790d0e44bf7c67b755d0
+Subproject commit 41759ec4c83a34522f36f476108510f8e9eedd24
diff --git a/fuzzers/ECP5/073-mult18_config/dspconfig.ncl b/fuzzers/ECP5/073-mult18_config/dspconfig.ncl
index a7e549f..9677528 100644
--- a/fuzzers/ECP5/073-mult18_config/dspconfig.ncl
+++ b/fuzzers/ECP5/073-mult18_config/dspconfig.ncl
@@ -13,7 +13,7 @@
    ${comment}    logical {
    ${comment}       cellmodel-name MULT18;
    ${comment}       program "MODE:${mode} "
-   ${comment}               "${mode}:::${settings}";
+   ${comment}               "${mode}:::${settings}:CLK0=#SIG,CLK1=#SIG,CLK2=#SIG,CLK3=#SIG,CE0=#INV,CE1=#INV,CE2=#INV,CE3=#INV,RST0=#INV,RST1=#INV,RST2=#INV,RST3=#INV";
    ${comment}    }
    ${comment}    site ${loc};
    ${comment} }
diff --git a/fuzzers/ECP5/073-mult18_config/fuzzer.py b/fuzzers/ECP5/073-mult18_config/fuzzer.py
index 28b30d3..ec89ca4 100644
--- a/fuzzers/ECP5/073-mult18_config/fuzzer.py
+++ b/fuzzers/ECP5/073-mult18_config/fuzzer.py
@@ -44,8 +44,20 @@
         empty_bitfile = cfg.build_design(cfg.ncl, {})
         cfg.ncl = "dspconfig.ncl"
 
+        def rclk(x):
+            return "CLK3" if x == "COVER_CLK3" else "NONE"
+
         nonrouting.fuzz_enum_setting(cfg, "{}.MODE".format(mult), ["NONE", "MULT18X18D"],
-                                     lambda x: get_substs(settings={}, mode=x), empty_bitfile, False)
+                                     lambda x: get_substs(settings={"GSR": "ENABLED",
+                                        "REG_INPUTA_RST": "RST3", "REG_INPUTB_RST": "RST3", "REG_INPUTC_RST": "RST3",
+                                        "REG_PIPELINE_RST": "RST3", "REG_OUTPUT_RST": "RST3",
+                                        "REG_INPUTA_CLK": rclk(x), "REG_INPUTB_CLK": rclk(x), "REG_INPUTC_CLK": rclk(x), 
+                                        "REG_PIPELINE_CLK": rclk(x), "REG_OUTPUT_CLK": rclk(x),
+                                        "REG_INPUTA_CE": "CE3", "REG_INPUTB_CE": "CE3", "REG_INPUTC_CE": "CE3",
+                                        "REG_PIPELINE_CE": "CE3", "REG_OUTPUT_CE": "CE3",
+                                        "SOURCEB_MODE": ("B_C_DYNAMIC" if x == "COVER_SRC" else "B_SHIFT")
+                                    }, mode=("NONE" if x == "NONE" else "MULT18X18D")),
+                                     empty_bitfile, False, ["COVER_CLK3", "COVER_SRC"])
 
         regs = ["INPUTA", "INPUTB", "INPUTC", "PIPELINE", "OUTPUT"]
         clks = ["NONE", "CLK0", "CLK1", "CLK2", "CLK3"]
diff --git a/minitests/dsp/mult1.v b/minitests/dsp/mult1.v
new file mode 100644
index 0000000..446d648
--- /dev/null
+++ b/minitests/dsp/mult1.v
@@ -0,0 +1,36 @@
+module dut(
+	input clock, reset,
+	input din_valid,
+	input [31:0] din,
+	input dout_ready,
+	output dout_valid,
+	output [31:0] dout
+);
+	(* LOC="MULT18_R46C52" *)
+	MULT18X18D dsp(
+		.A17(1'b0), .A16(1'b0),
+		.A15(din[15]), .A14(din[14]), .A13(din[13]), .A12(din[12]), .A11(din[11]), .A10(din[10]), .A9(din[9]), .A8(din[8]),
+		.A7(din[7]), .A6(din[6]), .A5(din[5]), .A4(din[4]), .A3(din[3]), .A2(din[2]), .A1(din[1]), .A0(din[0]),
+
+		.B17(1'b0), .B16(1'b0),
+		.B15(din[31]), .B14(din[30]), .B13(din[29]), .B12(din[28]), .B11(din[27]), .B10(din[26]), .B9(din[25]), .B8(din[24]),
+		.B7(din[23]),.B6(din[22]), .B5(din[21]), .B4(din[20]), .B3(din[19]), .B2(din[18]), .B1(din[17]), .B0(din[16]),
+
+		.C17(1'b0), .C16(1'b0),
+		.C15(1'b0), .C14(1'b0), .C13(1'b0), .C12(1'b0), .C11(1'b0), .C10(1'b0), .C9(1'b0), .C8(1'b0),
+	    .C7(1'b0), .C6(1'b0), .C5(1'b0), .C4(1'b0), .C3(1'b0), .C2(1'b0), .C1(1'b0), .C0(1'b0),
+
+		.SIGNEDA(1'B0),
+		.SIGNEDB(1'B0),
+		.SOURCEA(1'B0),
+		.SOURCEB(1'B0),
+
+		.P31(dout[31]), .P30(dout[30]), .P29(dout[29]), .P28(dout[28]), .P27(dout[27]), .P26(dout[26]), .P25(dout[25]), .P24(dout[24]),
+		.P23(dout[23]), .P22(dout[22]), .P21(dout[21]), .P20(dout[20]), .P19(dout[19]), .P18(dout[18]), .P17(dout[17]), .P16(dout[16]),
+		.P15(dout[15]), .P14(dout[14]), .P13(dout[13]), .P12(dout[12]), .P11(dout[11]), .P10(dout[10]), .P9(dout[9]), .P8(dout[8]),
+		.P7(dout[7]), .P6(dout[6]), .P5(dout[5]), .P4(dout[4]), .P3(dout[3]), .P2(dout[2]), .P1(dout[1]), .P0(dout[0])
+	);
+
+
+	assign dout_valid = din_valid;
+endmodule
diff --git a/minitests/dsp/mult1n.ncl b/minitests/dsp/mult1n.ncl
new file mode 100644
index 0000000..ba9b2fe
--- /dev/null
+++ b/minitests/dsp/mult1n.ncl
@@ -0,0 +1,26 @@
+::FROM-WRITER;
+// designname: dut
+// Creation time stamp: 02/09/19  17:09:09
+design dut
+{
+   device
+   {
+      architecture sa5p00;
+      device LFE5U-25F;
+      package CABGA381;
+      performance "8";
+   }
+
+   comp dsp
+   {
+
+      logical
+      {
+         cellmodel-name MULT18;
+         program "MODE:MULT18X18D "
+                 "MULT18X18D:::";
+      }
+      site MULT18_R13C5;
+   }
+  
+}