]> Witch of Git - minecraft-eda/blob - minecraft.lib
Add a rust program to put designs into minecraft
[minecraft-eda] / minecraft.lib
1 // A cell library for redstone circuits
2 library(redstone) {
3 cell(REPEATER) {
4 area: 3;
5 pin(A) { direction: input; }
6 pin(Y) { direction: output; function: "A"; }
7 }
8 // @TODO: Nail down how we count area.
9 cell(NOT) {
10 area: 4;
11 pin(A) { direction: input; }
12 pin(Y) { direction: output; function: "!A"; }
13 }
14 cell(AND) {
15 area: 10;
16 pin(A) { direction: input; }
17 pin(B) { direction: input; }
18 pin(Y) { direction: output; function: "A & B"; }
19 }
20 cell(NAND) {
21 area: 9;
22 pin(A,B) { direction: input; }
23 pin(Y) { direction: output; function: "!(A & B)"; }
24 }
25 cell(OR) {
26 area: 3;
27 pin(A) { direction: input; }
28 pin(B) { direction: input; }
29 pin(Y) { direction: output; function: "A | B"; }
30 }
31 cell(NOR) {
32 area: 4;
33 pin(A) { direction: input; }
34 pin(B) { direction: input; }
35 pin(Y) { direction: output; function: "!(A | B)"; }
36 }
37 cell(AND3) {
38 area: 16;
39 pin(A) { direction: input; }
40 pin(B) { direction: input; }
41 pin(C) { direction: input; }
42 pin(Y) { direction: output; function: "A & B & C"; }
43 }
44 cell(NAND3) {
45 area: 15;
46 pin(A) { direction: input; }
47 pin(B) { direction: input; }
48 pin(C) { direction: input; }
49 pin(Y) { direction: output; function: "!(A & B & C)"; }
50 }
51 cell(OR3) {
52 area: 4;
53 pin(A) { direction: input; }
54 pin(B) { direction: input; }
55 pin(C) { direction: input; }
56 pin(Y) { direction: output; function: "A | B | C"; }
57 }
58 cell(NOR3) {
59 area: 5;
60 pin(A) { direction: input; }
61 pin(B) { direction: input; }
62 pin(C) { direction: input; }
63 pin(Y) { direction: output; function: "!(A | B | C)"; }
64 }
65 cell(DFF_P) {
66 area: 8;
67 ff(IQ, IQN) { clocked_on: C; next_state: D; }
68 pin(C) { direction: input; clock: true; }
69 pin(D) { direction: input; }
70 pin(Q) { direction: output; function: "IQ"; }
71 }
72 cell(DFF_N) {
73 area: 8;
74 ff(IQ, IQN) { clocked_on: "!C"; next_state: D; }
75 pin(C) { direction: input; clock: true; }
76 pin(D) { direction: input; }
77 pin(Q) { direction: output; function: "IQ"; }
78 }
79 // @TODO: Is there a good DFFE design?
80 }