SCLibGenCells2.mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Created by: Christian Jacobi June 2, 1986 3:48:19 pm PDT
Last edited by: Christian Jacobi, December 22, 1986 12:39:06 pm PST
Last edited by: Louis Monier July 15, 1986 11:44:39 am PDT
SCLibGenCells2:
CEDAR
PROGRAM
IMPORTS SCLibGen =
BEGIN
OPEN SCLibGen;
CreateCellDLatch1: GeneratorProc =
BEGIN
Setup[design, "p1", "p4", "p1", "p1", "p1", "p1", "p4", "p1", "p4", "p1", "p1", "p4"];
MakeCont[row: 1, start: 1, n: 6];
MakeCont[row: 2, start: 2, n: 7];
MakeCont[row: 3, start: 2, n: 4];
MakeCont[row: 4, start: 1, n: 2];
MakeCont[row: 5, start: 2, n: 5];
MakeCont[row: 6, start: 5, n: 2];
MakeCont[row: 7, start: 2, n: 4];
MakeCont[row: 8, start: 1, n: 5];
MakeCont[row: 9, start: 8, n: 1];
MakeCont[row: 10, start: 2, n: 3];
MakeVia[row: 10, start: 5, n: 1];
MakeCont[row: 11, start: 1, n: 5];
MakeCont[row: 12, start: 2, n: 6];
HorizontalM[rowL: 2, rowR: 4, h: 6];
HorizontalM[rowL: 6, rowR: 11, h: 6];
HorizontalM[rowL: 3, rowR: 7, h: 4, back: TRUE];
HorizontalM[rowL: 9, rowR: 10, h: 8, back: TRUE];
VerticalM[row: 4, h1: 6, h2: 7, front: TRUE];
VerticalM[row: 7, h1: 6, h2: 9];
VerticalM[row: 8, h1: 6, h2: 7, front: TRUE];
VerticalM[row: 11, h1: 6, h2: 7, front: TRUE];
SetN[];
MakeCont[row: 1, start: 1, n: 1];
MakeVia[row: 1, start: 3, n: 1, back: TRUE];
MakeCont[row: 2, start: 4, n: 1];
MakeCont[row: 3, start: 4, n: 1];
MakeCont[row: 5, start: 1, n: 1];
MakeVia[row: 5, start: 3, n: 1, back: TRUE];
MakeVia[row: 6, start: 3, n: 1, back: TRUE];
MakeCont[row: 7, start: 4, n: 1];
MakeCont[row: 8, start: 1, n: 1];
MakeCont[row: 9, start: 2, n: 3];
MakeCont[row: 10, start: 2, n: 2];
MakeVia[row: 10, start: 4, n: 1];
MakeCont[row: 11, start: 1, n: 4];
MakeCont[row: 12, start: 2, n: 3];
HorizontalM[rowL: 1, rowR: 5, h: 3, back: TRUE];
HorizontalM[rowL: 6, rowR: 9, h: 3, back: TRUE];
HorizontalM[rowL: 3, rowR: 7, h: 4];
PassMs[2, 7, 9, 12];
ContactM2[1, 3, 5, 6, 12];
Pins[12, "NCK", NIL, "D", NIL, NIL, NIL, NIL, NIL, NIL, "NQ", NIL, "Q"];
PinOrder["NCK D Q NQ Vdd Gnd"];
ob ← Finish["C2LT01A.mask"];
END;
CreateCellDLatch2: GeneratorProc =
BEGIN
Setup[design, "p1", "p4", "p1", "p1", "p1", "p4", "p1", "p1", "p1", "p4", "p1", "p1", "p4"];
MakeCont[row: 1, start: 1, n: 1];
MakeVia[row: 1, start: 3, n: 1, back: TRUE];
HorizontalM[rowL: 1, rowR: 7, h: 2];
MakeCont[row: 2, start: 5, n: 4];
HorizontalM[rowL: 2, rowR: 3, h: 8];
MakeCont[row: 3, start: 5, n: 3, back: TRUE];
HorizontalM[rowL: 3, rowR: 5, h: 7, back: TRUE];
MakeCont[row: 4, start: 1, n: 1];
MakeVia[row: 4, start: 4, n: 1, back: TRUE];
HorizontalM[rowL: 4, rowR: 8, h: 3];
MakeCont[row: 5, start: 6, n: 2, back: TRUE];
MakeCont[row: 6, start: 5, n: 1];
MakeVia[row: 6, start: 6, n: 1];
HorizontalM[rowL: 6, rowR: 12, h: 5, back: TRUE];
MakeCont[row: 7, start: 7, n: 1, back: TRUE];
HorizontalM[rowL: 7, rowR: 9, h: 7, back: TRUE];
MakeVia[row: 7, start: 2, n: 1];
MakeCont[row: 8, start: 1, n: 1];
MakeVia[row: 8, start: 3, n: 1];
MakeCont[row: 9, start: 7, n: 1, back: TRUE];
MakeVia[row: 9, start: 5, n: 1, back: TRUE];
MakeCont[row: 10, start: 7, n: 2];
HorizontalM[rowL: 10, rowR: 11, h: 8];
MakeCont[row: 11, start: 2, n: 1];
MakeVia[row: 11, start: 3, n: 1];
MakeCont[row: 12, start: 1, n: 3];
MakeCont[row: 13, start: 2, n: 6];
VerticalM[row: 12, h1: 5, h2: 8, front: TRUE];
SetN[];
MakeCont[row: 1, start: 1, n: 4];
MakeCont[row: 2, start: 2, n: 3];
MakeCont[row: 3, start: 2, n: 3];
MakeCont[row: 5, start: 1, n: 1];
MakeCont[row: 6, start: 3, n: 1];
MakeVia[row: 6, start: 2, n: 1];
MakeCont[row: 7, start: 2, n: 3];
MakeCont[row: 9, start: 1, n: 3];
MakeCont[row: 10, start: 2, n: 3];
MakeCont[row: 11, start: 2, n: 2];
MakeVia[row: 11, start: 4, n: 1];
MakeCont[row: 12, start: 1, n: 4];
MakeCont[row: 13, start: 2, n: 3];
HorizontalM[rowL: 3, rowR: 6, h: 3];
HorizontalM[rowL: 5, rowR: 10, h: 4];
PassMs[2, 5, 10, 13];
ContactM2[1, 4, 7, 8, 9, 13];
Pins[13, "D", NIL, NIL, "CK", NIL, NIL, NIL, NIL, NIL, NIL, "Q", NIL, "NQ"];
PinOrder["CK D Q NQ Vdd Gnd"];
ob ← Finish["C2LT02A.mask"];
END;
XLatch:
PROC [n:
INT] = {
MakeCont[row: 1, start: 1, n: 6];
MakeCont[row: 2, start: 2, n: 7];
HorizontalM[rowL: 2, rowR: 4, h: 7, back: TRUE];
MakeCont[row: 3, start: 2, n: 4];
MakeCont[row: 4, start: 1, n: 2];
VerticalM[row: 4, h1: 7, h2: 8, front: TRUE];
MakeCont[row: 5, start: 2, n: 5];
MakeCont[row: 6, start: 6, n: 2, back: TRUE];
MakeCont[row: n+2, start: 8, n: 1];
HorizontalM[rowL: n+2, rowR: n+3, h: 8, back: TRUE];
MakeCont[row: n+3, start: 2, n: 3];
MakeVia[row: n+3, start: 5, n: 1];
MakeCont[row: n+4, start: 1, n: 5];
VerticalM[row: n+4, h1: 7, h2: 8, front: TRUE];
MakeCont[row: n+5, start: 2, n: 6];
SetN[];
MakeCont[row: 1, start: 1, n: 1];
MakeVia[row: 1, start: 3, n: 1, back: TRUE];
HorizontalM[rowL: 1, rowR: 5, h: 2];
MakeCont[row: 2, start: 4, n: 1];
MakeCont[row: 3, start: 4, n: 1];
MakeCont[row: 5, start: 1, n: 1];
MakeVia[row: 5, start: 3, n: 1, back: TRUE];
MakeVia[row: 6, start: 3, n: 1, back: TRUE];
MakeCont[row: n+3, start: 2, n: 2];
MakeVia[row: n+3, start: 4, n: 1];
MakeCont[row: n+4, start: 1, n: 4];
MakeCont[row: n+5, start: 2, n: 3];
ContactM2[1, 3 , 5, 6, n+5];
PassMs[2, n+2, n+5];
};
CreateCellDLatch3: GeneratorProc =
BEGIN
Setup[design, "p1", "p4", "p1", "p1", "p1", "p1", "p4", "p1", "p4", "p1", "p4", "p1", "p1", "p4"];
MakeCont[row: 7, start: 2, n: 4];
MakeCont[row: 8, start: 2, n: 5];
MakeCont[row: 9, start: 2, n: 7];
HorizontalM[rowL: 3, rowR: 7, h: 4];
HorizontalM[rowL: 6, rowR: 8, h: 6];
HorizontalM[rowL: 9, rowR: 13, h: 7, back: TRUE];
MakeCont[row: 10, start: 1, n: 5];
VerticalM[row: 10, h1: 7, h2: 9];
XLatch[9];
MakeCont[row: 7, start: 4, n: 1];
MakeCont[row: 8, start: 4, n: 1];
MakeCont[row: 9, start: 1, n: 1];
HorizontalM[rowL: 3, rowR: 9, h: 4, shortEnd: FALSE];
HorizontalM[rowL: 6, rowR: 11, h: 2];
MakeCont[row: 10, start: 1, n: 1];
MakeCont[row: 11, start: 2, n: 3];
MakeCont[row: 12, start: 2, n: 2];
PassMs[9];
ContactM2[8];
Pins[14, NIL, NIL, "D", NIL, "NCK", NIL, NIL, "P", NIL, NIL, NIL, "NQ", NIL, "Q"];
PinOrder["NCK D P Q NQ Vdd Gnd"];
ob ← Finish["C2LT03A.mask"];
END;
CreateCellDLatch4: GeneratorProc =
BEGIN
Setup[design, "p1", "p4", "p1", "p1", "p1", "p1", "p4", "p1", "p1", "p4", "p1", "p1", "p4"];
MakeCont[row: 7, start: 2, n: 4];
MakeCont[row: 8, start: 1, n: 5];
HorizontalM[rowL: 3, rowR: 7, h: 4];
HorizontalM[rowL: 6, rowR: 12, h: 7, back: TRUE];
VerticalM[row: 7, h1: 7, h2: 9];
VerticalM[row: 8, h1: 7, h2: 9];
MakeVia[row: 9, start: 8, n: 1];
XLatch[8];
HorizontalM[rowL: 3, rowR: 7, h: 4];
MakeCont[row: 7, start: 4, n: 1];
MakeCont[row: 8, start: 1, n: 1];
HorizontalM[rowL: 6, rowR: 10, h: 2, shortEnd: FALSE];
VerticalM[row: 10, h1: 2, h2: 5];
MakeCont[row: 9, start: 2, n: 3, back: TRUE];
MakeCont[row: 10, start: 1, n: 1];
PassMs[7];
Pins[13 , NIL, NIL, "D", NIL, "NCK", NIL, NIL, NIL, "R", NIL, "NQ", NIL, "Q"];
PinOrder["NCK D R Q NQ X Vdd Gnd"];
ob ← Finish["C2LT04A.mask"];
END;
Register["DLatch1", CreateCellDLatch1];
Register["DLatch2", CreateCellDLatch2];
Register["DLatch3", CreateCellDLatch3];
Register["DLatch4", CreateCellDLatch4];
END.