diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/Makefile
index ad94052..0cce75d 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/asymmetric_bram18k_sdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/asymmetric_bram18k_sdp_tb.v
index f71ee13..e8ffaa5 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/asymmetric_bram18k_sdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram18k_sdp/sim/asymmetric_bram18k_sdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,7 +23,7 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk_0;
-  reg clk_1;
+	reg clk_1;
 	reg rce;
 	reg [`ADDR_WIDTH1-1:0] ra;
 	wire [`DATA_WIDTH1-1:0] rq;
@@ -34,12 +34,11 @@
 	initial clk_0 = 0;
 	initial clk_1 = 0;
 	initial ra = 0;
-  initial wa = 0;
-  initial wd = 0;
+	initial wa = 0;
+	initial wd = 0;
 	initial rce = 0;
-  initial wce = 0;
+	initial wce = 0;
 	initial forever #(PERIOD / 2.0) clk_0 = ~clk_0;
-  //initial forever #(PERIOD / 2.0) clk_1 = ~clk_1;
 	initial begin
 		#(PERIOD / 4.0);
 		forever #(PERIOD / 2.0) clk_1 = ~clk_1;
@@ -72,76 +71,76 @@
 			error_0_cnt <= error_0_cnt + 1'b1;
 	end
 
-case (`STRINGIFY(`TOP))
-"spram_9x2048_18x1024": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = a[9:1];
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[8],a[8],a[7:0],a[7:0]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+	case (`STRINGIFY(`TOP))
+	"spram_9x2048_18x1024": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = a[9:1];
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
 				end
 			end
-		end
-		done_0 = 1'b1;
-    a = 0;
-	end
-end
-"spram_18x1024_9x2048": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = {a[8],a[8],a[7:0],a[7:0]};
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[9:1]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin
+					expected_0 <= {a[8],a[8],a[7:0],a[7:0]};				
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
 				end
 			end
+			done_0 = 1'b1;
+			a = 0;		
 		end
-		done_0 = 1'b1;
-    a = 0;
 	end
-end  
-endcase
+	"spram_18x1024_9x2048": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = {a[8],a[8],a[7:0],a[7:0]};
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
+				end
+			end
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin				
+					expected_0 <= {a[9:1]};
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
+				end
+			end
+			done_0 = 1'b1;
+			a = 0;		
+		end
+	end	 
+	endcase
 
 	// Scan for simulation finish
 	always @(posedge clk_1) begin
@@ -153,7 +152,7 @@
 		"spram_9x2048_18x1024": begin
 			spram_9x2048_18x1024 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),			
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -165,7 +164,7 @@
 		"spram_18x1024_9x2048": begin
 			spram_18x1024_9x2048 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),			
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/asymmetric_bram36k_afifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/asymmetric_bram36k_afifo.v
index 031a4bd..6cef5f5 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/asymmetric_bram36k_afifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/asymmetric_bram36k_afifo.v
@@ -33,7 +33,7 @@
 
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                 )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -53,8 +53,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af2048x18_1024x36 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -75,7 +74,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -95,8 +94,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af2048x18_4098x9 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -117,7 +115,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -137,8 +135,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af1024x36_4098x9 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -159,7 +156,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -179,6 +176,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/Makefile
index 9686158..76bc1c7 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/asymmetric_bram36k_afifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/asymmetric_bram36k_afifo_tb.v
index 5be25e7..dd40a5a 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/asymmetric_bram36k_afifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_afifo/sim/asymmetric_bram36k_afifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//	http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,32 +23,32 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk0;
-  reg clk1;
-  reg flush;
+	reg clk1;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
-	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	reg [`DATA_WIDTH0-1:0] din;	 
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk0 = 0;
-    clk1 = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk0 = 0;
+		clk1 = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk0 = ~clk0;
-  initial forever #(PERIOD / 2.0) clk1 = ~clk1;
-  
+	initial forever #(PERIOD / 2.0) clk1 = ~clk1;
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -58,12 +58,12 @@
 
 	reg done;
 	initial done = 1'b0;
-  
-  reg read_test;
+	
+	reg read_test;
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	wire error = (read_test) ? dout !== expected : 0;
 
@@ -74,136 +74,136 @@
 			error_cnt <= error_cnt + 1'b1; 
 	end
 
-case (`STRINGIFY(`TOP))
-"af4096x9_1024x36": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = a[10:2];
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk1) begin
-        expected <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	case (`STRINGIFY(`TOP))
+	"af4096x9_1024x36": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = a[10:2];
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk1) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk1) begin
+					expected <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk1) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
 	end
-end
-"af2048x18_1024x36": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = a[18:1];
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk1) begin
-        expected <= {a[17:0],a[17:0]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	"af2048x18_1024x36": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = a[18:1];
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk1) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk1) begin
+					expected <= {a[17:0],a[17:0]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk1) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
+	end	 
+	"af2048x18_4098x9": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = {a[8],a[8],a[7:0],a[7:0]};
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
+				end
+			end
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk1) begin
+					expected <= {a[9:1]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk1) begin
+					pop = 1;
+				end
+			end
+			done = 1'b1;
+			a = 0;
+		end
 	end
-end  
-"af2048x18_4098x9": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = {a[8],a[8],a[7:0],a[7:0]};
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk1) begin
-        expected <= {a[9:1]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	"af1024x36_4098x9": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk1) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk1) begin
+					expected <= {a[10:2]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk1) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
 	end
-end
-"af1024x36_4098x9": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk1) begin
-        expected <= {a[10:2]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
-				end
-			end
-      @(negedge clk1) begin
-				pop = 1;
-			end
-		end
-		done = 1'b1;
-    a = 0;
-  end
-end
-endcase
+	endcase
 
 	// Scan for simulation finish
 	always @(posedge clk1) begin
@@ -214,78 +214,78 @@
 	case (`STRINGIFY(`TOP))
 		"af4096x9_1024x36": begin
 			af4096x9_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af2048x18_1024x36": begin
 			af2048x18_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af2048x18_4098x9": begin
 			af2048x18_4098x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af1024x36_4098x9": begin
 			af1024x36_4098x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 	endcase
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/Makefile
index fc7c0e9..88ba3d5 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/Makefile
@@ -1,10 +1,18 @@
-# Copyright (C) 2019-2022 The SymbiFlow Authors
+# Copyright 2020-2022 F4PGA Authors
 #
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
 #
-# SPDX-License-Identifier: ISC
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
 
 TESTBENCH = asymmetric_bram36k_sdp_tb.v
 POST_SYNTH = spram_9x4096_36x1024_post_synth spram_18x2048_36x1024_post_synth spram_18x2048_9x4096_post_synth spram_36x1024_18x2048_post_synth
@@ -31,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/asymmetric_bram36k_sdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/asymmetric_bram36k_sdp_tb.v
index 6ddc6c7..38064a3 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/asymmetric_bram36k_sdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sdp/sim/asymmetric_bram36k_sdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,7 +23,7 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk_0;
-  reg clk_1;
+	reg clk_1;
 	reg rce;
 	reg [`ADDR_WIDTH1-1:0] ra;
 	wire [`DATA_WIDTH1-1:0] rq;
@@ -34,12 +34,11 @@
 	initial clk_0 = 0;
 	initial clk_1 = 0;
 	initial ra = 0;
-  initial wa = 0;
-  initial wd = 0;
+	initial wa = 0;
+	initial wd = 0;
 	initial rce = 0;
-  initial wce = 0;
+	initial wce = 0;
 	initial forever #(PERIOD / 2.0) clk_0 = ~clk_0;
-  //initial forever #(PERIOD / 2.0) clk_1 = ~clk_1;
 	initial begin
 		#(PERIOD / 4.0);
 		forever #(PERIOD / 2.0) clk_1 = ~clk_1;
@@ -72,144 +71,144 @@
 			error_0_cnt <= error_0_cnt + 1'b1;
 	end
 
-case (`STRINGIFY(`TOP))
-"spram_9x4096_36x1024": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = a[10:2];
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+	case (`STRINGIFY(`TOP))
+	"spram_9x4096_36x1024": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = a[10:2];
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
 				end
 			end
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin
+					expected_0 <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
+				end
+			end
+			done_0 = 1'b1;
+			a = 0;
 		end
-		done_0 = 1'b1;
-    a = 0;
 	end
-end
-"spram_18x2048_36x1024": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = a[18:1];
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[17:0],a[17:0]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+	"spram_18x2048_36x1024": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = a[18:1];
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
 				end
 			end
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin
+					expected_0 <= {a[17:0],a[17:0]};
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
+				end
+			end
+			done_0 = 1'b1;
+			a = 0;
 		end
-		done_0 = 1'b1;
-    a = 0;
+	end	 
+	"spram_18x2048_9x4096": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = {a[8],a[8],a[7:0],a[7:0]};
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
+				end
+			end
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin
+					expected_0 <= {a[9:1]};
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
+				end
+			end
+			done_0 = 1'b1;
+			a = 0;
+		end
 	end
-end  
-"spram_18x2048_9x4096": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = {a[8],a[8],a[7:0],a[7:0]};
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[9:1]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+	"spram_36x1024_18x2048": begin
+		initial #(1) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk_0) begin
+					wa = a[`ADDR_WIDTH0-1:0];
+					wd = {a[17:0],a[17:0]};
+					wce = 1;
+				end
+				@(posedge clk_0) begin
+					#(PERIOD/10) wce = 0;
 				end
 			end
+			// Read data
+			read_test_0 = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(negedge clk_1) begin
+					ra = a;
+					rce = 1;
+				end
+				@(posedge clk_1) begin
+					expected_0 <= {a[18:1]};
+					#(PERIOD/10) rce = 0;
+					if ( rq !== expected_0) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
+					end
+				end
+			end
+			done_0 = 1'b1;
+			a = 0;
 		end
-		done_0 = 1'b1;
-    a = 0;
 	end
-end
-"spram_36x1024_18x2048": begin
-	initial #(1) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk_0) begin
-				wa = a[`ADDR_WIDTH0-1:0];
-				wd = {a[17:0],a[17:0]};
-				wce = 1;
-			end
-			@(posedge clk_0) begin
-				#(PERIOD/10) wce = 0;
-			end
-		end
-		// Read data
-		read_test_0 = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(negedge clk_1) begin
-				ra = a;
-				rce = 1;
-			end
-			@(posedge clk_1) begin
-        expected_0 <= {a[18:1]};
-				#(PERIOD/10) rce = 0;
-				if ( rq !== expected_0) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, rq, expected_0, a);
-				end
-			end
-		end
-		done_0 = 1'b1;
-    a = 0;
-  end
-end
-endcase
+	endcase
 
 	// Scan for simulation finish
 	always @(posedge clk_1) begin
@@ -221,7 +220,7 @@
 		"spram_9x4096_36x1024": begin
 			spram_9x4096_36x1024 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -233,7 +232,7 @@
 		"spram_18x2048_36x1024": begin
 			spram_18x2048_36x1024 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -245,7 +244,7 @@
 		"spram_18x2048_9x4096": begin
 			spram_18x2048_9x4096 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -257,7 +256,7 @@
 		"spram_36x1024_18x2048": begin
 			spram_36x1024_18x2048 #() bram (
 				.clock0(clk_0),
-        .clock1(clk_1),        
+				.clock1(clk_1),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/asymmetric_bram36k_sfifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/asymmetric_bram36k_sfifo.v
index fd01e93..c0b6507 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/asymmetric_bram36k_sfifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/asymmetric_bram36k_sfifo.v
@@ -32,7 +32,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -51,8 +51,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f2048x18_1024x36 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -73,7 +72,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -92,8 +91,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f2048x18_4098x9 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -114,7 +112,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -133,8 +131,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f1024x36_2048x18 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -155,7 +152,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -174,6 +171,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/Makefile
index a015284..e13baa3 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/asymmetric_bram36k_sfifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/asymmetric_bram36k_sfifo_tb.v
index ba6775d..b1c753c 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/asymmetric_bram36k_sfifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/asymmetric_bram36k_sfifo/sim/asymmetric_bram36k_sfifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,29 +23,29 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk0;
-  reg flush;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
 	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk0 = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk0 = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk0 = ~clk0;
-  
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -55,12 +55,12 @@
 
 	reg done;
 	initial done = 1'b0;
-  
-  reg read_test;
+	
+	reg read_test;
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	wire error = (read_test) ? dout !== expected : 0;
 
@@ -71,136 +71,136 @@
 			error_cnt <= error_cnt + 1'b1; 
 	end
 
-case (`STRINGIFY(`TOP))
-"f4096x9_1024x36": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = a[10:2];
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk0) begin
-        expected <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	case (`STRINGIFY(`TOP))
+	"f4096x9_1024x36": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = a[10:2];
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk0) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk0) begin
+					expected <= {a[8],a[8],a[7:0],a[7:0],a[8],a[8],a[7:0],a[7:0]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk0) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
 	end
-end
-"f2048x18_1024x36": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = a[18:1];
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk0) begin
-        expected <= {a[17:0],a[17:0]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	"f2048x18_1024x36": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = a[18:1];
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk0) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk0) begin
+					expected <= {a[17:0],a[17:0]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk0) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
+	end	 
+	"f2048x18_4098x9": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = {a[8],a[8],a[7:0],a[7:0]};
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
+				end
+			end
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk0) begin
+					expected <= {a[9:1]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk0) begin
+					pop = 1;
+				end
+			end
+			done = 1'b1;
+			a = 0;
+		end
 	end
-end  
-"f2048x18_4098x9": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = {a[8],a[8],a[7:0],a[7:0]};
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk0) begin
-        expected <= {a[9:1]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+	"f1024x36_2048x18": begin
+		initial #(50) begin
+			// Write data
+			for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
+				@(negedge clk0) begin
+					din = {a[17:0],a[17:0]};
+					push = 1;
+				end
+				@(posedge clk0) begin
+					#(PERIOD/10) push = 0;
 				end
 			end
-      @(negedge clk0) begin
-				pop = 1;
+			// Read data
+			read_test = 1;
+			for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
+				@(posedge clk0) begin
+					expected <= {a[18:1]};
+					#(PERIOD/10) pop = 0;
+					if ( dout !== expected) begin
+						$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
+					end else begin
+						$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
+					end
+				end
+				@(negedge clk0) begin
+					pop = 1;
+				end
 			end
+			done = 1'b1;
+			a = 0;
 		end
-		done = 1'b1;
-    a = 0;
 	end
-end
-"f1024x36_2048x18": begin
-	initial #(50) begin
-		// Write data
-		for (a = 0; a < (1<<`ADDR_WIDTH0) ; a = a + ADDR_INCR) begin
-			@(negedge clk0) begin
-				din = {a[17:0],a[17:0]};
-				push = 1;
-			end
-			@(posedge clk0) begin
-				#(PERIOD/10) push = 0;
-			end
-		end
-		// Read data
-		read_test = 1;
-		for (a = 0; a < (1<<`ADDR_WIDTH1); a = a + ADDR_INCR) begin
-			@(posedge clk0) begin
-        expected <= {a[18:1]};
-				#(PERIOD/10) pop = 0;
-				if ( dout !== expected) begin
-					$display("%d: PORT 0: FAIL: mismatch act=%x exp=%x at %x", $time, dout, expected, a);
-				end else begin
-					$display("%d: PORT 0: OK: act=%x exp=%x at %x", $time, dout, expected, a);
-				end
-			end
-      @(negedge clk0) begin
-				pop = 1;
-			end
-		end
-		done = 1'b1;
-    a = 0;
-  end
-end
-endcase
+	endcase
 
 	// Scan for simulation finish
 	always @(posedge clk0) begin
@@ -211,74 +211,74 @@
 	case (`STRINGIFY(`TOP))
 		"f4096x9_1024x36": begin
 			f4096x9_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f2048x18_1024x36": begin
 			f2048x18_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f2048x18_4098x9": begin
 			f2048x18_4098x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f1024x36_2048x18": begin
 			f1024x36_2048x18 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 	endcase
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/bram18k_afifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/bram18k_afifo.v
index e4aa0e9..bd1fa13 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/bram18k_afifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/bram18k_afifo.v
@@ -32,7 +32,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -52,8 +52,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af1024x16_1024x16 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -74,7 +73,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -94,8 +93,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af2048x9_2048x9 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -116,7 +114,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -136,8 +134,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af2048x8_2048x8 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -158,7 +155,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -178,6 +175,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/Makefile
index 0153897..3c2bce7 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/bram18k_afifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/bram18k_afifo_tb.v
index 62460b1..1795312 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/bram18k_afifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_afifo/sim/bram18k_afifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,32 +23,32 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk0;
-  reg clk1;
-  reg flush;
+	reg clk1;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
 	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk0 = 0;
-    clk1 = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk0 = 0;
+		clk1 = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk0 = ~clk0;
-  initial forever #(PERIOD / 2.0) clk1 = ~clk1;
-  
+	initial forever #(PERIOD / 2.0) clk1 = ~clk1;
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -63,7 +63,7 @@
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	always @(posedge clk1) begin
 		expected <= (a | (a << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
@@ -79,7 +79,7 @@
 	end
 
 	initial #(50) begin
-    @(posedge clk0)
+		@(posedge clk0)
 		// Write data
 		for (a = 0; a < (1<<`ADDR_WIDTH0); a = a + ADDR_INCR) begin
 			@(negedge clk0) begin
@@ -117,78 +117,78 @@
 	case (`STRINGIFY(`TOP))
 		"af1024x18_1024x18": begin
 			af1024x18_1024x18 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af1024x16_1024x16": begin
 			af1024x16_1024x16 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af2048x9_2048x9": begin
 			af2048x9_2048x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end		
 		"af2048x8_2048x8": begin
 			af2048x8_2048x8 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end	
 	endcase
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/Makefile
index 4a8ae5e..aeb9aec 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/bram18k_sdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/bram18k_sdp_tb.v
index 1294edd..8d91922 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/bram18k_sdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sdp/sim/bram18k_sdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -126,7 +126,7 @@
 			end
 		end
 		done_0 = 1'b1;
-    a = 0;
+		a = 0;
 	end
 
 	// PART 1
@@ -159,7 +159,7 @@
 			end
 		end
 		done_1 = 1'b1;
-    b = (1<<`ADDR_WIDTH1) / 2;
+		b = (1<<`ADDR_WIDTH1) / 2;
 	end
 
 	// Scan for simulation finish
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/bram18k_sfifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/bram18k_sfifo.v
index d018b00..c559134 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/bram18k_sfifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/bram18k_sfifo.v
@@ -32,7 +32,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -51,8 +51,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f1024x16_1024x16 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -73,7 +72,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -92,8 +91,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f2048x9_2048x9 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -114,7 +112,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -133,8 +131,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f2048x8_2048x8 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -155,7 +152,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_18K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -174,6 +171,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/Makefile
index 2a46d29..86a1b10 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/bram18k_sfifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/bram18k_sfifo_tb.v
index f5c56cf..579d881 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/bram18k_sfifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_sfifo/sim/bram18k_sfifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,29 +23,29 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk;
-  reg flush;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
 	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk = ~clk;
-  
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -55,12 +55,12 @@
 
 	reg done;
 	initial done = 1'b0;
-  
+	
 	reg read_test;
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	always @(posedge clk) begin
 		expected <= (a | (a << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
@@ -76,7 +76,7 @@
 	end
 
 	initial #(50) begin
-    @(posedge clk)
+		@(posedge clk)
 		// Write data
 		for (a = 0; a < (1<<`ADDR_WIDTH0); a = a + ADDR_INCR) begin
 			@(negedge clk) begin
@@ -114,75 +114,75 @@
 	case (`STRINGIFY(`TOP))
 		"f1024x18_1024x18": begin
 			f1024x18_1024x18 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f1024x16_1024x16": begin
 			f1024x16_1024x16 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f2048x9_2048x9": begin
 			f2048x9_2048x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end	
 		"f2048x8_2048x8": begin
 			f2048x8_2048x8 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
-		end	    
+		end			
 	endcase
 endmodule
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/Makefile
index 83ea28e..b9883eb 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-#FIXME: $(call simulate_post_synth,3)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/bram18k_tdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/bram18k_tdp_tb.v
index ec5ca14..004f32c 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/bram18k_tdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram18k_tdp/sim/bram18k_tdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -24,29 +24,29 @@
 
 	reg clk_a;
 	reg rce_a_0;
-  reg rce_a_1;
+	reg rce_a_1;
 	reg [`ADDR_WIDTH0-1:0] ra_a_0;
-  reg [`ADDR_WIDTH1-1:0] ra_a_1;
+	reg [`ADDR_WIDTH1-1:0] ra_a_1;
 	wire [`DATA_WIDTH0-1:0] rq_a_0;
 	wire [`DATA_WIDTH1-1:0] rq_a_1;
 	reg wce_a_0;
-  reg wce_a_1;
+	reg wce_a_1;
 	reg [`ADDR_WIDTH0-1:0] wa_a_0;
-  reg [`ADDR_WIDTH1-1:0] wa_a_1;
+	reg [`ADDR_WIDTH1-1:0] wa_a_1;
 	reg [`DATA_WIDTH0-1:0] wd_a_0;
 	reg [`DATA_WIDTH1-1:0] wd_a_1;
 
 	reg clk_b;
 	reg rce_b_0;
-  reg rce_b_1;
+	reg rce_b_1;
 	reg [`ADDR_WIDTH0-1:0] ra_b_0;
-  reg [`ADDR_WIDTH1-1:0] ra_b_1;
+	reg [`ADDR_WIDTH1-1:0] ra_b_1;
 	wire [`DATA_WIDTH0-1:0] rq_b_0;
 	wire [`DATA_WIDTH1-1:0] rq_b_1;
 	reg wce_b_0;
-  reg wce_b_1;
+	reg wce_b_1;
 	reg [`ADDR_WIDTH0-1:0] wa_b_0;
-  reg [`ADDR_WIDTH1-1:0] wa_b_1;
+	reg [`ADDR_WIDTH1-1:0] wa_b_1;
 	reg [`DATA_WIDTH0-1:0] wd_b_0;
 	reg [`DATA_WIDTH1-1:0] wd_b_1;
 
@@ -54,22 +54,22 @@
 	initial clk_a = 0;
 	initial clk_b = 0;
 	initial ra_a_0 = 0;
-  initial ra_a_1 = 0;
+	initial ra_a_1 = 0;
 	initial ra_b_0 = 0;
-  initial ra_b_1 = 0;
+	initial ra_b_1 = 0;
 	initial rce_a_0 = 0;
-  initial rce_a_1 = 0;
+	initial rce_a_1 = 0;
 	initial rce_b_0 = 0;
-  initial rce_b_1 = 0;
+	initial rce_b_1 = 0;
 	initial wce_a_0 = 0;
-  initial wce_a_1 = 0;
+	initial wce_a_1 = 0;
 	initial wce_b_0 = 0;
-  initial wce_b_1 = 0;
+	initial wce_b_1 = 0;
 	initial forever #(PERIOD / 2.0) clk_a = ~clk_a;
 	initial begin
 		#(PERIOD / 4.0);
 		forever #(PERIOD / 2.0) clk_b = ~clk_b;
-	end  
+	end	 
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -96,12 +96,12 @@
 	reg [`DATA_WIDTH1-1:0] expected_b_1;
 
 	always @(posedge clk_a) begin
-      expected_a_0 <= (a0 | (a0 << 20) | 20'h55000) & {`DATA_WIDTH0{1'b1}};
-      expected_a_1 <= ((a1+1) | ((a1+1) << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
+			expected_a_0 <= (a0 | (a0 << 20) | 20'h55000) & {`DATA_WIDTH0{1'b1}};
+			expected_a_1 <= ((a1+1) | ((a1+1) << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
 	end
 	always @(posedge clk_b) begin
-      expected_b_0 <= ((b0+2) | ((b0+2) << 20) | 20'h55000) & {`DATA_WIDTH0{1'b1}};
-      expected_b_1 <= ((b1+3) | ((b1+3) << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
+			expected_b_0 <= ((b0+2) | ((b0+2) << 20) | 20'h55000) & {`DATA_WIDTH0{1'b1}};
+			expected_b_1 <= ((b1+3) | ((b1+3) << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
 	end
 
 	wire error_a_0 = a0 != 0 ? (rq_a_0 !== expected_a_0) : 0;
@@ -158,10 +158,10 @@
 			end
 		end
 		done_a0 = 1'b1;
-    a0 = 0;
-	  // PORTs B0
-    @(posedge clk_b)
-    #2;
+		a0 = 0;
+		// PORTs B0
+		@(posedge clk_b)
+		#2;
 		// Write data
 		for (b0 = (1<<`ADDR_WIDTH0) / 2; b0 < (1<<`ADDR_WIDTH0); b0 = b0 + ADDR_INCR) begin
 			@(negedge clk_b) begin
@@ -189,10 +189,10 @@
 			end
 		end
 		done_b0 = 1'b1;
-	  b0 = (1<<`ADDR_WIDTH0) / 2;
-	  // PORTs A1
-    @(posedge clk_a)
-    #2;
+		b0 = (1<<`ADDR_WIDTH0) / 2;
+		// PORTs A1
+		@(posedge clk_a)
+		#2;
 		// Write data
 		for (a1 = 0; a1 < (1<<`ADDR_WIDTH1) / 2; a1 = a1 + ADDR_INCR) begin
 			@(negedge clk_a) begin
@@ -220,10 +220,10 @@
 			end
 		end
 		done_a1 = 1'b1;
-    a1 = 0;
-	  // PORTs B1
-    @(posedge clk_b)
-    #2;
+		a1 = 0;
+		// PORTs B1
+		@(posedge clk_b)
+		#2;
 		// Write data
 		for (b1 = (1<<`ADDR_WIDTH1) / 2; b1 < (1<<`ADDR_WIDTH1); b1 = b1 + ADDR_INCR) begin
 			@(negedge clk_b) begin
@@ -251,7 +251,7 @@
 			end
 		end
 		done_b1 = 1'b1;
-    b1 = (1<<`ADDR_WIDTH1) / 2;
+		b1 = (1<<`ADDR_WIDTH1) / 2;
 	end
 
 	// Scan for simulation finish
@@ -259,7 +259,7 @@
 		if (done_sim)
 			$finish_and_return( (error_a_0_cnt == 0 & error_b_0_cnt == 0 & error_a_1_cnt == 0 & error_b_1_cnt == 0) ? 0 : -1 );
 	end
-  
+	
 	case (`STRINGIFY(`TOP))
 		"dpram_18x1024_9x2048": begin
 			dpram_18x1024_9x2048 #() bram (
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/bram36k_afifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/bram36k_afifo.v
index 1b97e7f..2fc55ee 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/bram36k_afifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/bram36k_afifo.v
@@ -32,7 +32,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -52,8 +52,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af2048x18_2048x18 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -74,7 +73,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -94,8 +93,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module af4096x9_4096x9 (DIN,PUSH,POP,clock0,clock1,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -116,7 +114,7 @@
 output Overrun_Error, Underrun_Error;
 
 AFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -136,6 +134,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/Makefile
index 8b777b5..7c93214 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/bram36k_afifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/bram36k_afifo_tb.v
index addf547..48424fc 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/bram36k_afifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_afifo/sim/bram36k_afifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,32 +23,32 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk0;
-  reg clk1;
-  reg flush;
+	reg clk1;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
 	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk0 = 0;
-    clk1 = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk0 = 0;
+		clk1 = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk0 = ~clk0;
-  initial forever #(PERIOD / 2.0) clk1 = ~clk1;
-  
+	initial forever #(PERIOD / 2.0) clk1 = ~clk1;
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -58,12 +58,12 @@
 
 	reg done;
 	initial done = 1'b0;
-  
-  reg read_test;
+	
+	reg read_test;
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	always @(posedge clk1) begin
 		expected <= (a | (a << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
@@ -80,7 +80,7 @@
 
 
 	initial #(50) begin
-    @(posedge clk0)
+		@(posedge clk0)
 		// Write data
 		for (a = 0; a < (1<<`ADDR_WIDTH0); a = a + ADDR_INCR) begin
 			@(negedge clk0) begin
@@ -118,59 +118,59 @@
 	case (`STRINGIFY(`TOP))
 		"af1024x36_1024x36": begin
 			af1024x36_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af2048x18_2048x18": begin
 			af2048x18_2048x18 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"af4096x9_4096x9": begin
 			af4096x9_4096x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk0),
-        .clock1(clk1),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk0),
+				.clock1(clk1),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end		
 	endcase
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/Makefile
index ca7d1af..05b231f 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/Makefile
@@ -35,7 +35,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/bram36k_sdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/bram36k_sdp_tb.v
index 1c003ec..c47b873 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/bram36k_sdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sdp/sim/bram36k_sdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -103,7 +103,7 @@
 		"spram_36x1024": begin
 			spram_36x1024 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -115,7 +115,7 @@
 		"spram_32x1024": begin
 			spram_32x1024 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -127,7 +127,7 @@
 		"spram_18x2048": begin
 			spram_18x2048 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -139,7 +139,7 @@
 		"spram_16x2048": begin
 			spram_16x2048 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -151,7 +151,7 @@
 		"spram_9x4096": begin
 			spram_9x4096 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
@@ -163,7 +163,7 @@
 		"spram_8x4096": begin
 			spram_8x4096 #() bram (
 				.clock0(clk),
-        .clock1(clk),        
+				.clock1(clk),				 
 				.REN_i(rce),
 				.RD_ADDR_i(ra),
 				.RDATA_o(rq),
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/bram36k_sfifo.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/bram36k_sfifo.v
index 63df3b2..d3bf2d6 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/bram36k_sfifo.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/bram36k_sfifo.v
@@ -32,7 +32,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -51,8 +51,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f2048x18_2048x18 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -73,7 +72,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -92,8 +91,7 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
 
 module f4096x9_4096x9 (DIN,PUSH,POP,clock0,Async_Flush,Almost_Full,Almost_Empty,Full,Empty,Full_Watermark,Empty_Watermark,Overrun_Error,Underrun_Error,DOUT);
@@ -114,7 +112,7 @@
 output Overrun_Error, Underrun_Error;
 
 SFIFO_36K_BLK  # (.WR_DATA_WIDTH(WR_DATA_WIDTH),.RD_DATA_WIDTH(RD_DATA_WIDTH),.UPAE_DBITS(UPAE_DBITS),.UPAF_DBITS(UPAF_DBITS)
-        				 ) 
+                  )
   FIFO_INST    (
                 .DIN(DIN),
                 .PUSH(PUSH),
@@ -133,6 +131,5 @@
                 .Empty(Empty),
 
                 .DOUT(DOUT)
-         				);
-
+                );
 endmodule
\ No newline at end of file
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/Makefile
index 1cb26f3..e31e1d0 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/Makefile
@@ -39,7 +39,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/bram36k_sfifo_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/bram36k_sfifo_tb.v
index df2362c..76be519 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/bram36k_sfifo_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_sfifo/sim/bram36k_sfifo_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -23,29 +23,29 @@
 	localparam ADDR_INCR = 1;
 
 	reg clk;
-  reg flush;
+	reg flush;
 	reg pop;
 	wire [`DATA_WIDTH1-1:0] dout;
 	reg push;
 	reg [`DATA_WIDTH0-1:0] din;
-  wire almost_full,almost_empty;
-  wire full, empty;
-  wire full_watermark, empty_watermark;
-  wire overrun_error, underrun_error;
+	wire almost_full,almost_empty;
+	wire full, empty;
+	wire full_watermark, empty_watermark;
+	wire overrun_error, underrun_error;
 
-  initial 
-  begin
-    clk = 0;
-    pop = 0;
-    push = 0;
-    flush = 1;
-    din = 0;
-    #40
-    flush = 0;
-  end
-  
+	initial 
+	begin
+		clk = 0;
+		pop = 0;
+		push = 0;
+		flush = 1;
+		din = 0;
+		#40
+		flush = 0;
+	end
+	
 	initial forever #(PERIOD / 3.0) clk = ~clk;
-  
+	
 	initial begin
 		$dumpfile(`STRINGIFY(`VCD));
 		$dumpvars;
@@ -55,12 +55,12 @@
 
 	reg done;
 	initial done = 1'b0;
-  
+	
 	reg read_test;
 	initial read_test = 0;
 
 	reg [`DATA_WIDTH1-1:0] expected;
-  initial expected = 0;
+	initial expected = 0;
 
 	always @(posedge clk) begin
 		expected <= (a | (a << 20) | 20'h55000) & {`DATA_WIDTH1{1'b1}};
@@ -76,7 +76,7 @@
 	end
 
 	initial #(50) begin
-    @(posedge clk)
+		@(posedge clk)
 		// Write data
 		for (a = 0; a < (1<<`ADDR_WIDTH0); a = a + ADDR_INCR) begin
 			@(negedge clk) begin
@@ -114,56 +114,56 @@
 	case (`STRINGIFY(`TOP))
 		"f1024x36_1024x36": begin
 			f1024x36_1024x36 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f2048x18_2048x18": begin
 			f2048x18_2048x18 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end
 		"f4096x9_4096x9": begin
 			f4096x9_4096x9 #() afifo (
-        .DIN(din),
-        .PUSH(push),
-        .POP(pop),
-        .clock0(clk),
-        .Async_Flush(flush),
-        .Almost_Full(almost_full),
-        .Almost_Empty(almost_empty),
-        .Full(full),
-        .Empty(empty),
-        .Full_Watermark(full_watermark),
-        .Empty_Watermark(empty_watermark),
-        .Overrun_Error(overrun_error),
-        .Underrun_Error(underrun_error),
-        .DOUT(dout)
+				.DIN(din),
+				.PUSH(push),
+				.POP(pop),
+				.clock0(clk),
+				.Async_Flush(flush),
+				.Almost_Full(almost_full),
+				.Almost_Empty(almost_empty),
+				.Full(full),
+				.Empty(empty),
+				.Full_Watermark(full_watermark),
+				.Empty_Watermark(empty_watermark),
+				.Overrun_Error(overrun_error),
+				.Underrun_Error(underrun_error),
+				.DOUT(dout)
 			);
 		end		
 	endcase
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/Makefile b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/Makefile
index 2a0c20d..6ce8344 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/Makefile
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/Makefile
@@ -35,7 +35,6 @@
 	@rm -rf  $(word $(1),$(POST_SYNTH)).vcd $(word $(1),$(POST_SYNTH)).vvp $(word $(1),$(POST_SYNTH)).vvp.log $(word $(1),$(POST_SYNTH)).vcd.log
 endef
 
-# FIXME: $(call simulate_post_synth,5)
 sim:
 	$(call simulate_post_synth,1)
 	$(call clean_post_synth_sim,1)
diff --git a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/bram36k_tdp_tb.v b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/bram36k_tdp_tb.v
index 01de7e7..646561a 100644
--- a/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/bram36k_tdp_tb.v
+++ b/ql-qlf-plugin/tests/qlf_k6n10f/bram36k_tdp/sim/bram36k_tdp_tb.v
@@ -4,7 +4,7 @@
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//		 http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -157,7 +157,7 @@
 		if (done_sim)
 			$finish_and_return( (error_a_cnt == 0 & error_b_cnt == 0) ? 0 : -1 );
 	end
-  
+	
 	case (`STRINGIFY(`TOP))
 		"dpram_36x1024": begin
 			dpram_36x1024 #() bram (
@@ -168,7 +168,7 @@
 				.WEN1_i(wce_a),
 				.WR1_ADDR_i(wa_a),
 				.WDATA1_i(wd_a),
-        
+				
 				.clock1(clk_b),
 				.REN2_i(rce_b),
 				.RD2_ADDR_i(ra_b),
@@ -187,7 +187,7 @@
 				.WEN1_i(wce_a),
 				.WR1_ADDR_i(wa_a),
 				.WDATA1_i(wd_a),
-        
+				
 				.clock1(clk_b),
 				.REN2_i(rce_b),
 				.RD2_ADDR_i(ra_b),
@@ -206,7 +206,7 @@
 				.WEN1_i(wce_a),
 				.WR1_ADDR_i(wa_a),
 				.WDATA1_i(wd_a),
-        
+				
 				.clock1(clk_b),
 				.REN2_i(rce_b),
 				.RD2_ADDR_i(ra_b),
