library(mylib) { cell(BUF) { area: 1; pin(X) { direction: input; } pin(Y) { direction: output; function: "X"; } } cell(INV) { area: 1; pin(X) { direction: input; } pin(Y) { direction: output; function: "X'"; } } cell(NAND2) { area: 1; pin(X1) { direction: input; } pin(X2) { direction: input; } pin(Y) { direction: output; function: "(X1&X2)'"; } } cell(NOR2) { area: 1; pin(X1) { direction: input; } pin(X2) { direction: input; } pin(Y) { direction: output; function: "(X1|X2)'"; } } cell(DFF) { area: 1; ff("IQ", "IQN") { clocked_on: CLK; next_state: D; } pin(CLK) { direction: input; clock: true; } pin(D) { direction: input; } pin(Q) { direction: output; function: "IQ"; } pin(nQ) { direction: output; function: "IQN"; } } cell(DFFSR) { area: 1; ff("IQ", "IQN") { clocked_on: CLK; next_state: D; preset: S; clear: R; } pin(CLK) { direction: input; clock: true; } pin(D) { direction: input; } pin(S) { direction: input; } pin(R) { direction: input; } pin(Q) { direction: output; function: "IQ"; } pin(nQ) { direction: output; function: "IQN"; } } }