DIRECTORY CoreCreate, EUInner, EUUtils, Sisyph; EUInnerImpl: CEDAR PROGRAM IMPORTS CoreCreate, EUUtils, Sisyph EXPORTS EUInner = BEGIN OPEN EUInner, CoreCreate; CreateEUInner: PUBLIC PROC [cx: Sisyph.Context] RETURNS [ct: CellType] = { ct _ EUUtils.Fetch["Inner"]; IF ct=NIL THEN { ct _ Sisyph.ES["Inner.sch", cx]; EUUtils.Store["Inner", ct]; }; }; CreateDataPath: PUBLIC PROC [cx: Sisyph.Context] RETURNS [ct: CellType] = { ct _ EUUtils.Fetch["DataPath"]; IF ct=NIL THEN { ct _ Sisyph.ES["DataPath.sch", cx]; EUUtils.Store["DataPath", ct]; }; }; CreateALU: PUBLIC PROC [cx: Sisyph.Context] RETURNS [ct: CellType] = { ct _ EUUtils.Fetch["ALU"]; IF ct=NIL THEN { ct _ Sisyph.ES["ALU.sch", cx]; EUUtils.Store["ALU", ct]; }; }; Tree: PUBLIC PROC [] RETURNS [tree: Wire] ~ { left: Wire _ Seq[size: 32]; middle: Wire _ Seq[size: 32]; right: Wire _ Seq[size: 32]; bottom: Wire _ Seq[size: 32]; Connect: PROC [root, deltaSon: NAT] RETURNS [wire: Wire] ~ { IF deltaSon=0 THEN {left[root] _ bottom[root-1]; right[root] _ bottom[root]} ELSE { left[root] _ Connect[root-deltaSon, deltaSon/2]; right[root] _ Connect[root+deltaSon, deltaSon/2];}; RETURN[middle[root]]; }; [] _ Connect[16, 8]; right[0] _ middle[16]; tree _ Wires[left, middle, right, bottom]; }; END. HEUInnerImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Louis Monier June 14, 1986 5:21:09 pm PDT Bertrand Serlet June 7, 1986 7:34:12 pm PDT Last Edited by: Louis Monier February 19, 1987 1:24:23 pm PST -- ALU -- Generates the DAG which connects L, M, R and B as needed to wire P and G for the ALU. Κ"– "cedar" style˜codešœ™Kšœ Οmœ1™