MCCtl:
CEDAR
DEFINITIONS
IMPORTS AlpsBool =
BEGIN OPEN AlpsBool;
List of names that will appear on the ctlOut bus, and routines for manipulating this list
ctlOutNames: LIST OF Rope.ROPE;
InitCtlOutNames: PROC[];
AddListToCtlOutNames: PROC[names: LIST OF Rope.ROPE];
AddTableToCtlOutNames: PROC [table: TableOfVariables];
The generators:
Counter: PROC [table: TableOfVariables];
Microcode: PROC [table: TableOfVariables];
Order: PUBLIC PROC [table: TableOfVariables];
StateMachine: PUBLIC PROC [table: TableOfVariables];
Now the utility routines:
CreateTable: PROC [names: LIST OF ROPE] RETURNS [table: TableOfVariables];
EqualInt: PROC [table: TableOfVariables, rope: ROPE, start, end, value: INT] RETURNS [Expression];
FindInternal: PROC [table: TableOfVariables, rope: ROPE] RETURNS [internalIndex: INT];
Find: PROC [table: TableOfVariables, rope: ROPE] RETURNS [Expression];
DefaultDontCare: PROC [] RETURNS [Expression] = INLINE {RETURN[false]};
GenerateLayout: PROC [design: CD.Design, table: TableOfVariables, distanceBetweenGlue: INT ← 5] RETURNS [obj: CD.ObPtr];
InputsFromTable: PROC [table: TableOfVariables] RETURNS [inputs: LIST OF ROPE ← NIL];
Permute: PROC [table: TableOfVariables, permute: PermuteFlags ← permuteFast] RETURNS [newTable: TableOfVariables];
PermuteFlags: TYPE = {dontPermute, permuteFast, permuteAllCases};
ListSize: PROC [list: LIST OF ROPE] RETURNS [size: INT];
ListCat: PROC [l1, l2: LIST OF ROPE] RETURNS[l3: LIST OF ROPE];
The constructors:
MakeAlpsLatchandDrive: PROC [design: CD.Design, target: PW.ObPtr] RETURNS [result: PW.ObPtr];
The names of the signals here correspond to those at the input of the feedback latch
MakeFeedBackLatchandDrive: PROC [design: CD.Design, signals: LIST OF ROPE] RETURNS [result: PW.ObPtr];
MakeFeedBack: PROC [design: CD.Design, alpsTarget, latchTarget: PW.ObPtr] RETURNS [result: PW.ObPtr];
END.