cal.h
calInt.h
cal.c
calApplyReduce.c
calAssociation.c
calBddCompose.c
calBddITE.c
calBddManager.c
calBddOp.c
calBddReorderTest.c
calBddSatisfy.c
calBddSize.c
calBddSubstitute.c
calBddSupport.c
calBddSwapVars.c
calBddVarSubstitute.c
calBlk.c
calCacheTableTwo.c
calDump.c
calGC.c
calHashTable.c
calHashTableOne.c
calHashTableThree.c
calInteract.c
calMem.c
calMemoryManagement.c
calPerformanceTest.c
calPipeline.c
calPrint.c
calPrintProfile.c
calQuant.c
calReduce.c
calReorderBF.c
calReorderDF.c
calReorderUtil.c
calTerminal.c
calTest.c
calUtil.c
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu)
See Alsooptional
By: Rajeev K. Ranjan (rajeev@ic.eecs.berkeley.edu Jagesh Sanghavi (sanghavi@ic.eecs.berkeley.edu)
See Alsocal.h
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) and Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu
Cal_BddIsEqual()
Cal_BddIsBddOne()
Cal_BddIsBddZero()
Cal_BddIsBddNull()
Cal_BddIsBddConst()
Cal_BddIdentity()
Cal_BddOne()
Cal_BddZero()
Cal_BddNot()
Cal_BddGetIfIndex()
Cal_BddGetIfId()
Cal_BddIf()
Cal_BddThen()
Cal_BddElse()
Cal_BddFree()
Cal_BddUnFree()
Cal_BddGetRegular()
Cal_BddIntersects()
Cal_BddImplies()
Cal_BddTotalSize()
Cal_BddStats()
Cal_BddDynamicReordering()
Cal_BddReorder()
Cal_BddType()
Cal_BddVars()
Cal_BddNodeLimit()
Cal_BddOverflow()
Cal_BddIsCube()
Cal_BddManagerGetHooks()
Cal_BddManagerSetHooks()
CalBddIf()
CalBddIsCubeStep()
CalBddTypeAux()
CalBddIdentity()
BddIntersectsStep()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
See Alsooptional
CalHashTableApply()
CalHashTableReduce()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
optional
See Alsooptional
Cal_AssociationInit()
Cal_AssociationQuit()
Cal_AssociationSetCurrent()
Cal_TempAssociationAugment()
Cal_TempAssociationInit()
Cal_TempAssociationQuit()
CalAssociationListFree()
CalVarAssociationRepackUpdate()
CalCheckAssociationValidity()
CalReorderAssociationFix()
AssociationIsEqual()
CheckAssoc()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
Cal_BddCompose()
CalRequestNodeListCompose()
CalHashTableComposeApply()
CalComposeRequestCreate()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
See Alsooptional
Cal_BddITE()
CalRequestNodeListArrayITE()
CalBddOpITEBF()
CalHashTableITEApply()
CalBddITE()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
See Alsooptional
Cal_BddManagerInit()
Cal_BddManagerQuit()
Cal_BddManagerSetParameters()
Cal_BddManagerGetNumNodes()
Cal_BddManagerCreateNewVarFirst()
Cal_BddManagerCreateNewVarLast()
Cal_BddManagerCreateNewVarBefore()
Cal_BddManagerCreateNewVarAfter()
Cal_BddManagerGetVarWithIndex()
Cal_BddManagerGetVarWithId()
CalBddManagerCreateNewVar()
BddDefaultTransformFn()
CalBddManagerPrint()
By: Rajeev Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
The "cal" specific routines are "Cal_BddPairwiseAnd/Or", "Cal_BddMultiwayAnd/Or".
See Alsooptional
Cal_BddAnd()
Cal_BddNand()
Cal_BddOr()
Cal_BddNor()
Cal_BddXor()
Cal_BddXnor()
Cal_BddPairwiseAnd()
Cal_BddPairwiseOr()
Cal_BddPairwiseXor()
Cal_BddMultiwayAnd()
Cal_BddMultiwayOr()
Cal_BddMultiwayXor()
CalRequestNodeListArrayOp()
CalBddOpBF()
BddArrayOpBF()
BddMultiwayOp()
BddArrayToRequestNodeListArray()
CeilLog2()
By: Wilsin Gosti (wilsin@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
See Alsooptional
main()
cpuTime()
elapsedTime()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
See Alsooptional
Cal_BddSatisfy()
Cal_BddSatisfySupport()
Cal_BddSatisfyingFraction()
BddSatisfyStep()
BddSatisfySupportStep()
IndexCmp()
BddSatisfyingFractionStep()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu) Originally written by David Long.
See Alsooptional
Cal_BddSize()
Cal_BddSizeMultiple()
Cal_BddProfile()
Cal_BddProfileMultiple()
Cal_BddFunctionProfile()
Cal_BddFunctionProfileMultiple()
BddMarkBdd()
BddCountNoNodes()
BddCountNodes()
BddSizeStep()
BddProfileStep()
BddHighestRefStep()
BddDominatedStep()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
Routine for simultaneous substitution of an array of variables with an array of functions.
See Alsooptional
Cal_BddSubstitute()
CalHashTableSubstituteApply()
CalHashTableSubstituteReduce()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu) Originally written by David Long.
See Alsooptional
Cal_BddSupport()
Cal_BddDependsOn()
CalBddSupportStep()
CalBddUnmarkNodes()
CalBddDependsOnStep()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
Routine for swapping two variables.
See AlsoNone
Cal_BddSwapVars()
CalHashTableSwapVarsApply()
CalHashTableSwapVarsPlusApply()
CalHashTableSwapVarsMinusApply()
By: Rajeev Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
See Alsooptional
Cal_BddVarSubstitute()
CalBddVarSubstitute()
CalOpBddVarSubstitute()
CalHashTableSubstituteApply()
CalHashTableSubstituteReduce()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu). Modelled on the BDD package developed by David Long.
Routines for manipulating blocks of variables.
Cal_BddNewVarBlock()
Cal_BddVarBlockReorderable()
CalBddFindBlock()
CalBddBlockDelta()
CalBddShiftBlock()
CalBlockMemoryConsumption()
CalFreeBlockRecursively()
AddBlock()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
See Alsooptional
CalCacheTableTwoInit()
CalCacheTableTwoQuit()
CalCacheTableTwoInsert()
CalCacheTableTwoLookup()
CalCacheTableTwoFlush()
CalCacheTableTwoFlushAll()
CalCacheTableTwoGCFlush()
CalCacheTableTwoRepackUpdate()
CalCheckCacheTableValidity()
CalCacheTableTwoFixResultPointers()
CalCacheTablePrint()
CalBddManagerGetCacheTableData()
CalCacheTableRehash()
CalCacheTableTwoFlushAssociationId()
CalCacheTableMemoryConsumption()
CacheTableTwoRehash()
CacheTablePrint()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu) Originally written by David Long.
See Alsooptional
Cal_BddUndumpBdd()
Cal_BddDumpBdd()
Write()
BddDumpBddStep()
Read()
BddUndumpBddStep()
BytesNeeded()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
optional
See Alsooptional
Cal_BddSetGCMode()
Cal_BddManagerGC()
Cal_BddManagerSetGCLimit()
CalBddManagerGCCheck()
CalHashTableGC()
CalRepackNodesAfterGC()
CeilLog2()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
CalHashTableInit()
CalHashTableQuit()
CalHashTableAddDirect()
CalHashTableFindOrAdd()
CalHashTableAddDirectAux()
CalHashTableCleanUp()
CalHashTableLookup()
CalHashTableDelete()
CalUniqueTableForIdLookup()
CalUniqueTableForIdFindOrAdd()
CalHashTableRehash()
CalUniqueTableForIdRehashNode()
CalBddUniqueTableNumLockedNodes()
CalPackNodes()
CalBddPackNodesForSingleId()
CalBddPackNodesAfterReorderForSingleId()
CalBddPackNodesForMultipleIds()
CeilLog2()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
See Alsooptional
CalHashTableOneInit()
CalHashTableOneQuit()
CalHashTableOneInsert()
CalHashTableOneLookup()
HashTableOneRehash()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
CalHashTableThreeFindOrAdd
See Alsooptional
CalHashTableThreeFindOrAdd()
CalHashTableThreeRehash()
By: Original author:Fabio Somenzi. Modified for CAL package by Rajeev K. Ranjan
The interaction matrix tells whether two variables are both in the support of some function of the DD. The main use of the interaction matrix is in the in-place swapping. Indeed, if two variables do not interact, there is no arc connecting the two layers; therefore, the swap can be performed in constant time, without scanning the subtables. Another use of the interaction matrix is in the computation of the lower bounds for sifting. Finally, the interaction matrix can be used to speed up aggregation checks in symmetric and group sifting.
The computation of the interaction matrix is done with a series of depth-first searches. The searches start from those nodes that have only external references. The matrix is stored as a packed array of bits; since it is symmetric, only the upper triangle is kept in memory. As a final remark, we note that there may be variables that do intercat, but that for a given variable order have no arc connecting their layers when they are adjacent.
CalSetInteract()
CalTestInteract()
CalInitInteract()
ddSuppInteract()
ddClearLocal()
ddUpdateInteract()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu). Originally written by David Long.
Contains allocation, free, resize routines. Also has routines for managing records of fixed size.
See Alsooptional
Cal_MemFatal()
Cal_MemAllocation()
Cal_MemGetBlock()
Cal_MemFreeBlock()
Cal_MemResizeBlock()
Cal_MemNewRec()
Cal_MemFreeRec()
Cal_MemNewRecMgr()
Cal_MemFreeRecMgr()
CeilingLog2()
BlockSizeIndex()
AddToFreeList()
RemoveFromFreeList()
Buddy()
TrimToSize()
MergeAndFree()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu)
Functions for managing the system memory using a set of nodeManagers. Each nodeManager manages a set of fixed size nodes obtained from a set of pages. When additional memory is required, nodeManager obtains a new page from the pageManager. The new page is divided into ( PAGE_SIZE/NODE_SIZE ) number of nodes.
CalPageManagerInit()
CalPageManagerQuit()
CalPageManagerPrint()
CalNodeManagerInit()
CalNodeManagerQuit()
CalNodeManagerPrint()
CalPageManagerAllocPage()
CalPageManagerFreePage()
PageManagerExpandStorage()
PageAlign()
SegmentToPageList()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
optional
See Alsooptional
Cal_PerformanceTest()
CalIncreasingOrderCompare()
CalDecreasingOrderCompare()
CalPerformanceTestAnd()
CalPerformanceMemoryOverhead()
CalPerformaceTestSuperscalar()
CalPerformanceTestNonSuperscalar()
CalPerformanceTestMultiway()
CalPerformanceTestOneway()
CalPerformanceTestCompose()
CalPerformanceTestQuantifyAllTogether()
CalQuantifySanityCheck()
CalPerformanceTestRelProd()
CalPerformanceTestSubstitute()
CalPerformanceTestSwapVars()
elapsedTime()
cpuTime()
pageFaults()
GetRandomNumbers()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu)
Eventually we would like to have this feature transparent to the user.
See Alsooptional
Cal_PipelineSetDepth()
Cal_PipelineInit()
Cal_PipelineCreateProvisionalBdd()
Cal_PipelineExecute()
Cal_PipelineUpdateProvisionalBdd()
Cal_BddIsProvisional()
Cal_PipelineQuit()
CalBddReorderFixProvisionalNodes()
CalCheckPipelineValidity()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) and Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu) Originally written by David Long.
See AlsoNone
Cal_BddPrintBdd()
CalBddVarName()
CalBddNumberSharedNodes()
CalBddMarkSharedNodes()
Chars()
BddPrintTopVar()
BddPrintBddStep()
BddTerminalId()
BddTerminalValueAux()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev Ranjan (rajeev@eecs.berkeley.edu) Originally written by David Long.
See Alsooptional
Cal_BddPrintProfile()
Cal_BddPrintProfileMultiple()
Cal_BddPrintFunctionProfile()
Cal_BddPrintFunctionProfileMultiple()
CalBddPrintProfileAux()
chars()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) and Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu)
See AlsoNone
Cal_BddExists()
Cal_BddRelProd()
Cal_BddForAll()
CalOpExists()
CalOpRelProd()
BddExistsStep()
BddRelProdStep()
BddDFStep()
HashTableApply()
HashTableReduce()
BddExistsApply()
BddExistsBFAux()
BddExistsReduce()
BddExistsBFPlusDF()
BddRelProdApply()
BddRelProdReduce()
BddRelProdBFAux()
BddRelProdBFPlusDF()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) and Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu
See AlsoNone
Cal_BddCofactor()
Cal_BddReduce()
Cal_BddBetween()
CalOpCofactor()
BddReduceBF()
BddCofactorBF()
HashTableReduceApply()
HashTableCofactorApply()
HashTableCofactorReduce()
By: Rajeev K. Ranjan (rajeev@ic.eecs.berkeley.edu) Wilsin Gosti (wilsin@ic.eecs.berkeley.edu)
This method dynamically reorders variables while preserving their locality. This entails both memory and computational overheads. Conceptually and experimentally it has been observed that these overheads lead to poorer performance compared to the traditional reordering methods. For details, please refer to the work by Rajeev K. Ranjan et al - "Dynamic variable reordering in a breadth-first manipulation based package: Challenges and Solutions"- Proceedings of ICCD'97.
See AlsocalReorderDF.c
calReorderUtil.c
CalBddReorderAuxBF()
BddReorderFixForwardingNodes()
BddReorderFixAndFreeForwardingNodes()
BddReorderSwapVarIndex()
CofactorFixAndReclaimForwardedNodes()
BddReorderFreeNodes()
PrintBddProfileAfterReorder()
BddReorderVarSift()
BddReorderSiftToBestPos()
BddSiftPerfromPhaseIV()
BddReorderVarWindow()
BddReorderWindow2()
BddReorderWindow3()
By: Rajeev K. Ranjan (rajeev@@ic. eecs.berkeley.edu)
This method is based on traditional dynamic reordering technique found in depth-first based packages. The data structure is first converted to conform to traditional one and then reordering is performed. At the end the nodes are arranged back on the pages. The computational overheads are in terms of converting the data structure back and forth and the memory overhead due to the extra space needed to arrange the nodes. This overhead can be eliminated by proper implementation. For details, please refer to the work by Rajeev K. Ranjan et al - "Dynamic variable reordering in a breadth-first manipulation based package: Challenges and Solutions"- Proceedings of ICCD'97.
See AlsocalReorderBF.c
calReorderUtil.c
CalBddReorderAuxDF()
UniqueTableForIdFindOrAdd()
HashTableAddDirect()
HashTableFindOrAdd()
BddConvertDataStruct()
BddConvertDataStructBack()
BddReallocateNodesInPlace()
CalAlignCollisionChains()
BddReallocateNodes()
BddExchangeAux()
CheckValidityOfNodes()
SweepVarTable()
BddExchange()
BddExchangeVarBlocks()
BddReorderWindow2()
BddReorderWindow3()
BddReorderStableWindow3Aux()
BddReorderStableWindow3()
BddSiftBlock()
BddReorderSiftAux()
BddReorderSift()
BddAddInternalReferences()
BddNukeInternalReferences()
CeilLog2()
By: Rajeev K. Ranjan (rajeev@ic.eecs.berkeley.edu) Wilsin Gosti (wilsin@ic.eecs.berkeley.edu)
See Alsooptional
CalBddReorderFixUserBddPtrs()
CalCheckAllValidity()
CalCheckValidityOfNodesForId()
CalCheckValidityOfNodesForWindow()
CalCheckValidityOfANode()
CalCheckRefCountValidity()
CalCheckAssoc()
CalFixupAssoc()
CalBddReorderFixCofactors()
CalBddReorderReclaimForwardedNodes()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) and Jagesh V. Sanghavi (sanghavi@eecs.berkeley.edu
CalOpAnd()
CalOpNand()
CalOpOr()
CalOpXor()
CalOpITE()
By: Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Modified and extended from the original version written by David Long.
optional
See Alsooptional
main()
asDouble()
asAddress()
terminalIdFn()
PrintBdd()
Error()
Cofactor()
Decode()
TestAnd()
TestNand()
TestOr()
TestITE()
TestXor()
TestIdNot()
TestCompose()
TestSubstitute()
TestVarSubstitute()
TestSwapVars()
TestMultiwayAnd()
TestMultiwayOr()
TestMultiwayLarge()
TestArrayOp()
TestInterImpl()
TestQnt()
TestAssoc()
TestRelProd()
TestReduce()
TestGenCof()
TestSize()
TestSatisfy()
TestPipeline()
TestDump()
TestReorderBlock()
TestReorder()
handler()
RandomTests()
By: Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) Rajeev K. Ranjan (rajeev@eecs.berkeley.edu)
Utility functions used in the Cal package.
See Alsooptional
Cal_BddFunctionPrint()
CalUniqueTablePrint()
CalBddFunctionPrint()
CalBddPreProcessing()
CalBddPostProcessing()
CalBddArrayPreProcessing()
CalBddGetInternalBdd()
CalBddGetExternalBdd()
CalBddFatalMessage()
CalBddWarningMessage()
CalBddNodePrint()
CalBddPrint()
CalHashTablePrint()
CalHashTableOnePrint()