mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			310 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			310 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
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
 |