module IBUF(input I, output O); assign O = I; endmodule module IOBUFE(input I, input E, output O, inout IO); assign O = IO; assign IO = E ? I : 1'bz; endmodule module ANDTERM(IN, IN_B, OUT); parameter TRUE_INP = 0; parameter COMP_INP = 0; input [TRUE_INP-1:0] IN; input [COMP_INP-1:0] IN_B; output reg OUT; integer i; always @(*) begin OUT = 1; for (i = 0; i < TRUE_INP; i=i+1) OUT = OUT & IN[i]; for (i = 0; i < COMP_INP; i=i+1) OUT = OUT & ~IN_B[i]; end endmodule module ORTERM(IN, OUT); parameter WIDTH = 0; input [WIDTH-1:0] IN; output reg OUT; integer i; always @(*) begin OUT = 0; for (i = 0; i < WIDTH; i=i+1) begin OUT = OUT | IN[i]; end end endmodule module MACROCELL_XOR(IN_PTC, IN_ORTERM, OUT); parameter INVERT_OUT = 0; input IN_PTC; input IN_ORTERM; output wire OUT; wire xor_intermed; assign OUT = INVERT_OUT ? ~xor_intermed : xor_intermed; assign xor_intermed = IN_ORTERM ^ IN_PTC; endmodule module FDCP (C, PRE, CLR, D, Q); parameter INIT = 0; input C, PRE, CLR, D; output reg Q; initial begin Q <= INIT; end always @(posedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else Q <= D; end endmodule module FDCP_N (C, PRE, CLR, D, Q); parameter INIT = 0; input C, PRE, CLR, D; output reg Q; initial begin Q <= INIT; end always @(negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else Q <= D; end endmodule module LDCP (G, PRE, CLR, D, Q); parameter INIT = 0; input G, PRE, CLR, D; output reg Q; initial begin Q <= INIT; end always @* begin if (CLR == 1) Q <= 0; else if (G == 1) Q <= D; else if (PRE == 1) Q <= 1; end endmodule module LDCP_N (G, PRE, CLR, D, Q); parameter INIT = 0; input G, PRE, CLR, D; output reg Q; initial begin Q <= INIT; end always @* begin if (CLR == 1) Q <= 0; else if (G == 0) Q <= D; else if (PRE == 1) Q <= 1; end endmodule module BUFG(I, O); input I; output O; assign O = I; endmodule module BUFGSR(I, O); parameter INVERT = 0; input I; output O; assign O = INVERT ? ~I : I; endmodule module BUFGTS(I, O); parameter INVERT = 0; input I; output O; assign O = INVERT ? ~I : I; endmodule module FDDCP (C, PRE, CLR, D, Q); parameter INIT = 0; input C, PRE, CLR, D; output reg Q; initial begin Q <= INIT; end always @(posedge C, negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else Q <= D; end endmodule module FTCP (C, PRE, CLR, T, Q); parameter INIT = 0; input C, PRE, CLR, T; output wire Q; reg Q_; initial begin Q_ <= INIT; end always @(posedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q_ <= 0; else if (PRE == 1) Q_ <= 1; else if (T == 1) Q_ <= ~Q_; end assign Q = Q_; endmodule module FTCP_N (C, PRE, CLR, T, Q); parameter INIT = 0; input C, PRE, CLR, T; output wire Q; reg Q_; initial begin Q_ <= INIT; end always @(negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q_ <= 0; else if (PRE == 1) Q_ <= 1; else if (T == 1) Q_ <= ~Q_; end assign Q = Q_; endmodule module FTDCP (C, PRE, CLR, T, Q); parameter INIT = 0; input C, PRE, CLR, T; output wire Q; reg Q_; initial begin Q_ <= INIT; end always @(posedge C, negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q_ <= 0; else if (PRE == 1) Q_ <= 1; else if (T == 1) Q_ <= ~Q_; end assign Q = Q_; endmodule module FDCPE (C, PRE, CLR, D, Q, CE); parameter INIT = 0; input C, PRE, CLR, D, CE; output reg Q; initial begin Q <= INIT; end always @(posedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else if (CE == 1) Q <= D; end endmodule module FDCPE_N (C, PRE, CLR, D, Q, CE); parameter INIT = 0; input C, PRE, CLR, D, CE; output reg Q; initial begin Q <= INIT; end always @(negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else if (CE == 1) Q <= D; end endmodule module FDDCPE (C, PRE, CLR, D, Q, CE); parameter INIT = 0; input C, PRE, CLR, D, CE; output reg Q; initial begin Q <= INIT; end always @(posedge C, negedge C, posedge PRE, posedge CLR) begin if (CLR == 1) Q <= 0; else if (PRE == 1) Q <= 1; else if (CE == 1) Q <= D; end endmodule