I am attempting to create a working JK flip flop using gate level description in verilog. Although, the design is successfully compiled and simulated, the outputs to the FF are always unknown. 

Please note that the design is a modified 'SR-Latch with enable' design (which is known to operate correctly) with the outputs tied to the inputs.

```
module JK_FlipFlop(input clk, J, K, output Q, Q_not);
    wire    wl0, wl1;

    nand    g0 (wl0, clk, J, Q_not),
            g1 (wl1, clk, K, Q),
            g2 (Q, wl0, Q_not),
            g3 (Q_not, wl1, Q);
endmodule

```

I have also tried other implementation of the JK Flip-flops using gate level description and the outcome is always the same; with the outputs being unknown.

The test bench used is shown below:

```
module test_JKFF;
   reg   clk;
   reg   J;
   reg   K;   
   wire  Q;
   wire  Q_not;   
   // Instantiate the Unit Under Test (UUT)
   initial begin
   // Initialize Inputs
       J = 0;
       K = 0;
       fork
       #5 K = 1;
       #15 J = 1;
       #15 K = 0;
       #25 J = 1;
       #25 K = 1;
       #50 J = 0;
       #50 K = 0;
       #60 K = 1;
       #70 J = 1;
       #70 K = 0;
       #80 K = 1;
       clk = 0;
       join
      // Wait 100 ns for global reset to finish
       #100;
    end

    JK_FlipFlop UUT(clk, J, K, Q, Q_not);

    always #5 clk=!clk;

endmodule

```

Therefore, any insight that anyone may be able to provide in relation to this question would be very much appreciated.

Thanks