thisTest: Rope.ROPE = "74LS163 Tester";
Init:
PROC = {
R:
PROC [a: ICTest.Assignments] = {
assignments←CONS[a,assignments];
};
groups: LIST OF ICTest.Group ← NIL;
assignments: LIST OF ICTest.Assignments ← NIL;
ct: Core.CellType ← CoreCreate.Cell[
name: "74LS163",
public: CoreCreate.WireList[
LIST[
"nClear", "Clock", CoreCreate.Seq["DataIn", width], "EnableP", "Gnd", "nLoad", "EnableT", CoreCreate.Seq["DataOut", width], "RippleCarryOut", "Vcc"]],
onlyInternal: NIL,
instances: NIL
];
groups ←
LIST[
[number: 1, name: "DUTInputs", directionality: force, format: DNRZ, delay: 10],
[number: 2, name: "DUTOutputs", directionality: acquire, sample: 40],
[number: 3, name: "Clocks", directionality: force, format: RZ, delay: 0, width: 20]
];
assignments ← NIL;
L
o
a T
d e
s
B t D
o e U
a P r T
r o C D
d d h H H U
G B a e e T
r o S P B n a a
o a i a y n d d P
u r d i t e e e i
Signal Name p d e r e l r r n
R[["Gnd", 0,0,R,AB, A,0,001,001, 8]];
R[["Vdd", 0,0,R,AB, A,0,001,001, 16]];
R[["nClear", 1,0,R,AB, A,0,001,001, 1]];
R[["DataIn[0]", 1,0,R,AB, A,1,001,001, 6]]; --MSB
R[["DataIn[1]", 1,0,R,AB, A,2,001,001, 5]];
R[["DataIn[2]", 1,0,R,AB, A,3,001,001, 4]];
R[["DataIn[3]", 1,0,R,AB, A,4,001,001, 3]]; --LSB
R[["EnableP", 1,0,R,AB, A,5,001,001, 7]];
R[["nLoad", 1,0,R,AB, A,6,001,001, 9]];
R[["EnableT", 1,0,R,AB, A,7,001,001, 10]];
R[["RippleCarryOut", 2,0,R,CD, A,0,001,001, 15]];
R[["DataOut[0]", 2,0,R,CD, A,1,001,001, 14]]; --MSB
R[["DataOut[1]", 2,0,R,CD, A,2,001,001, 13]];
R[["DataOut[2]", 2,0,R,CD, A,3,001,001, 12]];
R[["DataOut[3]", 2,0,R,CD, A,4,001,001, 11]]; --LSB
R[["Clock", 3,0,R,AB,AT,0,001,001, 2]];
[] ← Ports.InitPort[ct.public[DataIn], c];
[] ← Ports.InitPort[ct.public[DataOut], c];
Ports.InitTesterDrive[ct.public[nClear], force];
Ports.InitTesterDrive[ct.public[Clock], force];
Ports.InitTesterDrive[ct.public[DataIn], force];
Ports.InitTesterDrive[ct.public[EnableP], force];
Ports.InitTesterDrive[ct.public[nLoad], force];
Ports.InitTesterDrive[ct.public[EnableT], force];
Ports.InitTesterDrive[ct.public[DataOut], none];
Ports.InitTesterDrive[ct.public[RippleCarryOut], none];
TestCable.Init[groups, assignments, "Clock"];
ICTest.MakeStandardViewer[testName: thisTest, cellType: ct, clockAName: "Clock", groups: groups, assignments: assignments, period: 60];
};