SCProblemLog.tioga
Written by: Pradeep Sindhu, August 28, 1987 4:04:06 pm PDT
Last Edited by:
Pradeep Sindhu, August 18, 1986 5:25:26 pm PDT
DRAGON SMALL CACHE PROBLEM LOG
DRAGON SMALL CACHE PROBLEM LOG
DRAGON SMALL CACHE PROBLEM LOG
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
Dragon Small Cache
Problem Log
Release as [Indigo]<Dragon>SmallCache>Documentation>SCProblemLog.tioga, .press

© Copyright 1985 Xerox Corporation. All rights reserved.
Abstract: This document contains a log of problems discovered while debugging the design of the small cache.
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304



For Internal Xerox Use Only
Contents
Introduction
Problem Log
Introduction
Each entry contains the date on which the problem was found, a description of what the problem was, its current status, and if fixed, how this was done.
Problem Log
Problem #: P1
Date Found: April '87
Problem Description:
Resolve status of strange IO line in IO array. This line was supposed to be used to reply fault in case the cache received a bad transaction.
Current Status: Unresolved (see below)
There needs to be circuitry to check if there is a protection violation on IO, and if there is, to make the funny line match. The ram contents of this line are supposed to be the second word of the IORply that should be generated to indicate a fault.
Fix Description:

Problem #: P2
Date Found: April '87
Problem Description:
Need to complete the design of the statistics counters.
Current Status: 
Fix Description:

Problem #: P3
Date Found: June '87
Problem Description:
Snooper not loaded for RBRqst when AOw=0.
Current Status: Unresolved
Fix Description:

Problem #: P4
Date Found: July '87
Problem Description:
The simple circuit to set and clear InterruptStatus bits in the IORam didn't work because whether the bit got set or not depended on the bit line, and the bit lines went to their non-precharged state only after the select line went high; by that time the damage had been done.
Current Status: Resolved
Fix Description:
Implemented a master/slave solution to setting and clearing. The old value is saved in a master latch while RamSelect is low, and the new value is put into the slave while RamSelect is high.
Problem #: P5
Date Found: July '87
Problem Description:
It takes almost one cycle to compute match. This means that ARM/AVM are probably indeterminate when the clock edge comes, raising the possibilty of instability in the receiving flop.
Current Status: Resolved
Fix Description:
Changed inverter in RCamInterface and FlagsInterface to a NOR to force ARM low during match cycles.
Problem #: P6
Date Found: August 10 '87
Problem Description:
Looks as though BCtlClrOw and BCtlSetOw are not generated anywhere. Should go into BCtl.
Current Status: Unresolved
Fix Description:

Problem #: P7
Date Found: August 11 '87
Problem Description:
The decoding of PCmdWtBit and PMode was not being done correctly. Furthermore, the flags were not getting written properly because only one of the write drivers was enabled (due to the requirements of partial match).
Current Status: Fixed
Fix Description:
Moved most of the control out of the interface into a separate FlagsInterfaceCtl. Created a special gate to allow all three to get written and only one of them to be matched.
Problem #: P8
Date Found: August 17 '87
Problem Description:
Select lines in IOHole were left floating. Also, Victim was left floating.
Current Status: Fixed
Fix Description:
Connected them to Gnd/Vdd as appropriate.
Problem #: P9
Date Found: August 17 '87
Problem Description:
Select lines in IOHole were left floating. Also, Victim was left floating.
Current Status: Fixed
Fix Description:
Connected them to Gnd/Vdd as appropriate.
Problem #: P10
Date Found: August 17 '87
Problem Description:
The signals LVM, LRM, and Victim were connected to two muxes, the RSMux, and the CSMux. These muxes were constructed using pass gates, which made them conduct signals both ways. Furthermore, since the gates needed Cmd and nDCmd to operate, and there was a delay in generating nDCmd, it was possible for more than one pass gate in a given mux to be on temporarily. This meant that this mux would put an X on one or more of the lines LVM, LRM, Victim, and on the output of the mux. Furthermore, since we wanted the operation of the two muxes to be completely independent (one for the bus, and the other for the processor), we could not impose a condition that imposed some timing relation between the use of the two muxes.
Current Status: Fixed
Fix Description:
Put inverters before the pass gates in both muxes to prevent backward propagation. This caused us to flip the sense of the incoming signals to nLVM, nLRM, nVictim. As a result, the following cells needed to change in addition to the two muxes: AMCell, Victim.
Problem #: P11
Date Found: August 17 '87
Problem Description:
The EnRS signal is to far back in the chain from LVM to RamSelect; this leaves a smaller time for the Ram to read or write, and it forces us to make the last gate be a nand which would be too large.
Current Status: Resolved
Fix Description:
Moved EnRS from RSMux to SharedOwner.
Problem #: P12
Date Found: August 23 '87
Problem Description:
The transistor strength of the pullup in the SharedOwnerInterface was weak, which was fighting with the weak inverter in the latch. The fighting took place only when the pass gate was on.
Current Status: Fixed
Fix Description:
Changed pullup to medium-weak.
Problem #: P13
Date Found: August 23 '87
Problem Description:
This problem was Rosemary related, but we need to make sure that the timing in the real circuit is such that the problem doesn't happen. The timing of PWtInProgB is the same as EnRS. Suppose that EnRS comes slightly earlier than PWtInProgB when writing to a shared line. What could happen is that the line will get written into even though we don't want this to happen.
Current Status: Unresolved
Fix Description:
In the simulations, we've simply made PWtInProgB span EnRS.
Problem #: P14
Date Found: August 23 '87
Problem Description:
This problem was also Rosemary related, but we need to make sure that the timing in the real circuit is such that the problem doesn't happen. When EnRS goes down, the latch in the RSMuxInterface changes, thereby changing RSCmd. At the same time, the and gate in Shared Owner Cell is trying to turn off. There is a race here, and we need to make sure that the path via RSCmd is slower.
Current Status: Unresolved
Fix Description:
In the simulations, we've simply made PWtInProgB span EnRS.
Problem #: P15
Date Found: August 30 '87
Problem Description:
The solution to P11 introduced another problem, in that the Owner bit could get written via glitches in RamSelectIn (earlier, RamSelectIn had already been gated with EnRS).
Current Status: Resolved
Fix Description:
Added a P-transistor driven by nEnRS in series with the path that sets owner from RamSelectIn.