16 ]
CDBA Hierarchy Database Functions
The hierarchy database interface (HDB) is an interface to the Cadence Hierarchy Editor’s configuration-driven elaboration process. Elaboration is the process of traversing the design hierarchy and using HDB to pick the right views for a specific purpose. Elaboration is also sometimes referred to as “design binding” or “traversal.”
HDB reads the Hierarchy Editor’s configuration file (expand.cfg file) and lets you write an elaboration routine.
HDB consists of C functions that have the prefix hdb. These functions are listed in HDB Functions.
An example traverser, provided with Cadence software, illustrates the usage of the HDB interface. The example traverser is in the following directory:
your_install_dir/tools/itkDB/samples/HDB
The key code is in the traverse.c file. This example binds a design and then prints various levels of information as it traverses the design.
A SKILL version of the example is in the following file:
your_install_dir/tools/hdb/examples/hdbTraverse.il
The SKILL example has more extensive comments than the C example. See the hdbTraverse.il file for more information.
HDB Functions
The HDB interface includes the following C functions. For more information about these functions, see the example referred to above as well as the your_install_dir/tools/itkDB/include/itkDB.h file.
hdbUserErrFunc hdbSetErrorHandler(hdbUserErrFunc func);
void hdbDefaultErrorHandler(hdbErrorLevel level, char* message);
char* hdbGetError();
void hdbClearError();
hdbConfigId hdbOpen(const char* libName, const char* cellName, const char* viewName, const char* mode );
hdbConfigId hdbOpenWithType(const char* libName, const char* cellName, const char* viewName, const char* mode, const char* nameSpace);
hdbConfigBagId hdbAllocConfigBag();
Boolean hdbAddConfigToBag(hdbConfigBagId bag, hdbConfigId config);
Boolean hdbCloseConfigsInBag(hdbConfigBagId bagId);
Boolean hdbConfigHasOccRules(hdbConfigId config);
Boolean hdbSave(hdbConfigId config);
Boolean hdbSaveAs(hdbConfigId config, const char* libName, const char* cellName, const char* viewName);
Boolean hdbIsOpenConfig(hdbConfigId config);
Boolean hdbClose(hdbConfigId config);
Boolean hdbConfigIsModified(hdbConfigId config);
Boolean hdbConfigIsEditable(hdbConfigId config);
char* hdbGetLibName(hdbConfigId config);
char* hdbGetCellName(hdbConfigId config);
char* hdbGetViewName(hdbConfigId config);
char* hdbGetTopLibName(hdbConfigId config);
char* hdbGetTopCellName(hdbConfigId config);
char* hdbGetTopViewName(hdbConfigId config);
Boolean hdbSetTopCellViewName(hdbConfigId config, const char* libName, const char* cellName, const char* viewName);
char** hdbGetDefaultLibList(hdbConfigId config);
char* hdbGetDefaultLibListString(hdbConfigId config);
Boolean hdbSetDefaultLibListString(hdbConfigId config, const char* libListStr);
Boolean hdbSetDefaultLibList(hdbConfigId config, char** libList);
char** hdbGetDefaultViewList(hdbConfigId config);
char* hdbGetDefaultViewListString(hdbConfigId config);
Boolean hdbSetDefaultViewListString(hdbConfigId config, const char* viewListStr);
Boolean hdbSetDefaultViewList(hdbConfigId config, char** viewList);
char** hdbGetDefaultStopList(hdbConfigId config);
char* hdbGetDefaultStopListString(hdbConfigId config);
Boolean hdbSetDefaultStopListString(hdbConfigId config, const char* stopListStr);
Boolean hdbSetDefaultStopList(hdbConfigId config, char** stopList);
Boolean hdbDeleteNote(hdbConfigId config);
Boolean hdbReplaceNoteLine(hdbConfigId config, const char* text);
Boolean hdbAddNoteLine(hdbConfigId config, const char* text);
char* hdbGetNoteString(hdbConfigId config);
Boolean hdbReplaceConst(hdbConfigId config, const char* name, const char* value);
Boolean hdbReplaceConstArr(hdbConfigId config, const char* name, char** valueArr);
Boolean hdbDeleteConst(hdbConfigId config, const char* name);
int hdbGetRevision(hdbConfigId config);
Boolean hdbIsConfigModified(hdbConfigId config);
char** hdbGetObjLibList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
char* hdbGetObjLibListStr(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
Boolean hdbSetObjLibListStr(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
const char* libListStr);
Boolean hdbSetObjLibList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
char** libList);
Boolean hdbDeleteObjLibList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName );
char** hdbGetObjViewList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
char* hdbGetObjViewListStr(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
Boolean hdbSetObjViewListStr(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
const char* viewListStr);
Boolean hdbSetObjViewList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
char** viewList);
Boolean hdbDeleteObjViewList(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
hdbSpecId hdbGetObjBinding(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
Boolean hdbSetObjBinding(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
const char* libBinding, const char* cellBinding,
const char* viewBinding);
Boolean hdbDeleteObjBinding(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
Boolean hdbGetObjStop(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
Boolean hdbSetObjStop(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName,
Boolean doStop);
Boolean hdbDeleteObjStop(hdbConfigId config, const char* libName, const char* cellName, const char* viewName, const char* instName);
hdbPathVectorId hdbCreatePathVector(hdbConfigId config);
hdbPathVectorId hdbCopyPathVector(hdbPathVectorId pathVector);
void hdbDestroyPathVector(hdbPathVectorId pathVector);
Boolean hdbPop(hdbPathVectorId pathVector);
Boolean hdbPopCell(hdbPathVectorId pathVector);
Boolean hdbPopToTop(hdbPathVectorId pathVector);
Boolean hdbPushCell(hdbPathVectorId pathVector, const char* instName, const char* libName, const char* cellName, const char* viewName);
Boolean hdbPushCell2(hdbPathVectorId pathVector, const char* instName, const char* libName, const char* cellName, const char* viewName,
hdbBindWhyId bindWhy);
char* hdbGetPathStr(hdbPathVectorId pathVector);
char* hdbGetPathStackStr(hdbPathVectorStackId pathVecStack);
hdbSpecId hdbBind(hdbPathVectorId pathVector, const char* libName, const char* cellName, const char* viewName, const char* instName,
Boolean libFixed, Boolean cellFixed, Boolean viewFixed,
hdbSpecId rtnSpec);
hdbSpecId hdbBind2(hdbPathVectorId pathVector, const char* libName, const char* cellName, const char* viewName, const char* instName,
Boolean libFixed, Boolean cellFixed, Boolean viewFixed,
hdbSpecId rtnSpec, hdbBindSignatureId* rtnBindSig);
hdbSpecId hdbBind3(hdbPathVectorId pathVector, const char* libName, const char* cellName, const char* viewName, const char* instName,
Boolean libFixed, Boolean cellFixed, Boolean viewFixed,
hdbSpecId rtnSpec, hdbBindSignatureId* rtnBindSig,
hdbBindWhyId* rtnBindWhy);
Boolean hdbIsAtStopPoint(hdbPathVectorId pathVec);
char* hdbExplainStop(const char* indent, hdbPathVectorId pathVec);
Boolean hdbEquivalentSigs(hdbBindSignatureId sig1, hdbBindSignatureId sig2);
int hdbHashSig(hdbBindSignatureId sig);
char* hdbExplainBinding(const char* indent, const char* libName, const char* cellName, const char* viewName, const char* instName,
Boolean libFixed, Boolean cellFixed, Boolean viewFixed,
hdbSpecId bindingSpec, hdbBindSignatureId bindSig,
hdbBindWhyId bindWhy);
char* hdbExplainSignature(const char* indent, hdbBindSignatureId bindSig);
hdbPathVectorStackId hdbCreatePathVectorStack();
void hdbPushPathVect(hdbPathVectorStackId pathVectStack, hdbPathVectorId pathVector, void* userData);
Boolean hdbGetPathVectorStackTop(hdbPathVectorStackId pathVectStack, hdbPathVectorId* rtnPathVectorIdPt, void** rtnUserDataPt);
void hdbPopPathVect(hdbPathVectorStackId pathVectStack);
Boolean hdbIsConfig(hdbSpecId spec);
Boolean hdbIsOpenBinding(hdbSpecId spec);
Related Information
For more information about the Hierarchy Editor’s elaboration process, see the Cadence Hierarchy Editor User Guide.
Return to top