<> <> <> <<>> <> <<>> DIRECTORY Core USING [CellType], IO USING [STREAM], Ports USING [Port], RefTab USING [Ref], Rope USING [ROPE], RosemaryUser USING [TestProc], RosemaryVector USING [Target]; MTSVector: CEDAR DEFINITIONS ~ BEGIN <> CreateCapture: PROC [ct: Core.CellType] RETURNS [capture: Capture]; <> <.mtsVectors. Defaults to name of ct.>> <> CaptureAndWrite: PROC [capture: Capture]; <> CloseCapture: PROC [capture: Capture]; <> <<>> ReadPort: PROC [ct: Core.CellType, p: Ports.Port, eachVector: PROC[]]; <> <> Create: PROC [ct: Core.CellType, fileBase: Rope.ROPE] RETURNS [file: File]; <> WriteVector: PROC [file: File]; <> WriteVectorFromPort: PROC [file: File, port: Ports.Port]; <> Close: PROC [file: File]; <> <<>> Read: PROC [ct: Core.CellType, fileBase: Rope.ROPE, eachVector: PROC [File]]; <> <> MTSCaptureTP: RosemaryUser.TestProc; <> <<>> MTSReplayTP: RosemaryUser.TestProc; <> < Ascii conversions>> MTSToAscii: PROC [base: Rope.ROPE]; <> <<>> AsciiToMTS: PROC [base: Rope.ROPE]; <> <> CGF: TYPE ~ MACHINE DEPENDENT RECORD [ -- Channel Group Field SELECT OVERLAID * FROM bytes => [bytes: PACKED ARRAY [0..8) OF BYTE], bits => [bits: PACKED ARRAY [0..64) OF BOOL], ENDCASE ]; <> <> <> <> CG: TYPE ~ REF CGRep; CGRep: TYPE ~ RECORD [ -- Channel Group test information tristate: CGF, data: CGF, mask: CGF ]; <> <> <> <> <> Vector: TYPE ~ REF VectorRep; VectorRep: TYPE ~ RECORD [cg: SEQUENCE ngrps: NAT OF CG]; <> <> <<>> Pin: TYPE ~ REF PinRep; PinRep: TYPE ~ RECORD [ name: Rope.ROPE, -- name of the pin notConnected: BOOL _ FALSE, hasPullup: BOOL _ FALSE, group: [0..8), -- board number where this pin is located pinNum: [0..64), -- pin number on the MTS board rank: [0..64) -- index within CG data structure, differs from pinNum due to bit ordering ]; <> <<>> File: TYPE ~ REF FileRep; FileRep: TYPE ~ RECORD [ id: Rope.ROPE, -- title of the simulation dut: Core.CellType, -- the device under test pins: LIST OF Pin, -- all pins stored in the file, including unconnected wireToPins: RefTab.Ref, -- public atomic wire to pin mapping vector: Vector, -- vector currently read or written nGroups: PRIVATE CARD32 _ 0, -- number of groups (boards) to be put in the file nVects: PRIVATE CARD32 _ 0, -- number of vectors in file ckSum: PRIVATE CARD16 _ 0, -- current file checksum block: PRIVATE REF TEXT, -- IO buffer stream: PRIVATE IO.STREAM -- output to MTS vector file ]; Capture: TYPE ~ REF CaptureRep; CaptureRep: TYPE ~ RECORD [ -- this record is not of any use to a normal client mtsFile: File, -- to store computed vectors port: Ports.Port, -- into which captured data are stored target: RosemaryVector.Target -- describing target CT and associated info ]; END.