an associative array can be thought of as a binary search tree with a user-specified key type and data type. the key implies an ordering; the elements of an associative array can be read out in lexicographic order. finally, a queue provides much of the functionality of the c++ stl deque type: elements can be added and removed from either end efficiently. these primitives allow the creation of complex data structures required for scoreboarding a large design.