Cleaned DFF simulation models and techmaps, added sync. reset flip-flop models

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
diff --git a/ql-qlf-plugin/qlf_k6n10f/cells_sim.v b/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
index 90c6db5..ded97d4 100644
--- a/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
+++ b/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
@@ -75,8 +75,6 @@
 
 endmodule
 
-
-
 (* abc9_lut=1, lib_whitebox *)
 module frac_lut6(
     input wire [0:5] in,
@@ -126,171 +124,36 @@
 
 endmodule
 
+
 (* abc9_flop, lib_whitebox *)
 module dff(
     output reg Q,
     input wire D,
     (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
     input wire C
 );
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C)
-                Q <= D;
-          1'b1:
-            always @(negedge C)
-                Q <= D;
-    endcase
+    initial Q <= 1'b0;
+
+    always @(posedge C)
+      Q <= D;
+
 endmodule
 
 (* abc9_flop, lib_whitebox *)
-module dffr(
+module dffn(
     output reg Q,
     input wire D,
-    input wire R,
     (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
     input wire C
 );
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C or posedge R)
-                if (R)
-                        Q <= 1'b0;
-                else
-                        Q <= D;
-          1'b1:
-            always @(negedge C or posedge R)
-                if (R)
-                        Q <= 1'b0;
-                else
-                        Q <= D;
-    endcase
+    initial Q <= 1'b0;
+
+    always @(negedge C)
+      Q <= D;
+
 endmodule
 
 (* abc9_flop, lib_whitebox *)
-module dffre(
-    output reg Q,
-    input wire D,
-    input wire R,
-    input wire E,
-    (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
-    input wire C
-);
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C or posedge R)
-              if (R)
-                Q <= 1'b0;
-              else if(E)
-                Q <= D;
-          1'b1:
-            always @(negedge C or posedge R)
-              if (R)
-                Q <= 1'b0;
-              else if(E)
-                Q <= D;
-        endcase
-endmodule
-
-module dffs(
-    output reg Q,
-    input wire D,
-    (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
-    input wire C,
-    input wire S
-);
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C or negedge S)
-              if (S)
-                Q <= 1'b1;
-              else
-                Q <= D;
-          1'b1:
-            always @(negedge C or negedge S)
-              if (S)
-                Q <= 1'b1;
-              else
-                Q <= D;
-        endcase
-endmodule
-
-module dffse(
-    output reg Q,
-    input wire D,
-    (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
-    input wire C,
-    input wire S,
-    input wire E
-);
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C or negedge S)
-              if (S)
-                Q <= 1'b1;
-              else if(E)
-                Q <= D;
-          1'b1:
-            always @(negedge C or negedge S)
-              if (S)
-                Q <= 1'b1;
-              else if(E)
-                Q <= D;
-        endcase
-endmodule
-
-module dffsr(
-    output reg Q,
-    input wire D,
-    (* clkbuf_sink *)
-    (* invertible_pin = "IS_C_INVERTED" *)
-    input wire C,
-    input wire R,
-    input wire S
-);
-    parameter [0:0] INIT = 1'b0;
-    parameter [0:0] IS_C_INVERTED = 1'b0;
-    initial Q = INIT;
-    case(|IS_C_INVERTED)
-          1'b0:
-            always @(posedge C or negedge S or negedge R)
-              if (S)
-                Q <= 1'b1;
-              else if (R)
-                Q <= 1'b0;
-              else
-                Q <= D;
-          1'b1:
-            always @(negedge C or negedge S or negedge R)
-              if (S)
-                Q <= 1'b1;
-              else if (R)
-                Q <= 1'b0;
-              else
-                Q <= D;
-        endcase
-endmodule
-
 module dffsre(
     output reg Q,
     input wire D,
@@ -300,19 +163,19 @@
     input wire R,
     input wire S
 );
-    parameter [0:0] INIT = 1'b0;
-    initial Q = INIT;
+    initial Q <= 1'b0;
 
-        always @(posedge C or negedge S or negedge R)
-          if (!R)
-            Q <= 1'b0;
-          else if (!S)
-            Q <= 1'b1;
-          else if (E)
-            Q <= D;
-        
+    always @(posedge C or negedge S or negedge R)
+      if (!R)
+        Q <= 1'b0;
+      else if (!S)
+        Q <= 1'b1;
+      else if (E)
+        Q <= D;
+
 endmodule
 
+(* abc9_flop, lib_whitebox *)
 module dffnsre(
     output reg Q,
     input wire D,
@@ -322,17 +185,86 @@
     input wire R,
     input wire S
 );
-    parameter [0:0] INIT = 1'b0;
-    initial Q = INIT;
+    initial Q <= 1'b0;
 
-        always @(negedge C or negedge S or negedge R)
-          if (!R)
-            Q <= 1'b0;
-          else if (!S)
-            Q <= 1'b1;
-          else if (E)
-            Q <= D;
-        
+    always @(negedge C or negedge S or negedge R)
+      if (!R)
+        Q <= 1'b0;
+      else if (!S)
+        Q <= 1'b1;
+      else if (E)
+        Q <= D;
+
+endmodule
+
+(* abc9_flop, lib_whitebox *)
+module sdffsre(
+    output reg Q,
+    input wire D,
+    (* clkbuf_sink *)
+    input wire C,
+    input wire E,
+    input wire R,
+    input wire S
+);
+    initial Q <= 1'b0;
+
+    always @(posedge C)
+      if (!R)
+        Q <= 1'b0;
+      else if (!S)
+        Q <= 1'b1;
+      else if (E)
+        Q <= D;
+
+endmodule
+
+(* abc9_flop, lib_whitebox *)
+module sdffnsre(
+    output reg Q,
+    input wire D,
+    (* clkbuf_sink *)
+    input wire C,
+    input wire E,
+    input wire R,
+    input wire S
+);
+    initial Q <= 1'b0;
+
+    always @(negedge C)
+      if (!R)
+        Q <= 1'b0;
+      else if (!S)
+        Q <= 1'b1;
+      else if (E)
+        Q <= D;
+
+endmodule
+
+(* abc9_flop, lib_whitebox *)
+module latch (
+    output reg Q,
+    input wire D,
+    input wire G
+);
+    initial Q <= 1'b0;
+
+    always @(G)
+      if (G) Q <= D;
+
+endmodule
+
+(* abc9_flop, lib_whitebox *)
+module latchn (
+    output reg Q,
+    input wire D,
+    input wire G
+);
+    initial Q <= 1'b0;
+
+    always @(G)
+      if (!G) Q <= D;
+
 endmodule
 
 (* abc9_flop, lib_whitebox *)
@@ -344,17 +276,18 @@
     input wire G,
     input wire E
 );
-    parameter [0:0] INIT = 1'b0;
-    initial Q = INIT;
+    initial Q <= 1'b0;
+
     always @*
       begin
-        if (!R) 
+        if (!R)
           Q <= 1'b0;
-        else if (!S) 
+        else if (!S)
           Q <= 1'b1;
-        else if (E && G) 
+        else if (E && G)
           Q <= D;
       end
+
 endmodule
 
 (* abc9_flop, lib_whitebox *)
@@ -366,31 +299,20 @@
     input wire G,
     input wire E
 );
-    parameter [0:0] INIT = 1'b0;
-    initial Q = INIT;
+    initial Q <= 1'b0;
+
     always @*
       begin
-        if (!R) 
+        if (!R)
           Q <= 1'b0;
-        else if (!S) 
+        else if (!S)
           Q <= 1'b1;
-        else if (E && !G) 
+        else if (E && !G)
           Q <= D;
       end
+
 endmodule
 
-(* abc9_flop, lib_whitebox *)
-module scff(
-    output reg Q,
-    input wire D,
-    input wire clk
-);
-    parameter [0:0] INIT = 1'b0;
-    initial Q = INIT;
-
-    always @(posedge clk)
-            Q <= D;
-endmodule
 
 module TDP_BRAM18 (
     (* clkbuf_sink *)
@@ -1255,10 +1177,10 @@
             assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0);
             assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0);
             assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-		11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0,
-		12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+        11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0,
+        12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0
+        };
         end
 
         2: begin
@@ -1266,10 +1188,10 @@
             assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 1) : (D1EN ? (D1ADDR_TOTAL << 1) : 14'd0);
             assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 1) : (F1EN ? (F1ADDR_TOTAL << 1) : 14'd0);
             assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 1) : (H1EN ? (H1ADDR_TOTAL << 1) : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-		11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0,
-		12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+        11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0,
+        12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0
+        };
         end
 
         4: begin
@@ -1277,10 +1199,10 @@
             assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 2) : (D1EN ? (D1ADDR_TOTAL << 2) : 14'd0);
             assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 2) : (F1EN ? (F1ADDR_TOTAL << 2) : 14'd0);
             assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 2) : (H1EN ? (H1ADDR_TOTAL << 2) : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-		11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0,
-		12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+        11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0,
+        12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0
+        };
         end
 
         8, 9: begin
@@ -1288,10 +1210,10 @@
             assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 3) : (D1EN ? (D1ADDR_TOTAL << 3) : 14'd0);
             assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 3) : (F1EN ? (F1ADDR_TOTAL << 3) : 14'd0);
             assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 3) : (H1EN ? (H1ADDR_TOTAL << 3) : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-		11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0,
-		12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+        11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0,
+        12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0
+        };
         end
 
         16, 18: begin
@@ -1299,10 +1221,10 @@
             assign PORT_B1_ADDR = C1EN ? (C1ADDR_TOTAL << 4) : (D1EN ? (D1ADDR_TOTAL << 4) : 14'd0);
             assign PORT_A2_ADDR = E1EN ? (E1ADDR_TOTAL << 4) : (F1EN ? (F1ADDR_TOTAL << 4) : 14'd0);
             assign PORT_B2_ADDR = G1EN ? (G1ADDR_TOTAL << 4) : (H1EN ? (H1ADDR_TOTAL << 4) : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-		11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0,
-		12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+        11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0,
+        12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0
+        };
         end
 
         default: begin
@@ -1310,10 +1232,10 @@
             assign PORT_B1_ADDR = C1EN ? C1ADDR_TOTAL : (D1EN ? D1ADDR_TOTAL : 14'd0);
             assign PORT_A2_ADDR = E1EN ? E1ADDR_TOTAL : (F1EN ? F1ADDR_TOTAL : 14'd0);
             assign PORT_B2_ADDR = G1EN ? G1ADDR_TOTAL : (H1EN ? H1ADDR_TOTAL : 14'd0);
-	    defparam bram_2x18k.MODE_BITS = { 1'b1,
-	        11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0,
-	        12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0
-	    };
+        defparam bram_2x18k.MODE_BITS = { 1'b1,
+            11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0,
+            12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0
+        };
         end
     endcase
 
@@ -1390,15 +1312,15 @@
 endmodule
 
 module BRAM2x18_SDP (A1ADDR, A1DATA, A1EN, B1ADDR, B1DATA, B1EN, C1ADDR, C1DATA, C1EN, CLK1, CLK2, D1ADDR, D1DATA, D1EN);
-	parameter CFG_ABITS = 11;
-	parameter CFG_DBITS = 18;
-	parameter CFG_ENABLE_B = 4;
-	parameter CFG_ENABLE_D = 4;
+    parameter CFG_ABITS = 11;
+    parameter CFG_DBITS = 18;
+    parameter CFG_ENABLE_B = 4;
+    parameter CFG_ENABLE_D = 4;
 
-	parameter CLKPOL2 = 1;
-	parameter CLKPOL3 = 1;
-	parameter [18431:0] INIT0 = 18432'bx;
-	parameter [18431:0] INIT1 = 18432'bx;
+    parameter CLKPOL2 = 1;
+    parameter CLKPOL3 = 1;
+    parameter [18431:0] INIT0 = 18432'bx;
+    parameter [18431:0] INIT1 = 18432'bx;
 
         localparam MODE_36 = 3'b011; // 36- or 32-bit
         localparam MODE_18 = 3'b010; // 18- or 16-bit
@@ -1407,209 +1329,209 @@
         localparam MODE_2 = 3'b110; // 2-bit
         localparam MODE_1 = 3'b101; // 1-bit
 
-	input CLK1;
-	input CLK2;
+    input CLK1;
+    input CLK2;
 
-	input [CFG_ABITS-1:0] A1ADDR;
-	output [CFG_DBITS-1:0] A1DATA;
-	input A1EN;
+    input [CFG_ABITS-1:0] A1ADDR;
+    output [CFG_DBITS-1:0] A1DATA;
+    input A1EN;
 
-	input [CFG_ABITS-1:0] B1ADDR;
-	input [CFG_DBITS-1:0] B1DATA;
-	input [CFG_ENABLE_B-1:0] B1EN;
+    input [CFG_ABITS-1:0] B1ADDR;
+    input [CFG_DBITS-1:0] B1DATA;
+    input [CFG_ENABLE_B-1:0] B1EN;
 
-	input [CFG_ABITS-1:0] C1ADDR;
-	output [CFG_DBITS-1:0] C1DATA;
-	input C1EN;
+    input [CFG_ABITS-1:0] C1ADDR;
+    output [CFG_DBITS-1:0] C1DATA;
+    input C1EN;
 
-	input [CFG_ABITS-1:0] D1ADDR;
-	input [CFG_DBITS-1:0] D1DATA;
-	input [CFG_ENABLE_D-1:0] D1EN;
+    input [CFG_ABITS-1:0] D1ADDR;
+    input [CFG_DBITS-1:0] D1DATA;
+    input [CFG_ENABLE_D-1:0] D1EN;
 
-	wire FLUSH1;
-	wire FLUSH2;
+    wire FLUSH1;
+    wire FLUSH2;
 
-	wire [13:CFG_ABITS] A1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
-	wire [13:CFG_ABITS] B1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
-	wire [13:CFG_ABITS] C1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
-	wire [13:CFG_ABITS] D1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
+    wire [13:CFG_ABITS] A1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
+    wire [13:CFG_ABITS] B1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
+    wire [13:CFG_ABITS] C1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
+    wire [13:CFG_ABITS] D1ADDR_CMPL = {14-CFG_ABITS{1'b0}};
 
-	wire [13:0] A1ADDR_TOTAL = {A1ADDR_CMPL, A1ADDR};
-	wire [13:0] B1ADDR_TOTAL = {B1ADDR_CMPL, B1ADDR};
-	wire [13:0] C1ADDR_TOTAL = {C1ADDR_CMPL, C1ADDR};
-	wire [13:0] D1ADDR_TOTAL = {D1ADDR_CMPL, D1ADDR};
+    wire [13:0] A1ADDR_TOTAL = {A1ADDR_CMPL, A1ADDR};
+    wire [13:0] B1ADDR_TOTAL = {B1ADDR_CMPL, B1ADDR};
+    wire [13:0] C1ADDR_TOTAL = {C1ADDR_CMPL, C1ADDR};
+    wire [13:0] D1ADDR_TOTAL = {D1ADDR_CMPL, D1ADDR};
 
-	wire [17:CFG_DBITS] A1_RDATA_CMPL;
-	wire [17:CFG_DBITS] C1_RDATA_CMPL;
+    wire [17:CFG_DBITS] A1_RDATA_CMPL;
+    wire [17:CFG_DBITS] C1_RDATA_CMPL;
 
-	wire [17:CFG_DBITS] B1_WDATA_CMPL;
-	wire [17:CFG_DBITS] D1_WDATA_CMPL;
+    wire [17:CFG_DBITS] B1_WDATA_CMPL;
+    wire [17:CFG_DBITS] D1_WDATA_CMPL;
 
-	wire [13:0] PORT_A1_ADDR;
-	wire [13:0] PORT_A2_ADDR;
-	wire [13:0] PORT_B1_ADDR;
-	wire [13:0] PORT_B2_ADDR;
+    wire [13:0] PORT_A1_ADDR;
+    wire [13:0] PORT_A2_ADDR;
+    wire [13:0] PORT_B1_ADDR;
+    wire [13:0] PORT_B2_ADDR;
 
-	case (CFG_DBITS)
-		1: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL;
-			assign PORT_A2_ADDR = C1ADDR_TOTAL;
-			assign PORT_B2_ADDR = D1ADDR_TOTAL;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0
-			};
-		end
+    case (CFG_DBITS)
+        1: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL;
+            assign PORT_A2_ADDR = C1ADDR_TOTAL;
+            assign PORT_B2_ADDR = D1ADDR_TOTAL;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_1, MODE_1, MODE_1, MODE_1, 1'd0
+            };
+        end
 
-		2: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL << 1;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL << 1;
-			assign PORT_A2_ADDR = C1ADDR_TOTAL << 1;
-			assign PORT_B2_ADDR = D1ADDR_TOTAL << 1;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0
-			};
-		end
+        2: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL << 1;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL << 1;
+            assign PORT_A2_ADDR = C1ADDR_TOTAL << 1;
+            assign PORT_B2_ADDR = D1ADDR_TOTAL << 1;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_2, MODE_2, MODE_2, MODE_2, 1'd0
+            };
+        end
 
-		4: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL << 2;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL << 2;
-			assign PORT_A2_ADDR = C1ADDR_TOTAL << 2;
-			assign PORT_B2_ADDR = D1ADDR_TOTAL << 2;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0
-			};
-		end
+        4: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL << 2;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL << 2;
+            assign PORT_A2_ADDR = C1ADDR_TOTAL << 2;
+            assign PORT_B2_ADDR = D1ADDR_TOTAL << 2;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_4, MODE_4, MODE_4, MODE_4, 1'd0
+            };
+        end
 
-		8, 9: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL << 3;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL << 3;
-			assign PORT_A2_ADDR = C1ADDR_TOTAL << 3;
-			assign PORT_B2_ADDR = D1ADDR_TOTAL << 3;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0
-			};
-		end
+        8, 9: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL << 3;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL << 3;
+            assign PORT_A2_ADDR = C1ADDR_TOTAL << 3;
+            assign PORT_B2_ADDR = D1ADDR_TOTAL << 3;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_9, MODE_9, MODE_9, MODE_9, 1'd0
+            };
+        end
 
-		16, 18: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL << 4;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL << 4;
-			assign PORT_A2_ADDR = C1ADDR_TOTAL << 4;
-			assign PORT_B2_ADDR = D1ADDR_TOTAL << 4;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0
-			};
-		end
+        16, 18: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL << 4;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL << 4;
+            assign PORT_A2_ADDR = C1ADDR_TOTAL << 4;
+            assign PORT_B2_ADDR = D1ADDR_TOTAL << 4;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_18, MODE_18, MODE_18, MODE_18, 1'd0
+            };
+        end
 
-		default: begin
-			assign PORT_A1_ADDR = A1ADDR_TOTAL;
-			assign PORT_B1_ADDR = B1ADDR_TOTAL;
-			assign PORT_A2_ADDR = D1ADDR_TOTAL;
-			assign PORT_B2_ADDR = C1ADDR_TOTAL;
-			defparam bram_2x18k.MODE_BITS = { 1'b1,
-				11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0,
-				12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0
-			};
-		end
-	endcase
+        default: begin
+            assign PORT_A1_ADDR = A1ADDR_TOTAL;
+            assign PORT_B1_ADDR = B1ADDR_TOTAL;
+            assign PORT_A2_ADDR = D1ADDR_TOTAL;
+            assign PORT_B2_ADDR = C1ADDR_TOTAL;
+            defparam bram_2x18k.MODE_BITS = { 1'b1,
+                11'd10, 11'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0,
+                12'd10, 12'd10, 4'd0, MODE_36, MODE_36, MODE_36, MODE_36, 1'd0
+            };
+        end
+    endcase
 
-	assign FLUSH1 = 1'b0;
-	assign FLUSH2 = 1'b0;
+    assign FLUSH1 = 1'b0;
+    assign FLUSH2 = 1'b0;
 
-	wire [17:0] PORT_A1_RDATA;
-	wire [17:0] PORT_B1_RDATA;
-	wire [17:0] PORT_A2_RDATA;
-	wire [17:0] PORT_B2_RDATA;
+    wire [17:0] PORT_A1_RDATA;
+    wire [17:0] PORT_B1_RDATA;
+    wire [17:0] PORT_A2_RDATA;
+    wire [17:0] PORT_B2_RDATA;
 
-	wire [17:0] PORT_A1_WDATA;
-	wire [17:0] PORT_B1_WDATA;
-	wire [17:0] PORT_A2_WDATA;
-	wire [17:0] PORT_B2_WDATA;
+    wire [17:0] PORT_A1_WDATA;
+    wire [17:0] PORT_B1_WDATA;
+    wire [17:0] PORT_A2_WDATA;
+    wire [17:0] PORT_B2_WDATA;
 
-	// Assign read/write data - handle special case for 9bit mode
-	// parity bit for 9bit mode is placed in R/W port on bit #16
-	case (CFG_DBITS)
-		9: begin
-			assign A1DATA = {PORT_A1_RDATA[16], PORT_A1_RDATA[7:0]};
-			assign C1DATA = {PORT_A2_RDATA[16], PORT_A2_RDATA[7:0]};
-			assign PORT_A1_WDATA = {18{1'b0}};
-			assign PORT_B1_WDATA = {B1_WDATA_CMPL[17], B1DATA[8], B1_WDATA_CMPL[16:9], B1DATA[7:0]};
-			assign PORT_A2_WDATA = {18{1'b0}};
-			assign PORT_B2_WDATA = {D1_WDATA_CMPL[17], D1DATA[8], D1_WDATA_CMPL[16:9], D1DATA[7:0]};
-		end
-		default: begin
-			assign A1DATA = PORT_A1_RDATA[CFG_DBITS-1:0];
-			assign C1DATA = PORT_A2_RDATA[CFG_DBITS-1:0];
-			assign PORT_A1_WDATA = {18{1'b1}};
-			assign PORT_B1_WDATA = {B1_WDATA_CMPL, B1DATA};
-			assign PORT_A2_WDATA = {18{1'b1}};
-			assign PORT_B2_WDATA = {D1_WDATA_CMPL, D1DATA};
+    // Assign read/write data - handle special case for 9bit mode
+    // parity bit for 9bit mode is placed in R/W port on bit #16
+    case (CFG_DBITS)
+        9: begin
+            assign A1DATA = {PORT_A1_RDATA[16], PORT_A1_RDATA[7:0]};
+            assign C1DATA = {PORT_A2_RDATA[16], PORT_A2_RDATA[7:0]};
+            assign PORT_A1_WDATA = {18{1'b0}};
+            assign PORT_B1_WDATA = {B1_WDATA_CMPL[17], B1DATA[8], B1_WDATA_CMPL[16:9], B1DATA[7:0]};
+            assign PORT_A2_WDATA = {18{1'b0}};
+            assign PORT_B2_WDATA = {D1_WDATA_CMPL[17], D1DATA[8], D1_WDATA_CMPL[16:9], D1DATA[7:0]};
+        end
+        default: begin
+            assign A1DATA = PORT_A1_RDATA[CFG_DBITS-1:0];
+            assign C1DATA = PORT_A2_RDATA[CFG_DBITS-1:0];
+            assign PORT_A1_WDATA = {18{1'b1}};
+            assign PORT_B1_WDATA = {B1_WDATA_CMPL, B1DATA};
+            assign PORT_A2_WDATA = {18{1'b1}};
+            assign PORT_B2_WDATA = {D1_WDATA_CMPL, D1DATA};
 
-		end
-	endcase
+        end
+    endcase
 
-	wire PORT_A1_CLK = CLK1;
-	wire PORT_A2_CLK = CLK2;
-	wire PORT_B1_CLK = CLK1;
-	wire PORT_B2_CLK = CLK2;
+    wire PORT_A1_CLK = CLK1;
+    wire PORT_A2_CLK = CLK2;
+    wire PORT_B1_CLK = CLK1;
+    wire PORT_B2_CLK = CLK2;
 
-	wire PORT_A1_REN = A1EN;
-	wire PORT_A1_WEN = 1'b0;
-	wire [CFG_ENABLE_B-1:0] PORT_A1_BE = {PORT_A1_WEN,PORT_A1_WEN};
+    wire PORT_A1_REN = A1EN;
+    wire PORT_A1_WEN = 1'b0;
+    wire [CFG_ENABLE_B-1:0] PORT_A1_BE = {PORT_A1_WEN,PORT_A1_WEN};
 
-	wire PORT_A2_REN = C1EN;
-	wire PORT_A2_WEN = 1'b0;
-	wire [CFG_ENABLE_D-1:0] PORT_A2_BE = {PORT_A2_WEN,PORT_A2_WEN};
+    wire PORT_A2_REN = C1EN;
+    wire PORT_A2_WEN = 1'b0;
+    wire [CFG_ENABLE_D-1:0] PORT_A2_BE = {PORT_A2_WEN,PORT_A2_WEN};
 
-	wire PORT_B1_REN = 1'b0;
-	wire PORT_B1_WEN = B1EN[0];
-	wire [CFG_ENABLE_B-1:0] PORT_B1_BE = {B1EN[1],B1EN[0]};
+    wire PORT_B1_REN = 1'b0;
+    wire PORT_B1_WEN = B1EN[0];
+    wire [CFG_ENABLE_B-1:0] PORT_B1_BE = {B1EN[1],B1EN[0]};
 
-	wire PORT_B2_REN = 1'b0;
-	wire PORT_B2_WEN = D1EN[0];
-	wire [CFG_ENABLE_D-1:0] PORT_B2_BE = {D1EN[1],D1EN[0]};
+    wire PORT_B2_REN = 1'b0;
+    wire PORT_B2_WEN = D1EN[0];
+    wire [CFG_ENABLE_D-1:0] PORT_B2_BE = {D1EN[1],D1EN[0]};
 
-	TDP36K  bram_2x18k (
-		.WDATA_A1_i(PORT_A1_WDATA),
-		.RDATA_A1_o(PORT_A1_RDATA),
-		.ADDR_A1_i(PORT_A1_ADDR),
-		.CLK_A1_i(PORT_A1_CLK),
-		.REN_A1_i(PORT_A1_REN),
-		.WEN_A1_i(PORT_A1_WEN),
-		.BE_A1_i(PORT_A1_BE),
+    TDP36K  bram_2x18k (
+        .WDATA_A1_i(PORT_A1_WDATA),
+        .RDATA_A1_o(PORT_A1_RDATA),
+        .ADDR_A1_i(PORT_A1_ADDR),
+        .CLK_A1_i(PORT_A1_CLK),
+        .REN_A1_i(PORT_A1_REN),
+        .WEN_A1_i(PORT_A1_WEN),
+        .BE_A1_i(PORT_A1_BE),
 
-		.WDATA_A2_i(PORT_A2_WDATA),
-		.RDATA_A2_o(PORT_A2_RDATA),
-		.ADDR_A2_i(PORT_A2_ADDR),
-		.CLK_A2_i(PORT_A2_CLK),
-		.REN_A2_i(PORT_A2_REN),
-		.WEN_A2_i(PORT_A2_WEN),
-		.BE_A2_i(PORT_A2_BE),
+        .WDATA_A2_i(PORT_A2_WDATA),
+        .RDATA_A2_o(PORT_A2_RDATA),
+        .ADDR_A2_i(PORT_A2_ADDR),
+        .CLK_A2_i(PORT_A2_CLK),
+        .REN_A2_i(PORT_A2_REN),
+        .WEN_A2_i(PORT_A2_WEN),
+        .BE_A2_i(PORT_A2_BE),
 
-		.WDATA_B1_i(PORT_B1_WDATA),
-		.RDATA_B1_o(PORT_B1_RDATA),
-		.ADDR_B1_i(PORT_B1_ADDR),
-		.CLK_B1_i(PORT_B1_CLK),
-		.REN_B1_i(PORT_B1_REN),
-		.WEN_B1_i(PORT_B1_WEN),
-		.BE_B1_i(PORT_B1_BE),
+        .WDATA_B1_i(PORT_B1_WDATA),
+        .RDATA_B1_o(PORT_B1_RDATA),
+        .ADDR_B1_i(PORT_B1_ADDR),
+        .CLK_B1_i(PORT_B1_CLK),
+        .REN_B1_i(PORT_B1_REN),
+        .WEN_B1_i(PORT_B1_WEN),
+        .BE_B1_i(PORT_B1_BE),
 
-		.WDATA_B2_i(PORT_B2_WDATA),
-		.RDATA_B2_o(PORT_B2_RDATA),
-		.ADDR_B2_i(PORT_B2_ADDR),
-		.CLK_B2_i(PORT_B2_CLK),
-		.REN_B2_i(PORT_B2_REN),
-		.WEN_B2_i(PORT_B2_WEN),
-		.BE_B2_i(PORT_B2_BE),
+        .WDATA_B2_i(PORT_B2_WDATA),
+        .RDATA_B2_o(PORT_B2_RDATA),
+        .ADDR_B2_i(PORT_B2_ADDR),
+        .CLK_B2_i(PORT_B2_CLK),
+        .REN_B2_i(PORT_B2_REN),
+        .WEN_B2_i(PORT_B2_WEN),
+        .BE_B2_i(PORT_B2_BE),
 
-		.FLUSH1_i(FLUSH1),
-		.FLUSH2_i(FLUSH2)
-	);
+        .FLUSH1_i(FLUSH1),
+        .FLUSH2_i(FLUSH2)
+    );
 endmodule
 
 (* blackbox *)
@@ -1812,7 +1734,7 @@
         .b(b),
         .z(z),
 
-	.reset(reset),
+    .reset(reset),
 
         .f_mode(f_mode),
 
@@ -1821,7 +1743,7 @@
         .unsigned_a(unsigned_a),
         .unsigned_b(unsigned_b),
 
-        .output_select(3'b0),	// unregistered output: a * b (0)
+        .output_select(3'b0),   // unregistered output: a * b (0)
         .register_inputs(1'b0)  // unregistered inputs
     );
 endmodule
@@ -1866,9 +1788,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(3'b0),	// unregistered output: a * b (0)
+        .output_select(3'b0),   // unregistered output: a * b (0)
         .register_inputs(1'b1)  // registered inputs
     );
 endmodule
@@ -1912,9 +1834,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(3'b100),	// registered output: a * b (4)
+        .output_select(3'b100), // registered output: a * b (4)
         .register_inputs(1'b0)  // unregistered inputs
     );
 endmodule
@@ -1958,9 +1880,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(3'b100),	// registered output: a * b (4)
+        .output_select(3'b100), // registered output: a * b (4)
         .register_inputs(1'b1)  // registered inputs
     );
 endmodule
@@ -2010,9 +1932,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(output_select),	// unregistered output: ACCin (2, 3)
+        .output_select(output_select),  // unregistered output: ACCin (2, 3)
         .subtract(subtract),
         .register_inputs(1'b0)  // unregistered inputs
     );
@@ -2062,9 +1984,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(output_select),	// unregistered output: ACCin (2, 3)
+        .output_select(output_select),  // unregistered output: ACCin (2, 3)
         .subtract(subtract),
         .register_inputs(1'b1)  // registered inputs
     );
@@ -2114,9 +2036,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(output_select),	// registered output: ACCin (6, 7)
+        .output_select(output_select),  // registered output: ACCin (6, 7)
         .subtract(subtract),
         .register_inputs(1'b0)  // unregistered inputs
     );
@@ -2166,9 +2088,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(output_select),	// registered output: ACCin (6, 7)
+        .output_select(output_select),  // registered output: ACCin (6, 7)
         .subtract(subtract),
         .register_inputs(1'b1)  // registered inputs
     );
@@ -2212,8 +2134,8 @@
 
         .f_mode(f_mode),
 
-	.feedback(feedback),
-	.load_acc(load_acc),
+    .feedback(feedback),
+    .load_acc(load_acc),
 
         .unsigned_a(unsigned_a),
         .unsigned_b(unsigned_b),
@@ -2221,7 +2143,7 @@
         .clk(clk),
         .reset(reset),
 
-        .output_select(1'b1),	// unregistered output: ACCout (1)
+        .output_select(1'b1),   // unregistered output: ACCout (1)
         .subtract(subtract),
         .register_inputs(1'b0)  // unregistered inputs
     );
@@ -2271,9 +2193,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(1'b1),	// unregistered output: ACCout (1)
+        .output_select(1'b1),   // unregistered output: ACCout (1)
         .subtract(subtract),
         .register_inputs(1'b1)  // registered inputs
     );
@@ -2317,15 +2239,15 @@
         .f_mode(f_mode),
 
         .feedback(feedback),
-	.load_acc(load_acc),
+    .load_acc(load_acc),
 
         .unsigned_a(unsigned_a),
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(3'b101),	// registered output: ACCout (5)
+        .output_select(3'b101), // registered output: ACCout (5)
         .subtract(subtract),
         .register_inputs(1'b0)  // unregistered inputs
     );
@@ -2375,9 +2297,9 @@
         .unsigned_b(unsigned_b),
 
         .clk(clk),
-	.reset(reset),
+    .reset(reset),
 
-        .output_select(3'b101),	// registered output: ACCout (5)
+        .output_select(3'b101), // registered output: ACCout (5)
         .subtract(subtract),
         .register_inputs(1'b1)  // registered inputs
     );
diff --git a/ql-qlf-plugin/qlf_k6n10f/ffs_map.v b/ql-qlf-plugin/qlf_k6n10f/ffs_map.v
index 273f28e..fe665fa 100644
--- a/ql-qlf-plugin/qlf_k6n10f/ffs_map.v
+++ b/ql-qlf-plugin/qlf_k6n10f/ffs_map.v
@@ -14,566 +14,94 @@
 //
 // SPDX-License-Identifier: Apache-2.0
 
-// Basic DFF
-
+// DFF, no set/reset, no enable
 module \$_DFF_P_ (D, C, Q);
-    input D;
-    input C;
+    input  D;
+    input  C;
     output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(1'b1));
+    dff _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q));
 endmodule
 
-// Async reset
-module \$_DFF_PP0_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
+module \$_DFF_N_ (D, C, Q);
+    input  D;
+    input  C;
     output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(1'b1));
+    dffn _TECHMAP_REPLACE_ (.C(C), .D(D), .Q(Q));
 endmodule
 
-// Async reset
-module \$_DFF_PN0_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(1'b1));
-endmodule
-
-// Async set
-module \$_DFF_PP1_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(!R));
-endmodule
-
-// Async set
-module \$_DFF_PN1_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(R));
-endmodule
-
-module  \$_DFFE_PP_ (D, C, E, Q);
-    input D;
-    input C;
-    input E;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(1'b1));
-endmodule
-
-module  \$_DFFE_PN_ (D, C, E, Q);
-    input D;
-    input C;
-    input E;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(1'b1));
-endmodule
-
-// Async reset, enable
-module  \$_DFFE_PP0P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_PP0N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_PN0P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_PN0N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(1'b1));
-endmodule
-// Async set, enable
-
-module  \$_DFFE_PP1P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(!R));
-endmodule
-
-module  \$_DFFE_PP1N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(!R));
-endmodule
-
-module  \$_DFFE_PN1P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(R));
-endmodule
-
-module  \$_DFFE_PN1N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(R));
-endmodule
-
-// Async set & reset
-
-module \$_DFFSR_PPP_ (D, C, R, S, Q);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(!S));
-endmodule
-
-module \$_DFFSR_PNP_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(S));
-endmodule
-
-module \$_DFFSR_PNN_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(S));
-endmodule
-
-module \$_DFFSR_PPN_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(!S));
-endmodule
-
-module \$_DFFSR_NPP_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(!S));
-endmodule
-
-module \$_DFFSR_NNP_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(S));
-endmodule
-
-module \$_DFFSR_NNN_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(S));
-endmodule
-
-module \$_DFFSR_NPN_ (D, Q, C, R, S);
-    input D;
-    input C;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(!S));
-endmodule
-
-// Async set, reset & enable
-
-module \$_DFFSRE_PPPP_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(!S));
-endmodule
-
-module \$_DFFSRE_PNPP_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(S));
-endmodule
-
-module \$_DFFSRE_PPNP_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(!S));
-endmodule
-
-module \$_DFFSRE_PNNP_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+// DFF, asynchronous set/reset, enable
+module \$_DFFSRE_PNNP_ (C, S, R, E, D, Q);
+    input  C;
+    input  S;
+    input  R;
+    input  E;
+    input  D;
     output Q;
     dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(S));
 endmodule
 
-module \$_DFFSRE_PPPN_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(!S));
-endmodule
-
-module \$_DFFSRE_PNPN_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(S));
-endmodule
-
-module \$_DFFSRE_PPNN_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(!S));
-endmodule
-
-module \$_DFFSRE_PNNN_ (D, Q, C, E, R, S);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(S));
-endmodule
-
-// Latch with async set and reset
-module  \$_DLATCHSR_PPP_ (input E, S, R, D, output Q);
-    latchsre _TECHMAP_REPLACE_ (.D(D), .Q(Q), .E(1'b1), .G(E),  .R(!R), .S(!S));
-endmodule
-
-module  \$_DLATCHSR_NPP_ (input E, S, R, D, output Q);
-    latchnsre _TECHMAP_REPLACE_ (.D(D), .Q(Q), .E(1'b1), .G(E),  .R(!R), .S(!S));
-endmodule
-
-// The following techmap operation are not performed right now
-// as Negative edge FF are not legalized in synth_quicklogic for qlf_k6n10
-// but in case we implement clock inversion in the future, the support is ready for it.
-
-module \$_DFF_N_ (D, C, Q);
-    input D;
-    input C;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(1'b1));
-endmodule
-
-module \$_DFF_NP0_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(!R), .S(1'b1));
-endmodule
-
-module \$_DFF_NN0_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(R), .S(1'b1));
-endmodule
-
-module \$_DFF_NP1_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(!R));
-endmodule
-
-module \$_DFF_NN1_ (D, C, R, Q);
-    input D;
-    input C;
-    input R;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(1'b1), .R(1'b1), .S(R));
-endmodule
-
-module  \$_DFFE_NP_ (D, C, E, Q);
-    input D;
-    input C;
-    input E;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NN_ (D, C, E, Q);
-    input D;
-    input C;
-    input E;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NP0P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NP0N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NN0P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NN0N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(1'b1));
-endmodule
-
-module  \$_DFFE_NP1P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(!R));
-endmodule
-
-module  \$_DFFE_NP1N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(!R));
-endmodule
-
-module  \$_DFFE_NN1P_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(R));
-endmodule
-
-module  \$_DFFE_NN1N_ (D, C, E, R, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    output Q;
-    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(1'b1), .S(R));
-endmodule
-
-module \$_DFFSRE_NPPP_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(!S));
-endmodule
-
-module \$_DFFSRE_NNPP_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(!R), .S(S));
-endmodule
-
-module \$_DFFSRE_NPNP_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
-    output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(!S));
-endmodule
-
-module \$_DFFSRE_NNNP_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+module \$_DFFSRE_NNNP_ (C, S, R, E, D, Q);
+    input  C;
+    input  S;
+    input  R;
+    input  E;
+    input  D;
     output Q;
     dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(S));
 endmodule
 
-
-module \$_DFFSRE_NPPN_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+// DFF, synchronous set or reset, enable
+module \$_SDFFE_PN0P_ (D, C, R, E, Q);
+    input  D;
+    input  C;
+    input  R;
+    input  E;
     output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(!S));
+    sdffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(1'b1));
 endmodule
 
-module \$_DFFSRE_NNPN_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+module \$_SDFFE_PN1P_ (D, C, R, E, Q);
+    input  D;
+    input  C;
+    input  R;
+    input  E;
     output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(!R), .S(S));
+    sdffsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(R));
 endmodule
 
-module \$_DFFSRE_NPNN_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+module \$_SDFFE_NN0P_ (D, C, R, E, Q);
+    input  D;
+    input  C;
+    input  R;
+    input  E;
     output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(!S));
+    sdffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(R), .S(1'b1));
 endmodule
 
-module \$_DFFSRE_NNNN_ (D, C, E, R, S, Q);
-    input D;
-    input C;
-    input E;
-    input R;
-    input S;
+module \$_SDFFE_NN1P_ (D, C, R, E, Q);
+    input  D;
+    input  C;
+    input  R;
+    input  E;
     output Q;
-    dffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(!E), .R(R), .S(S));
+    sdffnsre _TECHMAP_REPLACE_ (.Q(Q), .D(D), .C(C), .E(E), .R(1'b1), .S(R));
 endmodule
 
-module \$__SHREG_DFF_P_ (D, Q, C);
-    input D;
-    input C;
-    output Q;
+// Latch, no set/reset, no enable
+module  \$_DLATCH_P_ (input E, D, output Q);
+    latch  _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E));
+endmodule
 
-    parameter DEPTH = 2;
-    reg [DEPTH-2:0] q;
-    genvar i;
-    generate for (i = 0; i < DEPTH; i = i + 1) begin: slice
+module  \$_DLATCH_N_ (input E, D, output Q);
+    latchn _TECHMAP_REPLACE_ (.D(D), .Q(Q), .G(E));
+endmodule
 
+// Latch with async set and reset and enable
+module  \$_DLATCHSR_PPP_ (input E, S, R, D, output Q);
+    latchsre  _TECHMAP_REPLACE_ (.D(D), .Q(Q), .E(1'b1), .G(E),  .R(!R), .S(!S));
+endmodule
 
-        // First in chain
-        generate if (i == 0) begin
-                 sh_dff #() shreg_beg (
-                    .Q(q[i]),
-                    .D(D),
-                    .C(C)
-                );
-        end endgenerate
-        // Middle in chain
-        generate if (i > 0 && i != DEPTH-1) begin
-                 sh_dff #() shreg_mid (
-                    .Q(q[i]),
-                    .D(q[i-1]),
-                    .C(C)
-                );
-        end endgenerate
-        // Last in chain
-        generate if (i == DEPTH-1) begin
-                 sh_dff #() shreg_end (
-                    .Q(Q),
-                    .D(q[i-1]),
-                    .C(C)
-                );
-        end endgenerate
-   end: slice
-   endgenerate
-
+module  \$_DLATCHSR_NPP_ (input E, S, R, D, output Q);
+    latchnsre _TECHMAP_REPLACE_ (.D(D), .Q(Q), .E(1'b1), .G(E),  .R(!R), .S(!S));
 endmodule