<> <> <> <<>> <<-- This module provides basic utilities for all the implementation files of Logic.mesa>> <<>> DIRECTORY Core, CoreCreate, Ports, Sisyph; LogicUtils: CEDAR DEFINITIONS = BEGIN OPEN CoreCreate; <<>> <<-- A new class: cellTypes which are recasted only for layout>> libCellClass: Core.CellClass; LibCellRef: TYPE = REF LibCellRec; LibCellRec: TYPE = RECORD [libName, ctName: ROPE]; cellWidthProp: ATOM; CreateLibCell: PROC [public: Wire, ctName, libName, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [ct: CellType]; GetLogicContext: PROC RETURNS [Sisyph.Context]; -- derived from the "Logic.dale" library <<-- Extracts from the Logic library>> Extract: PROC [schName: ROPE, makeBlock: BOOL _ FALSE] RETURNS [ct: CellType]; <<-- Massage a small block (a few cells) into a single placable element>> SCBlock: PROC [ct: CellType] RETURNS [shell: CellType]; <<-- Creates a cell with the new class>> MakeSC: PROC [nameInLib, name: ROPE, public: Wire, width: INT _ 0] RETURNS [ct: CellType]; <<-- Display message on Terminal>> Error: PROC [msg: ROPE]; HasX: PROC [ls: Ports.LevelSequence] RETURNS [BOOL _ FALSE]; <<>> -- **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** <<>> <<-- These belong in Sch, but Sch must be redone, so in the mean time...>> SetObjectPort: PROC [cx: Sisyph.Context, initType: Ports.LevelType _ b, initDrive: Ports.Drive _ none]; SetObjectTesterDrive: PROC [cx: Sisyph.Context, initDrive: Ports.Drive _ none]; END.