|  | // Copyright (C) 2020-2021  The SymbiFlow 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 | 
|  | // | 
|  | // SPDX-License-Identifier:ISC | 
|  |  | 
|  | module my_dff ( | 
|  | input d, | 
|  | clk, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffe ( | 
|  | input d, | 
|  | clk, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial begin | 
|  | q = 0; | 
|  | end | 
|  | always @(posedge clk) if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffr_p ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or posedge clr) | 
|  | if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffr_p_2 ( | 
|  | input d1, | 
|  | input d2, | 
|  | clk, | 
|  | clr, | 
|  | output reg q1, | 
|  | output reg q2 | 
|  | ); | 
|  | always @(posedge clk or posedge clr) | 
|  | if (clr) begin | 
|  | q1 <= 1'b0; | 
|  | q2 <= 1'b0; | 
|  | end else begin | 
|  | q1 <= d1; | 
|  | q2 <= d2; | 
|  | end | 
|  | endmodule | 
|  |  | 
|  | module my_dffr_n ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or negedge clr) | 
|  | if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffre_p ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or posedge clr) | 
|  | if (clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffre_n ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or negedge clr) | 
|  | if (!clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffs_p ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or posedge pre) | 
|  | if (pre) q <= 1'b1; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffs_n ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or negedge pre) | 
|  | if (!pre) q <= 1'b1; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffse_p ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or posedge pre) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffse_n ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | always @(posedge clk or negedge pre) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffn ( | 
|  | input d, | 
|  | clk, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffnr_p ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge clr) | 
|  | if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffnr_n ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge clr) | 
|  | if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  |  | 
|  | module my_dffns_p ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge pre) | 
|  | if (pre) q <= 1'b1; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffns_n ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge pre) | 
|  | if (!pre) q <= 1'b1; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_ppp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or posedge pre or posedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_pnp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or negedge pre or posedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_ppn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or posedge pre or negedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_pnn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or negedge pre or negedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_npp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge pre or posedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_nnp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge pre or posedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_npn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge pre or negedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsr_nnn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge pre or negedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_ppp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or posedge pre or posedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_pnp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or negedge pre or posedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_ppn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or posedge pre or negedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_pnn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(posedge clk or negedge pre or negedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_npp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge pre or posedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_nnp ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge pre or posedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_npn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or posedge pre or negedge clr) | 
|  | if (pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffsre_nnn ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | clr, | 
|  | en, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 1'b0; | 
|  | always @(negedge clk or negedge pre or negedge clr) | 
|  | if (!pre) q <= 1'b1; | 
|  | else if (!clr) q <= 1'b0; | 
|  | else if (en) q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffs_clk_p ( | 
|  | input d, | 
|  | clk, | 
|  | pre, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 0; | 
|  | always @(posedge clk) | 
|  | if (pre) q <= 1'b1; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  | 
|  | module my_dffs_clk_n ( | 
|  | input d, | 
|  | clk, | 
|  | clr, | 
|  | output reg q | 
|  | ); | 
|  | initial q <= 0; | 
|  | always @(negedge clk) | 
|  | if (!clr) q <= 1'b0; | 
|  | else q <= d; | 
|  | endmodule | 
|  |  |