A kernel digital standard cell library is used to implement all digital blocks except those in the cpu. The cpu cells will use a similar set of functions but will be massaged to suit the space and the optimum drive.
The cells in the kernel library are listed below. In that table, the function is defined in Boolean terms where "^" indicates "AND, "v" indicates "OR", "#" indicate "NOT", "<>" indicates a tri-state function, and "+>" defines a latched function
Drive Strengths: 0X uses minimum sized devices with balanced delay (inverter) 1X is 3 ns/pF (approx) 2X is 1.5 ns/pF (approx) 3X is 1.0 ns/pF (approx) 4X is 0.75ns/pF (approx)
| Cell Name | Cell Function | Boolean Description | Drive Strength |
|---|---|---|---|
| AN2X0 | 2-input AND | Z=A^B | 0 |
| AN2X1 | 2-input AND | Z=A^B | 1 |
| AN3X0 | 3-input AND | Z=A^B | 0 |
| AN3X1 | 3-input AND | Z=A^B^C | 1 |
| AN4X0 | 4-input AND | Z=A^B^C^D | 0 |
| AN4X1 | 4-input AND | Z=A^B^C^D | 1 |
| AO21X1 | AND/OR | Z=(A^B)vC | 1 |
| AO22X1 | AND/OR | Z=(A^B)v(C^D) | 1 |
| BUFX0 | Non-inverting buffer | Z=A | 0 |
| BUFX1 | Non-inverting buffer | Z=A | 1 |
| BUFX4 | Non-inverting buffer | Z=A | 4 |
| BUFX8 | Non-inverting buffer | Z=A | 8 |
| BUFX12 | Non-inverting buffer | Z=A | 12 |
| BUFX16 | Non-inverting buffer | Z=A | 16 |
| DFFNRX1 | -ve edge triggered D-type with Reset | Q=>D^#R; QB=#DvR | 1 |
| DFFPRSX1 | +ve edge triggered D-type with Set and Reset | Q=>(D^#R)vS; QB=(#DvR)^#S | 1 |
| DFFPRX1 | +ve edge triggered D-type with Reset | Q=>D^#R; QB=#DvR | 1 |
| DFFPX1 | +ve edge triggered D-type | Q=>D; QB=D# | 1 |
| FADX1 | Full Adder | CO=(CI^(AvB))v(A^B); S=(#CO^(AvBvCI))v(AvBvCI) | 1 |
| GLATX1 | Gated D Latch | Q=#(#(D^EN)^#Q); QB=#(#(EN^#(D^EN))^Q) | 1 |
| HADX1 | Half-Adder, S=A+B, C=Carry | S=(AvB)^#(A^B), C=A^B | 0 |
| INVX0 | Inverter | Z=#A | 0 |
| INVX1 | Inverter | Z=#A | 1 |
| INVX2 | Inverter | Z=#A | 2 |
| INVX3 | Inverter | Z=#A | 3 |
| INVX4 | Inverter | Z=#A | 4 |
| INVX16 | Inverter | Z=#A | 16 |
| INVX24 | Inverter | Z=#A | 24 |
| ND2X0 | 2-input NAND | Z=#(A^B) | 0 |
| ND2X1 | 2-input NAND | Z=#(A^B) | 1 |
| ND2X2 | 2-input NAND | Z=#(A^B) | 2 |
| ND3X0 | 3-input NAND | Z=#((A^B)^C) | 0 |
| ND3X1 | 3-input NAND | Z=#((A^B)^C) | 1 |
| ND3X2 | 3-input NAND | Z=#((A^B)^C) | 2 |
| ND4X0 | 4-input NAND | Z=#((A^B)^(C^D)) | 0 |
| ND4X1 | 4-input NAND | Z=#((A^B)^(C^D)) | 1 |
| ND4X2 | 4-input NAND | Z=#((A^B)^(C^D)) | 2 |
| NR2X0 | 2-input NOR | Z=#(AvB) | 0 |
| NR2X1 | 2-input NOR | Z=#(AvB) | 1 |
| NR2X2 | 2-input NOR | Z=#(AvB) | 2 |
| NR3X0 | 3-input NOR | Z=#((AvB)vC) | 0 |
| NR3X1 | 3-input NOR | Z=#((AvB)vC) | 1 |
| NR3X2 | 3-input NOR | Z=#((AvB)vC) | 2 |
| NR4X0 | 4-input NOR | Z=#((AvB)v(CvD)) | 0 |
| NR4X1 | 4-input NOR | Z=#((AvB)v(CvD)) | 1 |
| OA24X1 | OR/NAND | Z=#(((A^B)^C^D))V((C^D)^(E^F))) | 1 |
| MUX2X1 | 2-input multiplexer | Z=(A^#SL) v (B^SL) | 1 |
| SBRBLATX1 | #S, #R latch | Q=#(SB^QB); QB=#(RB^Q) | 1 |
| SRLATX1 | SR Latch | Q=#(R^QB); QB=#(S^Q) | 1 |
| TIEHILOX1 | Logic High and Low | HI=TRUE, LO=FALSE | 1 |
| TRINIX1 | Tristate Buffer with enable and enable bar | Z<>A | 1 |
| TRINIX2 | Tristate Buffer with enable and enable bar | Z<>A | 2 |
| TRIX0 | Tristate Inverter with enable | Z<>#A | 0 |
| TRIX1 | Tristate Inverter with enable | Z<>#A | 1 |
| TRIX2 | Tristate Inverter with enable | Z<>#A | 2 |
| TRIX2B | Tristate Inverter with enable and enable bar | Z<>#A | 2 |
| TRIXOR3AX1 | Tristate 3-input exclusive NOR (AB, B, C inputs) | Z<>(#AB^#B^#C)v(B^AB^#C)v(C^AB^#B)v(#AB^B^C) | 1 |
| TRIXOR3X1 | Tristate 3-input exclusive NOR (A, B, C inputs) | Z<>(A^#B^#C)v(B^#A^#C)v(C^#A^#B)v(A^B^C) | 1 |
| XNOR2X1 | 2-input exclusive NOR | Z=#((AVB)^#(A^B)) | 1 |
| XOR2X1 | 2-input Exclusive OR | Z=(AVB)^#(A^B) | 1 |
| XOR3X1 | 3-input exclusive NOR | Z=(A^#B^#C)v(B^#A^#C)v(C^#A^#B)v(A^B^C) | 1 |