DIRECTORY CoreBitOps, CoreSSIImpl, ChipCreate, SSIBhvDef; SSIBhvImpl: CEDAR PROGRAM IMPORTS CoreBitOps, ChipBehaviour EXPORTS SSIBhvDef = BEGIN OPEN ChipBehaviour, SSIBhvDef; TristateBufferInit: InitProc = { valueAny _ NEW[TristateBufferValueRec]; strengthAny _ NEW[TristateBufferStrengthRec]; }; TristateBufferBehaviour: SimpleEvalProc = { value: TristateBufferValueRef _ NARROW[valueAny]; s: TristateBufferStrengthRef _ NARROW[strengthAny]; { OPEN value; IF (Drive AND nDrive) OR (NOT Drive AND NOT nDrive) THEN Stop["Bad control signals in tristate buffer", $FailedAssertion]; Output _ NOT nDataIn; s.Output _ IF Drive THEN drive ELSE ignore; }; }; NAndInit: InitProc = { args: CoreSSIImpl.NAndArgsRef _ NARROW[argsAny]; valueAny _ NEW[NAndValueRec]; value.Input _ NEW[BitOps.BitMWordRec[BitOps.SizeBits[args.inputCount]]]; strengthAny _ NEW[NAndStrengthRec]; }; NAndBehaviour: SimpleEvalProc = { args: NAndArgsRef _ NARROW[argsAny]; value: NAndValueRef _ NARROW[valueAny]; { OPEN args, value; nOutput _ FALSE; FOR i: NAT IN [0..inputCount) DO IF NOT BitOps.EBFM[Input, i] THEN { nOutput _ TRUE; EXIT; }; ENDLOOP; }; }; RegisterCells: PROC [design: Design] = { RegisterBehaviour[design: design, cellTypeName: "TristateBuffer", init: TristateBufferInit, evalSimple: TristateBufferBehaviour]; RegisterBehaviour[design: design, cellTypeName: "NAnd", init: NAndInit, evalSimple: NAndBehaviour]; }; END. žSSIBhvImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last Edited by: Barth, July 10, 1985 8:29:54 pm PDT Tristate Buffer NAnd ΚG– "cedar" style˜Icodešœ™Kšœ Οmœ1™<™3K™—KšΟk œ0˜9K˜•StartOfExpansion[]šΟb œžœž˜Kšžœ˜!Kšžœ ˜Kšžœžœ˜$—head™šœ ˜ Kšœ žœ˜'Kšœžœ˜-Kšœ˜K˜—šœ+˜+Kšœ žœ ˜1Kšœžœ˜3šœžœ˜ Kšžœžœ žœžœžœžœ žœB˜zKšœ žœ ˜Kšœ žœžœžœ˜+K˜—Kšœ˜K˜——šœ™šœ˜Kšœ žœ ˜0Kšœ žœ˜Kšœžœ7˜HKšœžœ˜#Kšœ˜K˜—šœ!˜!Kšœžœ ˜$Kšœžœ ˜'šœžœ ˜Kšœ žœ˜šžœžœžœž˜ šžœžœžœ žœ˜#Kšœ žœ˜Kšžœ˜K˜—Kšžœ˜—K˜—Kšœ˜K˜——šΟn œžœ˜(Kšœ˜Kšœc˜cK˜K˜—Kšžœ˜K™K˜—…—„i