$(eval $(call add_share_file,share,techlibs/common/blackbox.v))
$(eval $(call add_share_file,share,techlibs/common/pmux2mux.v))
$(eval $(call add_share_file,share,techlibs/common/adff2dff.v))
+$(eval $(call add_share_file,share,techlibs/common/cells.lib))
--- /dev/null
+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"; }
+ }
+}