/* Primitive cells, Clifford Wolf, http://http://www.clifford.at/yosys */

module BUF(A, Y);
    input A;
    output Y;
    assign Y = A;
endmodule

module NOT(A, Y);
    input A;
    output Y;
    assign Y = ~A;
endmodule

module NAND(A, B, Y);
    input A, B;
    output Y;
    assign Y = ~(A & B);
endmodule

module NOR(A, B, Y);
    input A, B;
    output Y;
    assign Y = ~(A | B);
endmodule

module DFF(C, D, Q);
    input C, D;
    output reg Q;
    always @(posedge C)
        Q <= D;
endmodule

module DFFSR(C, D, Q, S, R);
    input C, D, S, R;
    output reg Q;
    always @(posedge C, posedge S, posedge R)
        if (S)
            Q <= 1'b1;
        else if (R)
            Q <= 1'b0;
        else
            Q <= D;
endmodule
