DIRECTORY DABasics, CardTab, PriorityQueue, RefTab, Rope, SoftHdwBasics, SoftHdwCompiler, SoftHdwSimulate; SoftHdwDelayPath: CEDAR DEFINITIONS = BEGIN DelayNetwork: TYPE = REF DelayNetworkRec; DelayNetworkRec: TYPE = RECORD [ levelTable: CardTab.Ref, eventTable: RefTab.Ref, maxLevel: INT _ 0, primaryInputs: DelayEvents _ NIL, allDelayEvents: DelayEvents _ NIL, worstDelayTable: PriorityQueue.Ref, maxDelayEvent: DelayEvent _ NIL]; DelayEvents: TYPE = LIST OF DelayEvent; DelayEvent: TYPE = REF DelayEventRec; DelayEventRec: TYPE = RECORD [ inputDelayTerms: DelayTerms _ NIL, outputDelayTerms: DelayTerms _ NIL, zeroSlackTerm: DelayTerm _ NIL, minDelay: INT _ 0, maxDelay: INT _ 0, slack: INT _ 0, level: INT _ -1, levelComputed: BOOL _ FALSE, primaryInput: BOOL _ FALSE, source: REF ANY]; DelayTerms: TYPE = LIST OF DelayTerm; DelayTerm: TYPE = REF DelayTermRec; DelayTermRec: TYPE = RECORD [ inputDelayEvent: DelayEvent, outputDelayEvent: DelayEvent, delay: INT _ 1, blocked: BOOL _ FALSE, source: REF ANY]; CreateNetworkForSimulation: PROC [simulation: SoftHdwSimulate.Simulation] RETURNS [network: DelayNetwork]; CreateNetwork: PROC [array: SoftHdwBasics.ArrayBase] RETURNS [network: DelayNetwork]; ResetNetwork: PROC [network: DelayNetwork]; LevelizeDelayNetwork: PROC [network: DelayNetwork]; ComputeDelays: PROC [network: DelayNetwork]; ComputeSlack: PROC [network: DelayNetwork]; BlockDelayTerm: PROC [term: DelayTerm]; UnBlockDelayTerm: PROC [term:DelayTerm]; TimingAnalyze: PROC [simulation: SoftHdwSimulate.Simulation] RETURNS [network: DelayNetwork] ; MakeDelayPositionPath: PROC [event: DelayEvent] RETURNS [SoftHdwBasics.ArrayPositions] ; EventPrintFn: TYPE = PROC [event: DelayEvent]; TermPrintFn: TYPE = PROC [term: DelayTerm]; TracePath: PROC [event: DelayEvent, eventPrintFn: EventPrintFn, termPrintFn: TermPrintFn]; ReportCriticalPath: PROC [network: DelayNetwork, eventPrintFn: EventPrintFn _ PrintGenericEvent, termPrintFn: TermPrintFn _ PrintGenericTerm]; TimingAnalyzeFlatCell: PROC [flatCell: SoftHdwCompiler.FlatCell] RETURNS [network: DelayNetwork]; PrintEvent: PROC [event: DelayEvent]; PrintTerm: PROC [term: DelayTerm]; PrintGenericEvent: PROC [event: DelayEvent]; PrintGenericTerm: PROC [term: DelayTerm]; END. ˆ SoftHdwDelayPath.mesa Copyright Σ 1988 by Xerox Corporation. All rights reserved. Minsky, July 31, 1989 3:20:49 pm PDT Table, indexed by level, of delay events. Table of delayEvents, indexed by source (ArrayPositions or Primitives) maxDelayEvent is the event with the max Delay value. This is the same is the top of the worstDelayTable queue. Procedure creates new network, does timing analysis, and returns the network. ... Traces an event back through the zero slack terms, creating a list of the array positions of the events. This path is useful for highlighting the critical path. Functions to print events out on the terminal window. ...Prints out a delay path by traing an event back, following the zero slack pointers, until an event with no input terms is reached. ...Prints a Delay Event a la SoftHdw Emulator, using ArrayPosition field of event. ... Just prints the delays. ΚO™codešœ™K™