| module template (input clk, input d, output reg q); | |
| parameter neg_clk = 0; | |
| initial q = 1'b1; | |
| generate | |
| if (neg_clk) begin | |
| always @(negedge clk) q <= d; | |
| end | |
| else begin | |
| always @(posedge clk) q <= d; | |
| end | |
| endgenerate | |
| endmodule | |
| module top(input clk, input d, output [1:0] q); | |
| template #(.neg_clk(1)) neg_clk(clk, d, q[0]); | |
| template #(.neg_clk(0)) pos_clk(clk, d, q[1]); | |
| endmodule |