Standardized Functional Verification- P21:Every manager who brings a design to tape-out or who purchases IP must eventually face these questions. The ability to answer these questions based on quantitative analysis is both vital and yet elusive. In spite of the enormous technical advances made in IC development and verification software, the answers to these questions are still based largely on guesswork and hand waving. | 186 Appendix - Functional Space of a Queue Adding an Indirect Condition Now if we add a mechanism to this queue so that priority is given to draining the queue removing items when the number of items in the queue reaches some high-water mark. For our example the high-water mark is set to the constant value of 6. An indirect condition is established on the following clock cycle when the number of the items in the queue reaches the high-water mark. This indirect condition persists until the queue has been emptied. Even though the priority has been given to draining the queue we still permit items to be added to the queue. Of course it could be designed with a much stricter drain policy that prevents the addition of items to the queue until it has been emptied. Our example is not so strict so even though priority has shifted to draining the queue items can still be added until it becomes full of course . Fig. illustrates the uncondensed functional space of such a queue. The pair of values in each oval represents the value of the response variable ITEMS_IN_QUEUE and the indirect condition variable we shall call DRAIN_PRIORITY. Items can be added to the queue and removed in normal operation up until the number of items reaches 6. Then the indirect condition is established DRAIN_PRIORITY 1 on the next clock cycle whether an item is added during that same clock cycle or removed or neither added nor removed. This shifted operation appears on the righthand side of the figure in which the pair of values shows that drain priority has been established. Items can be removed preferably or added to the queue but when it eventually becomes empty the indirect condition reverts back to normal on the next clock cycle. Three function points with DRAIN_PRIORITY 0 are condensable and three function points with DRAIN_PRIORITY 1 are condensable. Condensation removes 4 hold arcs 4 add arcs and 4 remove arcs. Fig. illustrates the condensed functional space of the queue after .