IF (ct ← LookupCellType[design, name])=
NIL
THEN {
bp: CellType ← CreateBasicInputPad[design: design];
tristate: CellType ← SSI.CreateTristateBuffer[design: design, width: 32];
nand2: CellType ← SSI.CreateNAnd[design: design, width: 8];
nor2: CellType ← SSI.CreateNOr[design: design, width: 8];
p: CellType ← Transistor.CreateTransistor[design: design, type: pE, width: 600];
n: CellType ← Transistor.CreateTransistor[design: design, width: 300];
ct ← CreateCellType[design: design, cellTypeName: name];
CreatePort[on: ct, name: "Vdd"];
CreatePort[on: ct, name: "Gnd"];
CreatePort[on: ct, name: "Read"];
CreatePort[on: ct, name: "nRead"];
CreatePort[on: ct, name: "Write"];
CreatePort[on: ct, name: "nWrite"];
CreatePort[on: ct, name: "Pad", direction: bidirectional];
CreatePort[on: ct, name: "Data", direction: bidirectional];
CreateNet[in: ct, name: "nandOut"];
CreateNet[in: ct, name: "norOut"];
CreateNet[in: ct, name: "nbpOut"];
CreateCell[in: ct, type: bp, bind: "nOutput: nbpOut"];
CreateCell[in: ct, type: tristate, bind: "nInput: nbpOut, Drive: Write, nDrive: nWrite, Output: Data"];
CreateCell[in: ct, type: nand2, bind: "Input0: Read, Input1: Data, nOutput: nandOut"];
CreateCell[in: ct, type: nor2, bind: "Input0: nRead, Input1: Data, nOutput: norOut"];
CreateCell[in: ct, type: p, bind: "gate: nandOut, ch1: Vdd, ch2: Pad"];
CreateCell[in: ct, type: n, bind: "gate: norOut, ch1: Pad, ch2: Gnd"];
};