next up previous contents
Next: Operators Up: The DDI package Previous: The DDI package   Contents

Basic Data Structures

Besides extending manager capabilities, DDI introduces strong typing for objects represented using BDDs, and uses ``handles'' as a mechanism for allocation/freeing. More specifically, four types are presently defined and managed as abstract data types, all available in scalar and array form:

All of the above types are implemented by resorting to handles. The handle mechanism hides the ref/deref BDD node allocation style implemented in CUDD. Handles are dynamically allocated structures pointing to CUDD BDD nodes, and only accessed to by pointers. Handles are allocated, freed, duplicated. A handle represents a reference to a BDD node, so a ref/reref operation is implicitly done any time a handle is created/released. The only exception to this general rule are variables, which are never duplicated nor freed (except when freeing a DDI manager)

Handles are expecially useful as an intermediate portability layer between the higher levels and CUDD1. Moreover they enable storing additional informations characterizing DDI entities, like name, code, extra pointers. Names are expecially concieved for debug and/or log purposes, codes can distinguish particular subtypes (e.g. monolithic/partitioned forms or operators in expressions). We use pointers for list based management of allocated DDI objects, and to keep a reference to the owner DDI manager (this avoids passing manager to most functions).

We call the above data types DDI nodes.


next up previous contents
Next: Operators Up: The DDI package Previous: The DDI package   Contents
Gianpiero Cabodi
2001-03-25