library(yosys_cells) {
	cell(DFF_N) {
		ff(IQ, IQN) {
			clocked_on: "!C";
			next_state: "D";
		}
		pin(D) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_P) {
		ff(IQ, IQN) {
			clocked_on: "C";
			next_state: "D";
		}
		pin(D) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_NN0) {
		ff(IQ, IQN) {
			clocked_on: "!C";
			next_state: "D";
			clear: "!R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_NN1) {
		ff(IQ, IQN) {
			clocked_on: "!C";
			next_state: "D";
			preset: "!R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_NP0) {
		ff(IQ, IQN) {
			clocked_on: "!C";
			next_state: "D";
			clear: "R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_NP1) {
		ff(IQ, IQN) {
			clocked_on: "!C";
			next_state: "D";
			preset: "R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_PN0) {
		ff(IQ, IQN) {
			clocked_on: "C";
			next_state: "D";
			clear: "!R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_PN1) {
		ff(IQ, IQN) {
			clocked_on: "C";
			next_state: "D";
			preset: "!R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_PP0) {
		ff(IQ, IQN) {
			clocked_on: "C";
			next_state: "D";
			clear: "R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
	cell(DFF_PP1) {
		ff(IQ, IQN) {
			clocked_on: "C";
			next_state: "D";
			preset: "R";
		}
		pin(D) { direction: input; }
		pin(R) { direction: input; }
		pin(C) { direction: input; clock: true; }
		pin(Q) { direction: output; function: "IQ"; }
	}
}