| 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 |