| // yosys -- Yosys Open SYnthesis Suite |
| // |
| // Copyright (C) 2012 - 2019 Clifford Wolf <clifford@clifford.at> |
| // |
| // Permission to use, copy, modify, and/or distribute this software for any |
| // purpose with or without fee is hereby granted, provided that the above |
| // copyright notice and this permission notice appear in all copies. |
| // |
| // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| |
| // This file is copied from here: |
| // https://github.com/YosysHQ/yosys/blob/master/examples/cmos/cmos_cells.lib |
| |
| /* test comment */ |
| library(demo) { |
| cell(BUF) { |
| area: 6; |
| pin(A) { direction: input; } |
| pin(Y) { direction: output; |
| function: "A"; } |
| } |
| cell(NOT) { |
| area: 3; |
| pin(A) { direction: input; } |
| pin(Y) { direction: output; |
| function: "A'"; } |
| } |
| cell(NAND) { |
| area: 4; |
| pin(A) { direction: input; } |
| pin(B) { direction: input; } |
| pin(Y) { direction: output; |
| function: "(A*B)'"; } |
| } |
| cell(NOR) { |
| area: 4; |
| pin(A) { direction: input; } |
| pin(B) { direction: input; } |
| pin(Y) { direction: output; |
| function: "(A+B)'"; } |
| } |
| cell(DFF) { |
| area: 18; |
| ff(IQ, IQN) { clocked_on: C; |
| next_state: D; } |
| pin(C) { direction: input; |
| clock: true; } |
| pin(D) { direction: input; } |
| pin(Q) { direction: output; |
| function: "IQ"; } |
| } |
| cell(DFFSR) { |
| area: 18; |
| ff("IQ", "IQN") { clocked_on: C; |
| next_state: D; |
| preset: S; |
| clear: R; } |
| pin(C) { direction: input; |
| clock: true; } |
| pin(D) { direction: input; } |
| pin(Q) { direction: output; |
| function: "IQ"; } |
| pin(S) { direction: input; } |
| pin(R) { direction: input; } |
| ; // empty statement |
| } |
| } |