This commit was generated by cvs2svn to track changes on a CVS vendor
branch.
This commit is contained in:
commit
cc19353df4
|
@ -0,0 +1 @@
|
||||||
|
man_MANS = bdd.1
|
|
@ -0,0 +1,479 @@
|
||||||
|
.\" $Id: bdd.1,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)bdd.1 1.01 96/02/07 UPMC; Author : Jacomme Ludovic
|
||||||
|
.TH BDD101 1 "October 1, 1997" "ASIM/LIP6" "ALLIANCE BDD LIBRARY"
|
||||||
|
.SH NAME
|
||||||
|
bdd \- Mutli Reduced Ordered Binary Decision Diagrams
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBbdd\fP is a library that enables to represent a boolean expression
|
||||||
|
as a Multi Reduced Ordered Binary Decision Diagrams.
|
||||||
|
.TP 20
|
||||||
|
.br
|
||||||
|
\fBviewbddallocinfo\fP
|
||||||
|
\- displays memory informations.
|
||||||
|
.TP
|
||||||
|
\fBapplybddnodenot\fP
|
||||||
|
\- complements a \fBbdd\fP.
|
||||||
|
.TP
|
||||||
|
\fBapplybddnodeterm\fP
|
||||||
|
\- applies an operator on two \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBapplybddnode\fP
|
||||||
|
\- applies an operator on two \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBapplybddnodeite\fP
|
||||||
|
\- computes the IF-THEN-ELSE logical operation.
|
||||||
|
.TP
|
||||||
|
\fBapplybddnodelist\fP
|
||||||
|
\- applies an opertor to a \fBbdd\fP nodes list.
|
||||||
|
.TP
|
||||||
|
\fBaddbddassoc\fP
|
||||||
|
\- creates a new association variables.
|
||||||
|
.TP
|
||||||
|
\fBaddbddnodeassoc\fP
|
||||||
|
\- adds a \fBbdd\fP node in a variable association.
|
||||||
|
.TP
|
||||||
|
\fBdelbddassoc\fP
|
||||||
|
\- deletes a variable association.
|
||||||
|
.TP
|
||||||
|
\fBdelbddnodeassoc\fP
|
||||||
|
\- deletes a \fBbdd\fP node in a variable association.
|
||||||
|
.TP
|
||||||
|
\fBdestroybddassoc\fP
|
||||||
|
\- frees all the variable associations.
|
||||||
|
.TP
|
||||||
|
\fBviewbddassoc\fP
|
||||||
|
\- displays variable associations.
|
||||||
|
.TP
|
||||||
|
\fBcheckbddvar\fP
|
||||||
|
\- checks the coherence of a variable.
|
||||||
|
.TP
|
||||||
|
\fBcheckbddindex\fP
|
||||||
|
\- checks the coherence of a \fBbdd\fP index.
|
||||||
|
.TP
|
||||||
|
\fBcheckbddoper\fP
|
||||||
|
\- ckecks the coherence of an operator.
|
||||||
|
.TP
|
||||||
|
\fBcheckbddassoc\fP
|
||||||
|
\- checks a variable association.
|
||||||
|
.TP
|
||||||
|
\fBcheckbddmaxnode\fP
|
||||||
|
\- checks if the max node reached.
|
||||||
|
.TP
|
||||||
|
\fBcreatebddcircuit\fP
|
||||||
|
\- creates a \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fBresetbddcircuit\fP
|
||||||
|
\- resets a \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fBdestroybddcircuit\fP
|
||||||
|
\- frees a \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fBsearchbddcircuitin\fP
|
||||||
|
\- searches a specified input in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBaddbddcircuitin\fP
|
||||||
|
\- adds a new input in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBaddbddcircuitaux\fP
|
||||||
|
\- adds an auxialiary variable in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBsearchbddcircuitout\fP
|
||||||
|
\- searches a specified output in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBaddbddcircuitout\fP
|
||||||
|
\- adds a new output in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBdelbddcircuitout\fP
|
||||||
|
\- deletes a specified output in a circuit.
|
||||||
|
.TP
|
||||||
|
\fBaddbddcircuitabl\fP
|
||||||
|
\- converts an \fBabl\fP to a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddcircuitabl\fP
|
||||||
|
\- converts a \fBbdd\fP node to an \fBabl\fP.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddcircuitsumabl\fP
|
||||||
|
\- converts a \fBbdd\fP node to an \fBabl\fP.
|
||||||
|
.TP
|
||||||
|
\fBviewbddcircuit\fP
|
||||||
|
\- displays a \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fBcofactorbddnode\fP
|
||||||
|
\- computes the generalized cofactor.
|
||||||
|
.TP
|
||||||
|
\fBrestrictbddnode\fP
|
||||||
|
\- substitutes a variable by zero or one.
|
||||||
|
.TP
|
||||||
|
\fBcomposebddnode\fP
|
||||||
|
\- substitutes a variable by a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddindexabl\fP
|
||||||
|
\- converts a \fBbdd\fP index to an atomic \fBabl\fP.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddmuxabl\fP
|
||||||
|
\- converts a \fBbdd\fP node to a multiplexor.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddnodeabl\fP
|
||||||
|
\- converts a \fBbdd\fP node to an \fBabl\fP.
|
||||||
|
.TP
|
||||||
|
\fBconvertbddnodesumabl\fP
|
||||||
|
\- converts a \fBbdd\fP node to an \fBabl\fP.
|
||||||
|
.TP
|
||||||
|
\fBexistbddnodeassocon\fP
|
||||||
|
\- computes an existantial quantification.
|
||||||
|
.TP
|
||||||
|
\fBexistbddnodeassocoff\fP
|
||||||
|
\- computes an existantial quantification.
|
||||||
|
.TP
|
||||||
|
\fBgarbagebddsystem\fP
|
||||||
|
\- forces a \fBbdd\fP garbage collection.
|
||||||
|
.TP
|
||||||
|
\fBimplybddnode\fP
|
||||||
|
\- computes a \fBbdd\fP that implies a conjonction.
|
||||||
|
.TP
|
||||||
|
\fBintersectbddnode\fP
|
||||||
|
\- tests for an intersection.
|
||||||
|
.TP
|
||||||
|
\fBmarkbddnode\fP
|
||||||
|
\- marks a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBunmarkbddnode\fP
|
||||||
|
\- clears a marked \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBgetbddnodenum\fP
|
||||||
|
\- gets the number of nodes in a \fBbdd\fP.
|
||||||
|
.TP
|
||||||
|
\fBgetbddnodesize\fP
|
||||||
|
\- gets the number of nodes in a \fBbdd\fP.
|
||||||
|
.TP
|
||||||
|
\fBaddbddnode\fP
|
||||||
|
\- adds a new \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBaddbddnodelist\fP
|
||||||
|
\- adds a node in a \fIchain_list\fP.
|
||||||
|
.TP
|
||||||
|
\fBdelbddnode\fP
|
||||||
|
\- deletes a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBdelbddnodelist\fP
|
||||||
|
\- deletes a list of \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBviewbddnode\fP
|
||||||
|
\- displays a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBincbddrefext\fP
|
||||||
|
\- increments the number of external reference.
|
||||||
|
.TP
|
||||||
|
\fBincbddrefint\fP
|
||||||
|
\- increments the number of internal reference.
|
||||||
|
.TP
|
||||||
|
\fBdecbddrefext\fP
|
||||||
|
\- decrements the number of external reference.
|
||||||
|
.TP
|
||||||
|
\fBdecbddrefint\fP
|
||||||
|
\- decrements the number of internal reference.
|
||||||
|
.TP
|
||||||
|
\fBsetbddrefext\fP
|
||||||
|
\- sets a node visible from outside.
|
||||||
|
.TP
|
||||||
|
\fBunsetbddrefext\fP
|
||||||
|
\- sets a node invisible from outside.
|
||||||
|
.TP
|
||||||
|
\fBclearbddsystemrefint\fP
|
||||||
|
\- clears all the internal references.
|
||||||
|
.TP
|
||||||
|
\fBclearbddsystemrefext\fP
|
||||||
|
\- clears all the external references.
|
||||||
|
.TP
|
||||||
|
\fBclearbddsystemref\fP
|
||||||
|
\- clears all the references.
|
||||||
|
.TP
|
||||||
|
\fBrelprodbddnodeassoc\fP
|
||||||
|
\- computes a relation product.
|
||||||
|
.TP
|
||||||
|
\fBreorderbddsystemsimple\fP
|
||||||
|
\- reorders the \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBreorderbddsystemwindow\fP
|
||||||
|
\- reorders the \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBreorderbddsystemtop\fP
|
||||||
|
\- reorders the \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBreorderbddsystemdynamic\fP
|
||||||
|
\- sets the dynamic reorder parameters.
|
||||||
|
.TP
|
||||||
|
\fBsatisfybddnode\fP
|
||||||
|
\- finds a satisfying path for a \fBbdd\fP.
|
||||||
|
.TP
|
||||||
|
\fBsimpbddnodedcon\fP
|
||||||
|
\- simplifies a \fBbdd\fP with don't cares on its on-set.
|
||||||
|
.TP
|
||||||
|
\fBsimpbddnodedcoff\fP
|
||||||
|
\- simplifies a \fBbdd\fP with don't cares on its off-set
|
||||||
|
.TP
|
||||||
|
\fBsubstbddnodeassoc\fP
|
||||||
|
\- substitutes variables with \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fBgetbddnodesupport\fP
|
||||||
|
\- gives the support of a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBisbddvarinsupport\fP
|
||||||
|
\- checks if a variable appears in a \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fBcreatebddsystem\fP
|
||||||
|
\- creates a \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fBresetbddsystem\fP
|
||||||
|
\- resets a \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fBdestroybddsystem\fP
|
||||||
|
\- frees a \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fBviewbddsystem\fP
|
||||||
|
\- displays a \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fBviewbddsysteminfo\fP
|
||||||
|
\- displays statisticals informations.
|
||||||
|
.TP
|
||||||
|
\fBtestbddcircuit\fP
|
||||||
|
\- debbugs a \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvar\fP
|
||||||
|
\- creates a new variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarlast\fP
|
||||||
|
\- creates a new variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarfirst\fP
|
||||||
|
\- creates a new variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarbefore\fP
|
||||||
|
\- creates a new variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarafter\fP
|
||||||
|
\- creates a new variable.
|
||||||
|
.TP
|
||||||
|
\fBsweepbddvar\fP
|
||||||
|
\- sweeps all the unused nodes for a variable.
|
||||||
|
.TP
|
||||||
|
\fBswapbddvar\fP
|
||||||
|
\- swaps two contigous variables.
|
||||||
|
.TP
|
||||||
|
\fBgetbddvarbyindex\fP
|
||||||
|
\- converts \fBbdd\fP index to a variable number.
|
||||||
|
.TP
|
||||||
|
\fBgetbddvarindex\fP
|
||||||
|
\- converts a variable number in a \fBbdd\fP index.
|
||||||
|
.TP
|
||||||
|
\fBgetbddvarnode\fP
|
||||||
|
\- gives the \fBbdd\fP node of a variable.
|
||||||
|
.TP
|
||||||
|
\fBgetbddvarnodebyindex\fP
|
||||||
|
\- gives the \fBbdd\fP node of a variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarauxsingle\fP
|
||||||
|
\- creates an auxiliary variable.
|
||||||
|
.TP
|
||||||
|
\fBaddbddvarauxglobal\fP
|
||||||
|
\- creates an auxiliary variable.
|
||||||
|
|
||||||
|
.TP 0
|
||||||
|
libBdd101.a :
|
||||||
|
|
||||||
|
\fBallocbdduserfunc\fP,
|
||||||
|
\fBallocbddheath\fP,
|
||||||
|
\fBallocbddhnode\fP,
|
||||||
|
\fBallocbddhoper\fP,
|
||||||
|
\fBallocbddhnodetable\fP,
|
||||||
|
\fBallocbddhopertable\fP,
|
||||||
|
\fBallocbddblock\fP,
|
||||||
|
\fBallocbddnodeblock\fP,
|
||||||
|
\fBallocbddvartree\fP,
|
||||||
|
\fBallocbddvarchild\fP,
|
||||||
|
\fBallocbddvarnode\fP,
|
||||||
|
\fBallocbddindexnode\fP,
|
||||||
|
\fBallocbddvar\fP,
|
||||||
|
\fBallocbddindex\fP,
|
||||||
|
\fBallocbddassoc\fP,
|
||||||
|
\fBallocbddassocnode\fP,
|
||||||
|
\fBallocbddnamein\fP,
|
||||||
|
\fBallocbddindexin\fP,
|
||||||
|
\fBallocbddsystem\fP,
|
||||||
|
\fBallocbddcircuit\fP,
|
||||||
|
\fBviewbddallocinfo\fP,
|
||||||
|
\fBapplybddnodenot\fP,
|
||||||
|
\fBapplybddnodeterm\fP,
|
||||||
|
\fBapplybddnode\fP,
|
||||||
|
\fBapplybddnodeite\fP,
|
||||||
|
\fBapplybddnodelist\fP,
|
||||||
|
\fBaddbddassoc\fP,
|
||||||
|
\fBaddbddnodeassoc\fP,
|
||||||
|
\fBdelbddassoc\fP,
|
||||||
|
\fBdelbddnodeassoc\fP,
|
||||||
|
\fBdestroybddassoc\fP,
|
||||||
|
\fBviewbddassoc\fP,
|
||||||
|
\fBaddbddblock\fP,
|
||||||
|
\fBcreatebddblock\fP,
|
||||||
|
\fBresetbddblock\fP,
|
||||||
|
\fBdestroybddblock\fP,
|
||||||
|
\fBviewbddblock\fP,
|
||||||
|
\fBcheckbddvar\fP,
|
||||||
|
\fBcheckbddindex\fP,
|
||||||
|
\fBcheckbddoper\fP,
|
||||||
|
\fBcheckbddassoc\fP,
|
||||||
|
\fBcheckbddmaxnode\fP,
|
||||||
|
\fBcreatebddcircuit\fP,
|
||||||
|
\fBresetbddcircuit\fP,
|
||||||
|
\fBdestroybddcircuit\fP,
|
||||||
|
\fBsearchbddcircuitin\fP,
|
||||||
|
\fBaddbddcircuitin\fP,
|
||||||
|
\fBaddbddcircuitaux\fP,
|
||||||
|
\fBsearchbddcircuitout\fP,
|
||||||
|
\fBaddbddcircuitout\fP,
|
||||||
|
\fBdelbddcircuitout\fP,
|
||||||
|
\fBaddbddcircuitabl\fP,
|
||||||
|
\fBconvertbddcircuitabl\fP,
|
||||||
|
\fBconvertbddcircuitsumabl\fP,
|
||||||
|
\fBviewbddcircuit\fP,
|
||||||
|
\fBcofactorbddnode\fP,
|
||||||
|
\fBrestrictbddnode\fP,
|
||||||
|
\fBcomposebddnode\fP,
|
||||||
|
\fBconvertbddindexabl\fP,
|
||||||
|
\fBconvertbddmuxabl\fP,
|
||||||
|
\fBconvertbddnodeabl\fP,
|
||||||
|
\fBconvertbddnodesumabl\fP,
|
||||||
|
\fBexistbddnodeassocon\fP,
|
||||||
|
\fBexistbddnodeassocoff\fP,
|
||||||
|
\fBfreebdduserfunc\fP,
|
||||||
|
\fBfreebddheath\fP,
|
||||||
|
\fBfreebddhnode\fP,
|
||||||
|
\fBfreebddhoper\fP,
|
||||||
|
\fBfreebddhnodetable\fP,
|
||||||
|
\fBfreebddhopertable\fP,
|
||||||
|
\fBfreebddblock\fP,
|
||||||
|
\fBfreebddnodeblock\fP,
|
||||||
|
\fBfreebddvartree\fP,
|
||||||
|
\fBfreebddvarchild\fP,
|
||||||
|
\fBfreebddvarnode\fP,
|
||||||
|
\fBfreebddindexnode\fP,
|
||||||
|
\fBfreebddvar\fP,
|
||||||
|
\fBfreebddindex\fP,
|
||||||
|
\fBfreebddassoc\fP,
|
||||||
|
\fBfreebddassocnode\fP,
|
||||||
|
\fBfreebddnamein\fP,
|
||||||
|
\fBfreebddindexin\fP,
|
||||||
|
\fBfreebddsystem\fP,
|
||||||
|
\fBfreebddcircuit\fP,
|
||||||
|
\fBgarbagebddsystem\fP,
|
||||||
|
\fBgetbddheathvar\fP,
|
||||||
|
\fBgetbddheath\fP,
|
||||||
|
\fBdelbddheath\fP,
|
||||||
|
\fBsetbddhnodefunc\fP,
|
||||||
|
\fBgetbddhnodesize\fP,
|
||||||
|
\fBgetbddhnodekey\fP,
|
||||||
|
\fBgetbddhnodeindex\fP,
|
||||||
|
\fBcheckbddhnode\fP,
|
||||||
|
\fBcreatebddhnodetable\fP,
|
||||||
|
\fBdestroybddhnodetable\fP,
|
||||||
|
\fBresetbddhnodetable\fP,
|
||||||
|
\fBresizebddhnodetable\fP,
|
||||||
|
\fBstretchbddhnodetable\fP,
|
||||||
|
\fBaddbddhnode\fP,
|
||||||
|
\fBdelbddhnode\fP,
|
||||||
|
\fBviewbddhnode\fP,
|
||||||
|
\fBviewbddhnodetable\fP,
|
||||||
|
\fBviewbddindexnode\fP,
|
||||||
|
\fBviewbddvarnode\fP,
|
||||||
|
\fBsetbddhoperfunc\fP,
|
||||||
|
\fBgetbddhopersize\fP,
|
||||||
|
\fBgetbddhoperkey\fP,
|
||||||
|
\fBcreatebddhopertable\fP,
|
||||||
|
\fBdestroybddhopertable\fP,
|
||||||
|
\fBresetbddhopertable\fP,
|
||||||
|
\fBaddbddhoper\fP,
|
||||||
|
\fBsearchbddhoper\fP,
|
||||||
|
\fBviewbddhoper\fP,
|
||||||
|
\fBviewbddhopertable\fP,
|
||||||
|
\fBimplybddnode\fP,
|
||||||
|
\fBintersectbddnode\fP,
|
||||||
|
\fBmarkbddnode\fP,
|
||||||
|
\fBunmarkbddnode\fP,
|
||||||
|
\fBgetbddnodenum\fP,
|
||||||
|
\fBgetbddnodesize\fP,
|
||||||
|
\fBaddbddnode\fP,
|
||||||
|
\fBaddbddnodelist\fP,
|
||||||
|
\fBdelbddnode\fP,
|
||||||
|
\fBdelbddnodelist\fP,
|
||||||
|
\fBviewbddnode\fP,
|
||||||
|
\fBincbddrefext\fP,
|
||||||
|
\fBincbddrefint\fP,
|
||||||
|
\fBdecbddrefext\fP,
|
||||||
|
\fBdecbddrefint\fP,
|
||||||
|
\fBsetbddrefext\fP,
|
||||||
|
\fBunsetbddrefext\fP,
|
||||||
|
\fBclearbddsystemrefint\fP,
|
||||||
|
\fBclearbddsystemrefext\fP,
|
||||||
|
\fBclearbddsystemref\fP,
|
||||||
|
\fBrelprodbddnodeassoc\fP,
|
||||||
|
\fBreorderbddvartreewindow2\fP,
|
||||||
|
\fBreorderbddvartreewindow3\fP,
|
||||||
|
\fBreorderbddsystemsimple\fP,
|
||||||
|
\fBreorderbddsystemwindow\fP,
|
||||||
|
\fBreorderbddsystemtop\fP,
|
||||||
|
\fBreorderbddsystemdynamic\fP,
|
||||||
|
\fBresizebddvarchild\fP,
|
||||||
|
\fBresizebddvarnode\fP,
|
||||||
|
\fBresizebddvar\fP,
|
||||||
|
\fBresizebddindexnode\fP,
|
||||||
|
\fBresizebddindex\fP,
|
||||||
|
\fBresizebddassocnode\fP,
|
||||||
|
\fBresizebddnamein\fP,
|
||||||
|
\fBresizebddindexin\fP,
|
||||||
|
\fBsatisfybddnode\fP,
|
||||||
|
\fBsimpbddnodedcon\fP,
|
||||||
|
\fBsimpbddnodedcoff\fP,
|
||||||
|
\fBsubstbddnodeassoc\fP,
|
||||||
|
\fBgetbddnodesupport\fP,
|
||||||
|
\fBisbddvarinsupport\fP,
|
||||||
|
\fBcreatebddsystem\fP,
|
||||||
|
\fBresetbddsystem\fP,
|
||||||
|
\fBdestroybddsystem\fP,
|
||||||
|
\fBviewbddsystem\fP,
|
||||||
|
\fBviewbddsysteminfo\fP,
|
||||||
|
\fBtestbddcircuit\fP,
|
||||||
|
\fBaddbdduserfunc\fP,
|
||||||
|
\fBdelbdduserfunc\fP,
|
||||||
|
\fBexecbdduserfunc\fP,
|
||||||
|
\fBdestroybdduserfunc\fP,
|
||||||
|
\fBnewbddvar\fP,
|
||||||
|
\fBaddbddvar\fP,
|
||||||
|
\fBaddbddvarlast\fP,
|
||||||
|
\fBaddbddvarfirst\fP,
|
||||||
|
\fBaddbddvarbefore\fP,
|
||||||
|
\fBaddbddvarafter\fP,
|
||||||
|
\fBsweepbddvar\fP,
|
||||||
|
\fBswapbddvar\fP,
|
||||||
|
\fBgetbddvarbyindex\fP,
|
||||||
|
\fBgetbddvarindex\fP,
|
||||||
|
\fBgetbddvarnode\fP,
|
||||||
|
\fBgetbddvarnodebyindex\fP,
|
||||||
|
\fBaddbddvarauxsingle\fP,
|
||||||
|
\fBaddbddvarauxglobal\fP,
|
||||||
|
\fBsearchbddvartree\fP,
|
||||||
|
\fBdeltabddvartree\fP,
|
||||||
|
\fBshiftbddvartree\fP,
|
||||||
|
\fBaddbddvartree\fP,
|
||||||
|
\fBswapbddvartree\fP,
|
||||||
|
\fBcreatebddvartree\fP,
|
||||||
|
\fBresetbddvartree\fP,
|
||||||
|
\fBdestroybddvartree\fP,
|
||||||
|
\fBviewbddvartree\fP.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR \fBaut\fP(1), \fBabl\fP(1).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
man_MANS = addbddassoc.3 \
|
||||||
|
addbddcircuitabl.3 \
|
||||||
|
addbddcircuitin.3 \
|
||||||
|
addbddcircuitout.3 \
|
||||||
|
addbddnode.3 \
|
||||||
|
addbddnodeassoc.3 \
|
||||||
|
addbddnodelist.3 \
|
||||||
|
addbddvar.3 \
|
||||||
|
addbddvarafter.3 \
|
||||||
|
addbddvarbefore.3 \
|
||||||
|
addbddvarfirst.3 \
|
||||||
|
addbddvarlast.3 \
|
||||||
|
applybddnode.3 \
|
||||||
|
applybddnodeite.3 \
|
||||||
|
applybddnodelist.3 \
|
||||||
|
applybddnodenot.3 \
|
||||||
|
applybddnodeterm.3 \
|
||||||
|
clearbddsystemref.3 \
|
||||||
|
clearbddsystemrefext.3 \
|
||||||
|
clearbddsystemrefint.3 \
|
||||||
|
cofactorbddnode.3 \
|
||||||
|
composebddnode.3 \
|
||||||
|
convertbddcircuitabl.3 \
|
||||||
|
convertbddcircuitsumabl.3 \
|
||||||
|
convertbddindexabl.3 \
|
||||||
|
convertbddmuxabl.3 \
|
||||||
|
convertbddnodeabl.3 \
|
||||||
|
convertbddnodesumabl.3 \
|
||||||
|
createbddcircuit.3 \
|
||||||
|
createbddsystem.3 \
|
||||||
|
decbddrefext.3 \
|
||||||
|
decbddrefint.3 \
|
||||||
|
delbddassoc.3 \
|
||||||
|
delbddcircuitout.3 \
|
||||||
|
delbddnode.3 \
|
||||||
|
delbddnodeassoc.3 \
|
||||||
|
delbddnodelist.3 \
|
||||||
|
destroybddassoc.3 \
|
||||||
|
destroybddcircuit.3 \
|
||||||
|
destroybddsystem.3 \
|
||||||
|
existbddnodeassocoff.3 \
|
||||||
|
existbddnodeassocon.3 \
|
||||||
|
garbagebddsystem.3 \
|
||||||
|
getbddnodenum.3 \
|
||||||
|
getbddnodesize.3 \
|
||||||
|
getbddnodesupport.3 \
|
||||||
|
getbddvarbyindex.3 \
|
||||||
|
getbddvarindex.3 \
|
||||||
|
getbddvarnode.3 \
|
||||||
|
getbddvarnodebyindex.3 \
|
||||||
|
implybddnode.3 \
|
||||||
|
incbddrefext.3 \
|
||||||
|
incbddrefint.3 \
|
||||||
|
intersectbddnode.3 \
|
||||||
|
isbddvarinsupport.3 \
|
||||||
|
markbddnode.3 \
|
||||||
|
relprodbddnodeassoc.3 \
|
||||||
|
reorderbddsystemdynamic.3 \
|
||||||
|
reorderbddsystemsimple.3 \
|
||||||
|
reorderbddsystemtop.3 \
|
||||||
|
reorderbddsystemwindow.3 \
|
||||||
|
resetbddcircuit.3 \
|
||||||
|
resetbddsystem.3 \
|
||||||
|
restrictbddnode.3 \
|
||||||
|
satisfybddnode.3 \
|
||||||
|
searchbddcircuitin.3 \
|
||||||
|
searchbddcircuitout.3 \
|
||||||
|
setbddrefext.3 \
|
||||||
|
simpbddnodedcoff.3 \
|
||||||
|
simpbddnodedcon.3 \
|
||||||
|
substbddnodeassoc.3 \
|
||||||
|
swapbddvar.3 \
|
||||||
|
testbddcircuit.3 \
|
||||||
|
unmarkbddnode.3 \
|
||||||
|
unsetbddrefext.3 \
|
||||||
|
viewbddcircuit.3 \
|
||||||
|
viewbddnode.3 \
|
||||||
|
viewbddsystem.3 \
|
||||||
|
viewbddsysteminfo.3
|
|
@ -0,0 +1,86 @@
|
||||||
|
.\" $Id: addbddassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddassoc \- creates a new association variables.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddassoc \(**addbddassoc( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddassoc\fP creates a new association variables in the \fBbdd\fP system
|
||||||
|
\fIBddSystem\fP. If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddassoc\fP returns a pointer to the new variable association.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variable association, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable association number left.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
delbddassoc( (bddsystem \(**)0, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
.\" $Id: addbddcircuitabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddcircuitabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDCIRCUITABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddcircuitabl \- converts an \fBabl\fP expression to a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddcircuitabl( BddCircuit, Expr )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIExpr\fP
|
||||||
|
The expression to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddcircuitabl\fP converts the \fBabl\fP expression \fIExpr\fP
|
||||||
|
to a \fBbdd\fP node. The \fIBddCircuit\fP is used to translate
|
||||||
|
the atomic expressions into variable nodes.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
If an atomic expression doesn't appear in the \fIBddCircuit\fP
|
||||||
|
input names hash table or output names hash table,
|
||||||
|
then \fIaddbddcircuitabl\fP adds a new input by calling the function
|
||||||
|
\fIaddbddcircuitin\fP with the BDD_IN_MODE_LAST mode.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddcircuitabl\fP returns a pointer to the \fBbdd\fP node translated.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad operator xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIExpr\fP parameter must be a well defined \fBabl\fP expression.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i0 and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1),
|
||||||
|
.BR convertbddcircuitabl(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
.\" $Id: addbddcircuitin.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddcircuitin.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDCIRCUITIN 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddcircuitin \- adds an input in a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddcircuitin( BddCircuit, InputName, Index, Mode )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char \(**InputName;
|
||||||
|
bddindex Index;
|
||||||
|
long Mode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIInputName\fP
|
||||||
|
The name of the input.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index of the input.
|
||||||
|
.TP
|
||||||
|
\fIMode\fP
|
||||||
|
The mode.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddcircuitin\fP adds an input \fIInputName\fP in the \fBbdd\fP circuit
|
||||||
|
\fIBddCircuit\fP. If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
If the input \fIInputName\fP exists already, its node pointer is returned.
|
||||||
|
The \fIMode\fP parameter specifies how to create the new variable associated
|
||||||
|
to the name \fIInputName\fP. The \fIIndex\fP parameter is used with the
|
||||||
|
BDD_IN_MODE_BEFORE and BDD_IN_MODE_AFTER mode.
|
||||||
|
The \fIMode\fP parameter can takes the following values :
|
||||||
|
.TP 20
|
||||||
|
BDD_IN_MODE_FIRST
|
||||||
|
adds a variable before all others.
|
||||||
|
.TP
|
||||||
|
BDD_IN_MODE_LAST
|
||||||
|
adds a variable after all others.
|
||||||
|
.TP
|
||||||
|
BDD_IN_MODE_BEFORE
|
||||||
|
adds a variable before the one specified by \fIIndex\fP.
|
||||||
|
.TP
|
||||||
|
BDD_IN_MODE_AFTER
|
||||||
|
adds a variable after the one specified by \fIIndex\fP.
|
||||||
|
.TP
|
||||||
|
BDD_IN_MODE_IMPOSE
|
||||||
|
if this flag is set, only the variables found in the \fIBddCircuit\fP
|
||||||
|
are taken into account. It permits to merge variables from different
|
||||||
|
circuit working on the same \fBbdd\fP system.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddcircuitin\fP returns a pointer to the new created node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"unknwon in mode xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIMode\fP parameter must be defined.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin ( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
...
|
||||||
|
BddNode = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: addbddcircuitout.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddcircuitout.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDCIRCUITOUT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddcircuitout \- adds an output in a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddcircuitout( BddCircuit, OutputName, BddNode )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char \(**OutputName;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIOutputName\fP
|
||||||
|
The name of the output.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node of the output.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddcircuitout\fP adds \fIBddNode\fP as an output \fIOutputName\fP in the \fBbdd\fP circuit
|
||||||
|
\fIBddCircuit\fP. If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
If the output \fIOutputName\fP exists already, the number of external reference of the old node
|
||||||
|
is decremented, and the output node is replaced by the new one.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddcircuitout\fP returns the node \fIBddNode\fP with its number of external
|
||||||
|
reference incremented.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
addbddcircuitout( (bddcircuit \(**)0, "Out0", BddNode );
|
||||||
|
...
|
||||||
|
BddNode = searchbddcircuitout( (bddcircuit \(**)0, "Out0" );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
.BR searchbddcircuitout(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
.\" $Id: addbddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddnode \- adds a new \fBbdd\fP node in the \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddnode( BddSystem, Index, High, Low )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
bddnode \(**High;
|
||||||
|
bddnode \(**Low;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index.
|
||||||
|
.TP
|
||||||
|
\fIHigh\fP
|
||||||
|
The \fBbdd\fP high pointer.
|
||||||
|
.TP
|
||||||
|
\fILow\fP
|
||||||
|
The \fBbdd\fP low pointer.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddnode\fP adds a new node with the index \fIIndex\fP,
|
||||||
|
\fIHigh\fP as HIGH pointer, and \fILow\fP as LOW pointer
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP. If the \fBbdd\fP node exist
|
||||||
|
already \fBaddbddnode\fP return its pointer.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddnode\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIIndex\fP parameter must be a valid index.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
.\" $Id: addbddnodeassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddnodeassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDNODEASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddnodeassoc \- adds a \fBbdd\fP node in a variable association.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddassoc \(**addbddnodeassoc( BddSystem, BddAssoc, Variable, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to add.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddnodeassoc\fP adds the \fBbdd\fP node \fIBddNode\fP, associated to the
|
||||||
|
variable number \fIVariable\fP, in the variable association \fIBddAssoc\fP,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The number of external reference of \fIBddNode\fP is incremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddnodeassoc\fP returns a pointer to the variable association.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
.\" $Id: addbddnodelist.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddnodelist.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDNODELIST 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddnodelist \- adds a node in a \fIchain_list\fP.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list \(**addbddnodelist( BddSystem, HeadList, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
chain_list \(**HeadList;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIHeadList\fP
|
||||||
|
The head of the \fIchain_list\fP.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to add.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddnodelist\fP adds the node \fIBddNode\fP in the ordered list
|
||||||
|
\fIHeadList\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The number of external reference of \fIBddNode\fP is incremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddnodelist\fP returns the new head of the list.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**BddList;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddList = (chain_list \(**)0;
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i0", 0, BDD_IN_MODE_FIRST ) );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i2", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnodelist( (bddsystem \(**)0, ABL_AND, BddList );
|
||||||
|
delbddnodelist( (bddsystem \(**)0, BddList );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 and i1 and i2) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
.\" $Id: addbddvar.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddvar.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDVAR 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddvar \- adds a new variable in the \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddvar( BddSystem, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddvar\fP creates a new variable, with the number \fIVariable\fP,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddvar\fP returns a pointer to the \fBbdd\fP node of the new variable.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variables, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable number left.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
.\" $Id: addbddvarafter.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddvarafter.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDVARAFTER 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddvarafter \- adds a new variable, after an existing one.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddvarafter( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index of an existing variable.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddvarafter\fP creates a new variable, with the number
|
||||||
|
\fIBddSystem\fP->INDEX_TO_VAR[ \fIIndex\fP ] + 1
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddvarafter\fP returns a pointer to the \fBbdd\fP node of the new variable.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variables, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable number left.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIIndex\fP parameter must be a valid index.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode1 = addbddvarfirst( (bddsystem \(**)0 );
|
||||||
|
BddNode2 = addbddvarafter( (bddsystem \(**)0, BddNode1->INDEX );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
.\" $Id: addbddvarbefore.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddvarbefore.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDVARBEFORE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddvarbefore \- adds a new variable, before an existing one.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddvarbefore( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index of an existing variable.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddvarbefore\fP creates a new variable, with the number
|
||||||
|
\fIBddSystem\fP->INDEX_TO_VAR[ \fIIndex\fP ]
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddvarbefore\fP returns a pointer to the \fBbdd\fP node of the new variable.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variables, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable number left.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIIndex\fP parameter must be a valid index.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode1 = addbddvarfirst( (bddsystem \(**)0 );
|
||||||
|
BddNode2 = addbddvarbefore( (bddsystem \(**)0, BddNode1->INDEX );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
.\" $Id: addbddvarfirst.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddvarfirst.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDVARFIRST 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddvarfirst \- adds a new variable, before all others.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddvarfirst( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddvarfirst\fP creates a new variable, with the number 0,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddvarfirst\fP returns a pointer to the \fBbdd\fP node of the new variable.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variables, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable number left.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvarfirst( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
.\" $Id: addbddvarlast.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)addbddvarlast.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ADDBDDVARLAST 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
addbddvarlast \- adds a new variable, after all others.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**addbddvarlast( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBaddbddvarlast\fP creates a new variable, with the number
|
||||||
|
\fIBddLocalSystem->NUMBER_VAR\fP in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBaddbddvarlast\fP returns a pointer to the \fBbdd\fP node of the new variable.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"no more variables, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
There is no variable number left.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvarlast( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
.\" $Id: applybddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)applybddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH APPLYBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
applybddnode \- applies an operator on two \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**applybddnode( BddSystem, Oper, BddNode1, BddNode2 )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
long Oper;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIOper\fP
|
||||||
|
The binary operator.
|
||||||
|
.TP
|
||||||
|
\fIBddNode1\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode2\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBapplybddnode\fP computes the boolean function \fIBddNode1\fP
|
||||||
|
\fIOper\fP \fIBddNode2\fP in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBapplybddnode\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad operator xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIOper\fP parameter must be a valid binary operator.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnode( (bddsystem \(**)0,
|
||||||
|
ABL_AND,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i1" ) );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
.\" $Id: applybddnodeite.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)applybddnodeite.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH APPLYBDDNODEITE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
applybddnodeite \- computes the IF-THEN-ELSE logical operation.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**applybddnodeite( BddSystem, BddIf, BddThen, BddElse )
|
||||||
|
bddnode \(**BddSystem;
|
||||||
|
bddnode \(**BddIf;
|
||||||
|
bddnode \(**BddThen;
|
||||||
|
bddnode \(**BddElse;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddIf\fP
|
||||||
|
The IF \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddThen\fP
|
||||||
|
The THEN \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddElse\fP
|
||||||
|
The ELSE \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBapplybddnodeite\fP computes the following logical function
|
||||||
|
(\fIBddIf\fP AND \fIBddThen\fP) OR ((NOT \fIBddIf\fP) AND \fIBddElse\fP)
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBapplybddnodeite\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i2", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnodeite( (bddsystem \(**)0,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i1" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i2" ) );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays ((i0 and i1) or ((not i0) and i2) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
.\" $Id: applybddnodelist.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)applybddnodelist.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH APPLYBDDNODELIST 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
applybddnodelist \- applies an opertor to a \fBbdd\fP nodes list.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**applybddnodelist( BddSystem, Oper, BddList )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
long Oper;
|
||||||
|
chain_list \(**BddList;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIOper\fP
|
||||||
|
The operator.
|
||||||
|
.TP
|
||||||
|
\fIBddList\fP
|
||||||
|
The \fBbdd\fP nodes list.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBapplybddnodelist\fP applies the boolean operator \fIOper\fP to the
|
||||||
|
\fBbdd\fP nodes list \fIBddList\fP in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBapplybddnodelist\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad operator xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIOper\fP parameter must be a valid binary operator.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad list !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddList\fP parameter must be a valid list.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**BddList;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddList = (chain_list \(**)0;
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i0", 0, BDD_IN_MODE_FIRST ) );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i2", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnodelist( (bddsystem \(**)0, ABL_AND, BddList );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 and i1 and i2) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
.\" $Id: applybddnodenot.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)applybddnodenot.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH APPLYBDDNODENOT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
applybddnodenot \- complements a \fBbdd\fP.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**applybddnodenot( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to complement.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBapplybddnodenot\fP complements \fIBddNode\fP in the \fBbdd\fP
|
||||||
|
system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBapplybddnodenot\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnode( (bddsystem \(**)0,
|
||||||
|
ABL_AND,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i1" ) );
|
||||||
|
BddNode = applybddnodenot( (bddsystem \(**)0, decbddrefext( BddNode ) );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 nand i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
.\" $Id: applybddnodeterm.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)applybddnodeterm.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH APPLYBDDNODETERM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
applybddnodeterm \- applies an operator on two \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**applybddnodeterm( BddSystem, Oper, Index, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
long Oper;
|
||||||
|
bddindex Index;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIOper\fP
|
||||||
|
The binary operator.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The index of the terminal \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBapplybddnodeterm\fP computes the boolean function \fIBddNode\fP
|
||||||
|
\fIOper\fP and the terminal node corresponding to \fIIndex\fP
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP. The \fIIndex\fP parameter
|
||||||
|
can take only the two following values BDD_INDEX_ONE and BDD_INDEX_ZERO.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBapplybddnodeterm\fP returns a pointer to the resulting \fBbdd\fP node
|
||||||
|
with its number of external reference incremented.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad operator xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIOper\fP parameter must be a valid binary operator.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnodeterm( (bddsystem \(**)0,
|
||||||
|
ABL_XOR, BDD_INDEX_ONE,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ) );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
.\" $Id: clearbddsystemref.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)clearbddsystemref.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CLEARBDDSYSTEMREF 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
clearbddsystemref \- clears the references for all \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void clearbddsystemref( BddSystem )
|
||||||
|
bddsystem \(*BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBclearbddsystemref\fP clears the internal and external references
|
||||||
|
of all the \fBbdd\fP nodes in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBclearbddsystemref\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
clearbddsystemref( (bddsystem \(**)0 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR clearbddsystemrefint(3),
|
||||||
|
.BR clearbddsystemrefext(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
.\" $Id: clearbddsystemrefext.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)clearbddsystemrefext.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CLEARBDDSYSTEMREFEXT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
clearbddsystemrefext \- clears the external references for all \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void clearbddsystemrefext( BddSystem )
|
||||||
|
bddsystem \(*BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBclearbddsystemrefext\fP clears the external references
|
||||||
|
of all the \fBbdd\fP nodes in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBclearbddsystemrefext\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
clearbddsystemrefext( (bddsystem \(**)0 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR clearbddsystemref(3),
|
||||||
|
.BR clearbddsystemrefint(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
.\" $Id: clearbddsystemrefint.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)clearbddsystemrefint.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CLEARBDDSYSTEMREFINT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
clearbddsystemrefint \- clears the internal references for all \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void clearbddsystemrefint( BddSystem )
|
||||||
|
bddsystem \(*BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBclearbddsystemrefint\fP clears the internal references
|
||||||
|
of all the \fBbdd\fP nodes in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBclearbddsystemrefint\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
clearbddsystemrefint( (bddsystem \(**)0 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR clearbddsystemref(3),
|
||||||
|
.BR clearbddsystemrefext(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
.\" $Id: cofactorbddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)cofactorbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH COFACTORBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
cofactorbddnode \- computes the generalized cofactor.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**cofactorbddnode( BddSystem, BddNode1, BddNode2 )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode1\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode2\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBcofactorbddnode\fP computes the generalized cofactor of
|
||||||
|
\fIBddNode1\fP by \fIBddNode2\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBcofactorbddnode\fP returns the resulting \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode2\fP parameter must be different to the zero \fBbdd\fP node.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode2 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddNode = cofactorbddnode( (bddsystem \(**)0, BddNode1, BddNode2 );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays '1' */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
.\" $Id: composebddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)composebddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH COMPOSEBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
composebddnode \- substitutes a variable by a \fBbdd\fP in another \fBbdd\fP.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**composebddnode( BddSystem, BddNode, Variable, BddSubst )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable to find.
|
||||||
|
.TP
|
||||||
|
\fIBddSubst\fP
|
||||||
|
The \fBbdd\fP to substitute with.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBcomposebddnode\fP substitutes all the occurency of the variable \fIVariable\fP
|
||||||
|
in the \fBbdd\fP node \fIBddNode\fP by the \fBbdd\fP node \fIBddSubst\fP, in the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBcomposebddnode\fP returns the resulting \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
BddNode = composebddnode( (bddsystem \(**)0, BddNode, Variable, BddSubst );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i1 and (i2 or i3)) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
.\" $Id: convertbddcircuitabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddcircuitabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDCIRCUITABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddcircuitabl \- converts a \fBbdd\fP node to an \fBabl\fP expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list \(**convertbddcircuitabl( BddCircuit, BddNode )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddcircuitabl\fP converts the \fBbdd\fP node
|
||||||
|
to an \fBabl\fP expression. The \fIBddCircuit\fP is used to translate
|
||||||
|
the variable nodes into atomic expressions.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddcircuitabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i0 and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1),
|
||||||
|
.BR addbddcircuitabl(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
.\" $Id: convertbddcircuitsumabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddcircuitsumabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDCIRCUITSUMABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddcircuitsumabl \- converts a \fBbdd\fP node to an \fBabl\fP expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list \(**convertbddcircuitsumabl( BddCircuit, BddNode )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddcircuitsumabl\fP converts the \fBbdd\fP node
|
||||||
|
to a non optimal \fBabl\fP expression. The \fIBddCircuit\fP is used to translate
|
||||||
|
the variable nodes into atomic expressions.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddcircuitsumabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitsumabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = convertbddcircuitsumabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i0 and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1),
|
||||||
|
.BR addbddcircuitabl(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
.\" $Id: convertbddindexabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddindexabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDINDEXABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddindexabl \- converts a \fBbdd\fP index to an \fBabl\fP expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list *convertbddnodeabl( BddSystem, NameArray, IndexArray, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
char \(**\(**NameArray;
|
||||||
|
bddindex \(**IndexArray;
|
||||||
|
bddindex Index;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fINameArray\fP
|
||||||
|
The array of names.
|
||||||
|
.TP
|
||||||
|
\fIIndexArray\fP
|
||||||
|
The array of indexes.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddindexabl\fP converts the \fBbdd\fP index \fIIndex\fP
|
||||||
|
to an \fBabl\fP expression in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fINameArray\fP, and \fIIndexArray\fP parameters are used
|
||||||
|
to translate the variable nodes into atomic expressions.
|
||||||
|
The array \fINameArray\fP is list of names.
|
||||||
|
The array \fIIndexArray\fP does the correspondence between a \fBbdd\fP index
|
||||||
|
and a slot in the \fINameArray\fP. If the \fIIndexArray\fP parameter
|
||||||
|
is a null pointer, then the name of the \fBbdd\fP index BDD_INDEX_MIN is assumed
|
||||||
|
to be the first slot of the \fINameArray\fP, and so on.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddindexabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
char \(**NameArray[ 1 ];
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvarlast( BddSystem );
|
||||||
|
NameArray[ 0 ] = namealloc( "i0" );
|
||||||
|
Expr = convertbddindexabl( BddSystem, NameArray, (bddindex \(**)0, BddNode->INDEX );
|
||||||
|
/* displays i0 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
.\" $Id: convertbddmuxabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddmuxabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDMUXABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddmuxabl \- converts two \fBbdd\fP nodes to an \fBabl\fP multiplexor expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list *convertbddmuxabl( BddSystem, NameArray, IndexArray, Equation, BddHigh, BddLow )
|
||||||
|
bddsystem \(*BddSystem;
|
||||||
|
char \(*\(*NameArray;
|
||||||
|
bddindex \(*IndexArray;
|
||||||
|
chain_list \(*Equation;
|
||||||
|
bddnode \(*BddHigh;
|
||||||
|
bddnode \(*BddLow;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fINameArray\fP
|
||||||
|
The array of names.
|
||||||
|
.TP
|
||||||
|
\fIIndexArray\fP
|
||||||
|
The array of indexes.
|
||||||
|
.TP
|
||||||
|
\fIEquation\fP
|
||||||
|
The multiplexor command.
|
||||||
|
.TP
|
||||||
|
\fIBddHigh\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddLow\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddmuxabl\fP creates the following \fBabl\fP expression
|
||||||
|
( \fIBddHigh\fP AND \fIEquation\fP ) OR ( \fIBddLow\fP AND (NOT \fIEquation\fP ) )
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fINameArray\fP, and \fIIndexArray\fP parameters are used
|
||||||
|
to translate the variable nodes into atomic expressions.
|
||||||
|
The array \fINameArray\fP is list of names.
|
||||||
|
The array \fIIndexArray\fP does the correspondence between a \fBbdd\fP node
|
||||||
|
index and a slot in the \fINameArray\fP. If the \fIIndexArray\fP parameter
|
||||||
|
is a null pointer, then the name of the \fBbdd\fP index BDD_INDEX_MIN is assumed
|
||||||
|
to be the first slot of the \fINameArray\fP, and so on.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddmuxabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
char \(**NameArray[ 2 ];
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode1 = addbddvarlast( BddSystem );
|
||||||
|
BddNode2 = addbddvarlast( BddSystem );
|
||||||
|
NameArray[ 0 ] = namealloc( "i0" );
|
||||||
|
NameArray[ 1 ] = namealloc( "i1" );
|
||||||
|
Expr = convertbddmuxabl( BddSystem, NameArray, (bddindex \(**)0,
|
||||||
|
createablatom( "C" ), BddNode1, BddNode2 );
|
||||||
|
/* displays (i0 and C) or (i1 and (not C)) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
.\" $Id: convertbddnodeabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddnodeabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDNODEABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddnodeabl \- converts a \fBbdd\fP node to an \fBabl\fP expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list *convertbddnodeabl( BddSystem, NameArray, IndexArray, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
char \(**\(**NameArray;
|
||||||
|
bddindex \(**IndexArray;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fINameArray\fP
|
||||||
|
The array of names.
|
||||||
|
.TP
|
||||||
|
\fIIndexArray\fP
|
||||||
|
The array of indexes.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddnodeabl\fP converts the \fBbdd\fP node \fIBddNode\fP
|
||||||
|
to an \fBabl\fP expression in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fINameArray\fP, and \fIIndexArray\fP parameters are used
|
||||||
|
to translate the variable nodes into atomic expressions.
|
||||||
|
The array \fINameArray\fP is list of names.
|
||||||
|
The array \fIIndexArray\fP does the correspondence between a \fBbdd\fP node
|
||||||
|
index and a slot in the \fINameArray\fP. If the \fIIndexArray\fP parameter
|
||||||
|
is a null pointer, then the name of the \fBbdd\fP index BDD_INDEX_MIN is assumed
|
||||||
|
to be the first slot of the \fINameArray\fP, and so on.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddnodeabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
char \(**NameArray[ 1 ];
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvarlast( BddSystem );
|
||||||
|
NameArray[ 0 ] = namealloc( "i0" );
|
||||||
|
Expr = convertbddnodeabl( BddSystem, NameArray, (bddindex \(**)0, BddNode );
|
||||||
|
/* displays i0 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
.\" $Id: convertbddnodesumabl.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)convertbddnodesumabl.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CONVERTBDDNODESUMABL 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
convertbddnodesumabl \- converts a \fBbdd\fP node to an \fBabl\fP expression.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
chain_list *convertbddnodesumabl( BddSystem, NameArray, IndexArray, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
char \(**\(**NameArray;
|
||||||
|
bddindex \(**IndexArray;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fINameArray\fP
|
||||||
|
The array of names.
|
||||||
|
.TP
|
||||||
|
\fIIndexArray\fP
|
||||||
|
The array of indexes.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBconvertbddnodesumabl\fP converts the \fBbdd\fP node
|
||||||
|
to a non optimal \fBabl\fP expression in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fINameArray\fP, and \fIIndexArray\fP parameters are used
|
||||||
|
to translate the variable nodes into atomic expressions.
|
||||||
|
The array \fINameArray\fP is list of names.
|
||||||
|
The array \fIIndexArray\fP does the correspondence between a \fBbdd\fP node
|
||||||
|
index and a slot in the \fINameArray\fP. If the \fIIndexArray\fP parameter
|
||||||
|
is a null pointer, then the name of the \fBbdd\fP index BDD_INDEX_MIN is assumed
|
||||||
|
to be the first slot of the \fINameArray\fP, and so on.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBconvertbddnodesumabl\fP returns a pointer to the \fBabl\fP expression translated.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
char \(**NameArray[ 1 ];
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvarlast( BddSystem );
|
||||||
|
NameArray[ 0 ] = namealloc( "i0" );
|
||||||
|
Expr = convertbddnodesumabl( BddSystem, NameArray, (bddindex \(**)0, BddNode );
|
||||||
|
/* displays i0 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR abl (1).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: createbddcircuit.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)createbddcircuit.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CREATEBDDCIRCUIT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
createbddcircuit \- creates a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddcircuit \(**createbddcircuit( Name, NumberIn, NumberOut, BddSystem )
|
||||||
|
char \(**Name;
|
||||||
|
long NumberIn;
|
||||||
|
long NumberOut;
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIName\fP
|
||||||
|
Name of the \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fINumberIn\fP
|
||||||
|
Number of inputs.
|
||||||
|
.TP
|
||||||
|
\fINumberOut\fP
|
||||||
|
Number of outputs.
|
||||||
|
.TP
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system to work on.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBcreatebddcircuit\fP creates a \fBbdd\fP circuit with the name \fIName\fP,
|
||||||
|
with \fINumberIn\fP inputs, and \fINumberOut\fP outputs.
|
||||||
|
This \fBbdd\fP circuit will use the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBcreatebddcircuit\fP returns a pointer to the \fBbdd\fP circuit created.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR resetbddcircuit(3),
|
||||||
|
.BR destroybddcircuit(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
.\" $Id: createbddsystem.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)createbddsystem.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH CREATEBDDSYSTEM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
createbddsystem \- creates a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**createbddsystem( ModelVar, ModelOper, MaxVar, MaxNode )
|
||||||
|
long ModelVar;
|
||||||
|
long ModelOper;
|
||||||
|
long MaxVar;
|
||||||
|
long MaxNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIModelVar\fP
|
||||||
|
Initial size of the hash table uses for a variable.
|
||||||
|
.TP
|
||||||
|
\fIModelOper\fP
|
||||||
|
Size of the hash table uses as a cache.
|
||||||
|
.TP
|
||||||
|
\fIMaxVar\fP
|
||||||
|
Initial maximum number of variables.
|
||||||
|
.TP
|
||||||
|
\fIMaxNode\fP
|
||||||
|
Maximum nodes allowed.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBcreatebddsystem\fP creates and initializes a \fBbdd\fP system.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBcreatebddsystem\fP returns a pointer to the \fBbdd\fP system created.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"system model variable xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIModelVar\fP parameter must be a positive value.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"system model oper xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIModelOper\fP parameter must be a positive value.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIMaxVar\fP parameter must be less than \fIBDD_MAX_VAR\fP.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
.BR resetbddsytem(3),
|
||||||
|
.BR destroybddsytem(3).
|
||||||
|
.
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
.\" $Id: decbddrefext.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)decbddrefext.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DECBDDREFEXT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
decbddrefext \- decrements the external reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**decbddrefext( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdecbddrefext\fP decrements the number of external reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdecbddrefext\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"negative reference, index xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode\fP must have a postive number of external reference.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
decbddrefext( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 0 REF_INT: 0 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
.\" $Id: decbddrefint.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)decbddrefint.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DECBDDREFINT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
decbddrefint \- decrements the internal reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**decbddrefint( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdecbddrefint\fP decrements the number of internal reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdecbddrefint\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"negative reference, index xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode\fP must have a postive number of internal reference.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
incbddrefint( BddNode );
|
||||||
|
decbddrefint( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 1 REF_INT: 0 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
.\" $Id: delbddassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)delbddassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DELBDDASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
delbddassoc \- deletes a variable association.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
int delbddassoc( BddSystem, BddAssoc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association to delete.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdelbddassoc\fP deletes the variable association \fIBddAssoc\fP in the \fBbdd\fP system
|
||||||
|
\fIBddSystem\fP. If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
For all the \fBbdd\fP nodes of the variable association
|
||||||
|
\fIBddAssoc\fP, the number of external reference is decremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdelbddassoc\fP returns 1 if the variable association is found, 0 otherwise.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = delbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
delbddassoc( (bddsystem \(**)0, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
.\" $Id: delbddcircuitout.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)delbddcircuitout.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DELBDDCIRCUITOUT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
delbddcircuitout \- deletes an output in a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
int delbddcircuitout( BddCircuit, OutputName )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char \(**OutputName;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIOutputName\fP
|
||||||
|
The name of the output to delete.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdelbddcircuitout\fP deletes the output \fIOutputName\fP
|
||||||
|
in the \fBbdd\fP circuit \fIBddCircuit\fP. If a null pointer is given,
|
||||||
|
the default \fBbdd\fP circuit is used. If the output \fIOutputName\fP exists,
|
||||||
|
the number of external reference of the output node
|
||||||
|
is decremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdelbddcircuitout\fP returns 1 if the output \fIOutputName\fP exist, 0 otherwise.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
addbddcircuitout( (bddcircuit \(**)0, "Out0", BddNode );
|
||||||
|
...
|
||||||
|
delbddcircuitout( (bddcircuit \(**)0, "Out0" );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
.BR searchbddcircuitout(3),
|
||||||
|
.BR addbddcircuitout(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: delbddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)delbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DELBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
delbddnode \- deletes an unused \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void delbddnode( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdelbddnode\fP tries to delete the \fBbdd\fP node \fIBddNode\fP and its
|
||||||
|
children, if they have not external reference, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used. The use of this
|
||||||
|
function is not recommended because, it takes time.
|
||||||
|
It is better to call the \fIdecbddrefext\fP function, and do a garbage collection
|
||||||
|
with the \fIgarbagebddsystem\fP function.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdelbddnode\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
delbddnode( (bddsystem \(**)0, decbddrefext( BddNode ) );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
.\" $Id: delbddnodeassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)delbddnodeassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DELBDDNODEASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
delbddnodeassoc \- deletes a \fBbdd\fP node in a variable association.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
int delbddnodeassoc( BddSystem, BddAssoc, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdelbddnodeassoc\fP deletes the \fBbdd\fP node associated to the
|
||||||
|
variable number \fIVariable\fP, in the variable association \fIBddAssoc\fP,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The number of external reference of the associated \fBbdd\fP node is incremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdelbddnodeassoc\fP returns 1 if the variable is found, 0 otherwise.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
delbddnodeassoc( (bddsystem \(**)0, Assoc, Variable );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
.\" $Id: delbddnodelist.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)delbddnodelist.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DELBDDNODELIST 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
delbddnodelist \- deletes a list of \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void delbddnodelist( BddSystem, HeadList )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
chain_list \(**HeadList;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIHeadList\fP
|
||||||
|
The head of the \fIchain_list\fP.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdelbddnodelist\fP deletes all the \fBbdd\fP nodes of the
|
||||||
|
list \fIHeadList\fP in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
All the nodes have their external references decremented.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdelbddnodelist\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**BddList;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddList = (chain_list \(**)0;
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i0", 0, BDD_IN_MODE_FIRST ) );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddList = addbddnodelist( (bddsystem \(**)0, BddList,
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0,
|
||||||
|
"i2", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnodelist( (bddsystem \(**)0, ABL_AND, BddList );
|
||||||
|
delbddnodelist( (bddsystem \(**)0, BddList );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 and i1 and i2) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
.\" $Id: destroybddassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)destroybddassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DESTROYBDDASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
destroybddassoc \- frees all the variable associations.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddassoc \(**destroybddassoc( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdestroybddassoc\fP frees all the variable associations in the \fBbdd\fP system
|
||||||
|
\fIBddSystem\fP. If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdestroybddassoc\fP returns nothing.
|
||||||
|
.SH ERRORS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
delbddassoc( (bddsystem \(**)0, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
.\" $Id: destroybddcircuit.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)destroybddcircuit.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DESTROYBDDCIRCUIT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
destroybddcircuit \- destroys a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void destroybddcircuit( BddCircuit )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit to destroy.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdestroybddcircuit\fP destroys the \fBbdd\fP circuit \fIBddCircuit\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdestroybddcircuit\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
.\" $Id: destroybddsystem.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)destroybddsystem.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH DESTROYBDDSYSTEM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
destroybddsystem \- destroys a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void destroybddsystem( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system to destroy.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBdestroybddsystem\fP destroys the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBdestroybddsystem\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
.\" $Id: existbddnodeassocoff.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)existbddnodeassocoff.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH EXISTBDDNODEASSOCOFF 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
existbddnodeassocoff \- computes an existantial quantification.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**existbddnodeassocoff( BddSystem, BddNode, BddAssoc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to treat.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBexistbddnodeassocoff\fP suppress in the \fBbdd\fP node \fIBddNode\fP complemented,
|
||||||
|
all the variables associated with something in the variable association
|
||||||
|
\fIBddAssoc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBexistbddnodeassocoff\fP returns the computed \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad variable association xxx, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddAssoc\fP parameter must a valid variable association.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_NAND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSystem->ONE );
|
||||||
|
BddNode = existbddnodeassocoff( (bddsystem \(**)0, BddNode, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (not i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
.\" $Id: existbddnodeassocon.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)existbddnodeassocon.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH EXISTBDDNODEASSOCON 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
existbddnodeassocon \- computes an existantial quantification.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**existbddnodeassocon( BddSystem, BddNode, BddAssoc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to treat.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBexistbddnodeassocon\fP suppress in \fIBddNode\fP,
|
||||||
|
all the variables associated with something in the variable association
|
||||||
|
\fIBddAssoc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBexistbddnodeassocon\fP returns the computed \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad variable association xxx, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddAssoc\fP parameter must a valid variable association.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSystem->ONE );
|
||||||
|
BddNode = existbddnodeassocon( (bddsystem \(**)0, BddNode, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays i1 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
.\" $Id: garbagebddsystem.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)garbagebddsystem.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GARBAGEBDDSYSTEM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
garbagebddsystem \- Forces a \fBbdd\fP garbage collection.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void garbagebddsystem( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgarbagebddsystem\fP frees all the unused \fBbdd\fP nodes in the
|
||||||
|
system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
A \fBbdd\fP node is unused if its number of reference is null.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgarbagebddsystem\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnode( (bddsystem \(**)0,
|
||||||
|
ABL_AND,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i1" ) );
|
||||||
|
decbddrefext( BddNode );
|
||||||
|
garbagebddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
.\" $Id: getbddnodenum.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddnodenum.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDNODENUM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddnodenum \- gets the number of nodes in a \fBbdd\fP.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
long getbddnodenum( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddnodenum\fP computes the number of different nodes in \fIBddNode\fP,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddnodenum\fP returns the number of the different nodes reached.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
printf( "Number nodes: %ld\n",
|
||||||
|
getbddnodenum( (bddsystem \(**)0, BddNode ) );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
.\" $Id: getbddnodesize.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddnodesize.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDNODESIZE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddnodesize \- gets the number of nodes in a \fBbdd\fP.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
long getbddnodesize( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddnodesize\fP computes the total number of nodes in \fIBddNode\fP,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddnodesize\fP returns the number of nodes reached.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
printf( "Number nodes: %ld\n",
|
||||||
|
getbddnodesize( (bddsystem \(**)0, BddNode ) );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
.\" $Id: getbddnodesupport.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddnodesupport.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDNODESUPPORT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddnodesupport \- gives the variable support of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void \(**getbddnodesupport( BddSystem, BddNode, Mode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
int Mode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIMode\fP
|
||||||
|
The type of support.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddnodesupport\fP gives the support of the \fBbdd\fP node \fIBddNode\fP
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
If \fIMode\fP is BDD_SUPPORT_CHAIN the support is returned using
|
||||||
|
\fIchain_list\fP else it is returned using \fIptype_list\fP.
|
||||||
|
The support must be freed using the \fIfreechain\fP or \fIfreeptype\fP functions.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetablexprsupport\fP returns a pointer to a \fIchain_list\fP or
|
||||||
|
a \fIptype_list\fP.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
chain_list \(**Support;
|
||||||
|
chain_list \(**ScanSupport;
|
||||||
|
bddindex Index;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Support = getablbddnodesupport( (bddsystem \(**0), BddNode, BDD_SUPPORT_CHAIN );
|
||||||
|
for ( ScanSupport = Support;
|
||||||
|
ScanSupport != (chain_list \(**)0;
|
||||||
|
ScanSupport = ScanSupport->NEXT )
|
||||||
|
{
|
||||||
|
Index = (bddnode \(**)ScanSupport->INDEX;
|
||||||
|
printf( "%s ", BddCircuit->NAME_IN[ Index - BDD_INDEX_MIN ] );
|
||||||
|
}
|
||||||
|
freechain( Support );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: getbddvarbyindex.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddvarbyindex.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDVARBYINDEX 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddvarbyindex \- converts \fBbdd\fP index to a variable number.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddindex getbddvarbyindex( BddSystem, Index )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddvarbyindex\fP converts the \fBbdd\fP index \fIIndex
|
||||||
|
to a variable number, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The function uses simply the translation table \fIBddSystem\fP->INDEX_TO_VAR.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddvarbyindex\fP returns the variable number of the \fBbdd\fP index \fIIndex\fP.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIIndex parameter must be a valid index.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
/* displays 0 */
|
||||||
|
printf( "%d", getbddvarbyindex( (bddsystem \(**)0, BddNode->INDEX ) );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
.\" $Id: getbddvarindex.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddvarindex.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDVARINDEX 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddvarindex \- converts a variable number in a \fBbdd\fP index.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddindex getbddvarindex( BddSystem, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number to convert.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddvarindex\fP converts the variable number \fIVariable\fP
|
||||||
|
to a \fBbdd\fP index, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The function uses simply the translation table \fIBddSystem\fP->VAR_TO_INDEX.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddvarindex\fP returns the \fBbdd\fP index of \fIVariable\fP.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode = addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
/* displays 2 */
|
||||||
|
printf( "%d", getbddvarindex( (bddsystem \(**)0, 0 ) );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: getbddvarnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddvarnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDVARNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddvarnode \- gives the \fBbdd\fP node of a variable.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**getbddvarnode( BddSystem, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddvarnode\fP gives the \fBbdd\fP node of the variable number
|
||||||
|
\fIVariable\fP, in the \fBbdd\fP system BddSystem.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddvarnode\fP returns a pointer to the variable \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
BddNode = getbddvarnode( (bddsystem \(**)0, 0 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.\" $Id: getbddvarnodebyindex.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)getbddvarnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH GETBDDVARNODEBYINDEX 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
getbddvarnode \- gives the \fBbdd\fP node of a variable.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**getbddvarnodebyindex( BddSystem, Index )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIIndex\fP
|
||||||
|
The \fBbdd\fP index.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBgetbddvarnode\fP gives the \fBbdd\fP node of the \fBbdd\fP index
|
||||||
|
\fIIndex\fP, in the \fBbdd\fP system BddSystem.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The function uses simply the table \fIBddSystem\fP->VAR_NODE.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBgetbddvarnode\fP returns a pointer to the variable \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIIndex\fP parameter must be a valid index.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
BddNode = getbddvarnodebyindex( (bddsystem \(**)0, 2 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
.\" $Id: implybddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)implybddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH IMPLYBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
implybddnode \- computes a \fBbdd\fP that implies a conjonction of two \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**implybddnode( BddSystem, BddNode1, BddNode2 )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode1\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode2\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBimplybddnode\fP tests if the intersection of \fIBddNode1\fP and not \fIBddNode2\fP,
|
||||||
|
exists, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBimplybddnode\fP returns the \fBbdd\fP node zero if there is no
|
||||||
|
intersection, and a computed \fBbdd\fP node otherwise.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
bddnode \(**BddImply;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddImply = implybddnode( (bddsystem \(**)0, BddNode1, BddNode2 );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i0 and (not i1)) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
.\" $Id: incbddrefext.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)incbddrefext.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH INCBDDREFEXT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
incbddrefext \- increments the external reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**incbddrefext( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBincbddrefext\fP increments the number of external reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBincbddrefext\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
incbddrefext( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 2 REF_INT: 0 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
.\" $Id: incbddrefint.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)incbddrefint.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH INCBDDREFINT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
incbddrefint \- increments the internal reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**incbddrefint( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBincbddrefint\fP increments the number of internal reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBincbddrefint\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
incbddrefint( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 1 REF_INT: 1 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
.\" $Id: intersectbddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)intersectbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH INTERSECTBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
intersectbddnode \- tests for an intersection between two \fBbdd\fP nodes.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**intersectbddnode( BddSystem, BddNode1, BddNode2 )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode1\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode2\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBintersectbddnode\fP tests if the intersection of \fIBddNode1\fP and \fIBddNode2\fP
|
||||||
|
exists, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBintersectbddnode\fP returns the \fBbdd\fP node zero if there is no
|
||||||
|
intersection, and a computed \fBbdd\fP node otherwise.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
bddnode \(**BddImply;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddImply = intersectbddnode( (bddsystem \(**)0, BddNode1, BddNode2 );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays (i0 and i1)) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
.\" $Id: isbddvarinsupport.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)isbddvarinsupport.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH ISBDDVARINSUPPORT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
isbddvarinsupport \- tests if a variable appears in a \fBbdd\fP.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
int isbddvarinsupport( BddSystem, BddNode, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable number.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBisbddvarinsupport\fP tests if the variable number \fIVariable\fP
|
||||||
|
appears in the support of the \fBbdd\fP node \fIBddNode\fP, in the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBisbddvarinsupport\fP returns 1 if \fIVariable\fP appears, 0 otherwise.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(** 0), BddVariable->INDEX ) );
|
||||||
|
/* displays 1 */
|
||||||
|
printf( "%d", isbddvarinsupport( (bddsystem \(**)0, BddNode, Variable ) );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
.\" $Id: markbddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)markbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH MARKBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
markbddnode \- marks \fBbdd\fP node with a specified mask.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
long markbddnode( BddSystem, BddNode, Mark )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddmark Mark;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to mark.
|
||||||
|
.TP
|
||||||
|
\fIMark\fP
|
||||||
|
The bit mask.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBmarkbddnode\fP marks the \fBbdd\fP node \fIBddNode\fP
|
||||||
|
with the bit mask \fIMark\fP, in the \fBbdd\fP system BddSystem.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
This function does a OR with the field MARK of the \fBbdd\fP node \fIBddNode\fP,
|
||||||
|
and the bit mask \fIMark\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBmarkbddnode\fP returns the number of the differents marked nodes.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
printf( "Number nodes: %ld\n",
|
||||||
|
markbddnode( (bddsystem \(**)0, BddNode, 0x0001 ) );
|
||||||
|
unmarkbddnode( (bddsystem \(**)0, BddNode, 0x0001 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
.\" $Id: relprodbddnodeassoc.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)relprodbddnodeassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH RELPRODBDDNODEASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
relprodbddnodeassoc \- computes a relational product.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**relprodbddnodeassoc( BddSystem, BddNode1, BddNode2, BddAssoc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode1\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddNode2\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBrelprodbddnodeassoc\fP computes \fIBddNode1\fP AND \fIBddNode2\fP,
|
||||||
|
and suppress the variables associated with something in the variable association
|
||||||
|
\fIBddAssoc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBrelprodbddnodeassoc\fP returns the computed \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad variable association xxx, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddAssoc\fP parameter must a valid variable association.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode1 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode2 = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSystem->ONE );
|
||||||
|
BddNode = relprodbddnodeassoc( (bddsystem \(**)0, BddNode1, BddNode2, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays i1 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
.\" $Id: reorderbddsystemdynamic.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)reorderbddsystemdynamic.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH REORDERBDDSYSTEMDYNAMIC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
reorderbddsystemdynamic \- specifies the dynamic \fBbdd\fP reorder parameters.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void reorderbddsystemdynamic( BddSystem, ReorderFunc, ReorderLow, ReorderRatio )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
void (\(**ReorderFunc)();
|
||||||
|
long ReorderLow;
|
||||||
|
long ReorderRatio;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIReorderFunc\fP
|
||||||
|
The dynamic reorder method.
|
||||||
|
.TP
|
||||||
|
\fIReorderLow\fP
|
||||||
|
The minimum number of \fBbdd\fP nodes.
|
||||||
|
.TP
|
||||||
|
\fIReorderRatio\fP
|
||||||
|
The reorder ratio in percent.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBreorderbddsystemdynamic\fP specifies to parameters for the dynamic reorder
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
If the number of \fBbdd\fP nodes is greater than \fIReorderLow\fP, then
|
||||||
|
the dynamic reorder function \fIReorderFunc\fP is called. The new
|
||||||
|
reorder limit is computed as the product of the number of \fBbdd\fP nodes
|
||||||
|
and the \fIReorderRatio\fP value plus 100. If this limit is less than \fIReorderLow\fP
|
||||||
|
then the new limit is fixed to \fIReorderLow\fP. If the function \fIReorderFunc\fP is a null
|
||||||
|
pointer, then the dynamic reorder process is skipped.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBreorderbddsystemdynamic\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
reorderbddsystemdynamic( BddSystem, reorderbddsystemwindow, 1000, 50 );
|
||||||
|
...
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
.\" $Id: reorderbddsystemsimple.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
|
||||||
|
.\" @(#)reorderbddsystemsimple.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH REORDERBDDSYSTEMSIMPLE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
reorderbddsystemsimple \- reorders the \fBbdd\fP nodes of a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void reorderbddsystemsimple( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBreorderbddsystemsimple\fP reorders all the \fBbdd\fP nodes of the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP, in order to minimize the total
|
||||||
|
number of \fBbdd\fP nodes.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBreorderbddsystemsimple\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
reorderbddsystemsimple( BddSystem );
|
||||||
|
...
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
.\" $Id: reorderbddsystemtop.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)reorderbddsystemtop.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH REORDERBDDSYSTEMTOP 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
reorderbddsystemtop \- reorders the \fBbdd\fP nodes of a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void reorderbddsystemtop( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBreorderbddsystemtop\fP reorders all the \fBbdd\fP nodes of the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP, in order to minimize the total
|
||||||
|
number of \fBbdd\fP nodes.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBreorderbddsystemtop\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
reorderbddsystemtop( BddSystem );
|
||||||
|
...
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
.\" $Id: reorderbddsystemwindow.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)reorderbddsystemwindow.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH REORDERBDDSYSTEMWINDOW 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
reorderbddsystemwindow \- reorders the \fBbdd\fP nodes of a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void reorderbddsystemwindow( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBreorderbddsystemwindow\fP reorders all the \fBbdd\fP nodes of the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP, in order to minimize the total
|
||||||
|
number of \fBbdd\fP nodes.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBreorderbddsystemwindow\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
reorderbddsystemwindow( BddSystem );
|
||||||
|
...
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
.\" $Id: resetbddcircuit.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)resetbddcircuit.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH RESETBDDCIRCUIT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
resetbddcircuit \- resets a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void resetbddcircuit( BddCircuit )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit to reset.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBresetbddcircuit\fP resets the \fBbdd\fP circuit \fIBddCircuit\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBresetbddcircuit\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
resetbddcircuit( (bddcircuit \(**)0 );
|
||||||
|
...
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR createbddcircuit(3),
|
||||||
|
.BR destroybddcircuit(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
.\" $Id: resetbddsystem.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)resetbddsystem.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH RESETBDDSYSTEM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
resetbddsystem \- resets a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void resetbddsystem( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system to reset.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBresetbddsystem\fP resets the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBresetbddsystem\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
resetbddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
.BR createbddsytem(3),
|
||||||
|
.BR destroybddsytem(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
.\" $Id: restrictbddnode.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)restrictbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH RESTRICTBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
restrictbddnode \- substitutes a variable by a zero or one, in a \fBbdd\fP.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**restrictbddnode( BddSystem, BddNode, Variable, BddSubst )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable to find.
|
||||||
|
.TP
|
||||||
|
\fIBddSubst\fP
|
||||||
|
The \fBbdd\fP to substitute with.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBrestrictbddnode\fP substitutes all the occurency of the variable \fIVariable\fP
|
||||||
|
in the \fBbdd\fP node \fIBddNode\fP by the \fBbdd\fP node \fIBddSubst\fP, in the
|
||||||
|
\fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fIBddSubst\fP must be a the node \fIBddSystem\fP->ONE or \fIBddSystem\fP->ZERO.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBrestrictbddnode\fP returns the resulting \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddSubst\fP parameter must have its index less than BDD_INDEX_MIN.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddSubst = BddSystem->ONE;
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
BddNode = restrictbddnode( (bddsystem \(**)0, BddNode, Variable, BddSubst );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays '1' */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
.\" $Id: satisfybddnode.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)satisfybddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SATISFYBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
satisfybddnode \- finds a satisfying path for a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**satisfybddnode( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsatisfybddnode\fP finds a simple path throw the \fBbdd\fP \fIBddNode\fP
|
||||||
|
that reaches the constant \fBbdd\fP node one, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsatisfybddnode\fP returns a \fBbdd\fP node that satisfies \fIBddNode\fP.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"index xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode\fP parameter must be different from the \fBbdd\fP node zero.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddNode = satisfybddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays i0 */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
.\" $Id: searchbddcircuitin.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)searchbddcircuitin.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SEARCHBDDCIRCUITIN 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
searchbddcircuitin \- searchs an input in a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**searchbddcircuitin( BddCircuit, InputName )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char \(**InputName;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIInputName\fP
|
||||||
|
The name of the input to look for.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsearchbddcircuitin\fP searchs the input \fIInputName\fP in the \fBbdd\fP
|
||||||
|
circuit \fIBddCircuit\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsearchbddcircuitin\fP returns the node corresponding to the input \fIInputName\fP
|
||||||
|
or a null pointer if no such input is found.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin ( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
...
|
||||||
|
BddNode = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR addbddcircuitin(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
.\" $Id: searchbddcircuitout.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)searchbddcircuitout.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SEARCHBDDCIRCUITOUT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
searchbddcircuitout \- searchs an output in a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**searchbddcircuitout( BddCircuit, OutputName )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char \(**OutputName;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit.
|
||||||
|
.TP
|
||||||
|
\fIOutputName\fP
|
||||||
|
The name of the output to look for.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsearchbddcircuitout\fP searchs the output \fIOutputName\fP in the \fBbdd\fP
|
||||||
|
circuit \fIBddCircuit\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsearchbddcircuitout\fP returns the node corresponding to
|
||||||
|
the output \fIOutputName\fP or a null pointer if no such output is found.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
addbddcircuitout( (bddcircuit \(**)0, "Out0", BddNode );
|
||||||
|
...
|
||||||
|
BddNode = searchbddcircuitout( (bddcircuit \(**)0, "Out0" );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1),
|
||||||
|
.BR addbddcircuitout(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
.\" $Id: setbddrefext.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)setbddrefext.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SETBDDREFEXT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
setbddrefext \- increments the external reference,
|
||||||
|
and decrements the internal reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**setbddrefext( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsetbddrefext\fP increments the number of external reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP and decrements its number of
|
||||||
|
internal reference.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsetbddrefext\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"negative reference, index xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode\fP must have a postive number of internal reference.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
incbddrefint( BddNode );
|
||||||
|
setbddrefext( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 1 REF_INT: 0 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
.\" $Id: simpbddnodedcoff.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)simpbddnodedcoff.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SIMPBDDNODEDCOFF 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
simpbddnodedcoff \- simplifies a \fBbdd\fP with don't cares on its off-set part.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**simpbddnodedcoff( BddSystem, BddOff, BddDc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddOff;
|
||||||
|
bddnode \(**BddDc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddOff\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddDc\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsimpbddnodedcoff\fP simplifies the \fBbdd\fP node \fIBddOff\fP with
|
||||||
|
\fIBddDc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fBbdd\fP node \fIBddDc\fP must be included imperatively
|
||||||
|
in the off-set part of the \fBbdd\fP node \fIBddOff\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsimpbddnodedcoff\fP returns the simplified \fBbdd\fP node.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddOff;
|
||||||
|
bddnode \(**BddDc;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddOff = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_NOR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddDc = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddNode = simpbddnodedcoff( (bddsystem \(**)0, BddOff, BddDc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays '1' */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
.\" $Id: simpbddnodedcon.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)simpbddnodedcon.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SIMPBDDNODEDCON 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
simpbddnodedcon \- simplifies a \fBbdd\fP with don't cares on its on-set part.
|
||||||
|
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**simpbddnodedcon( BddSystem, BddOn, BddDc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddOn;
|
||||||
|
bddnode \(**BddDc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddOn\fP
|
||||||
|
The first \fBbdd\fP node.
|
||||||
|
.TP
|
||||||
|
\fIBddDc\fP
|
||||||
|
The second \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsimpbddnodedcon\fP simplifies the \fBbdd\fP node \fIBddOn\fP with
|
||||||
|
\fIBddDc\fP, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
The \fBbdd\fP node \fIBddDc\fP must be included imperatively
|
||||||
|
in the on-set part of the \fBbdd\fP node \fIBddOn\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsimpbddnodedcon\fP returns the simplified \fBbdd\fP node.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddOn;
|
||||||
|
bddnode \(**BddDc;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddOn = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_NOR,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddDc = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddNode = simpbddnodedcon( (bddsystem \(**)0, BddOn, BddDc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays '1' */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
.\" $Id: substbddnodeassoc.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)substbddnodeassoc.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SUBSTBDDNODEASSOC 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
substbddnodeassoc \- substitutes a set of variables with a set of \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**substbddnodeassoc( BddSystem, BddNode, BddAssoc )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddassoc \(**BddAssoc;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to treat.
|
||||||
|
.TP
|
||||||
|
\fIBddAssoc\fP
|
||||||
|
The variable association.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBsubstbddnodeassoc\fP substitutes in the \fBbdd\fP node \fIBddNode\fP
|
||||||
|
all the variables associated to something in the variable association
|
||||||
|
\fIBddAssoc\fP, with the corresponding \fBbdd\fP node,
|
||||||
|
in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBsubstbddnodeassoc\fP returns the computed \fBbdd\fP node.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP parameter must be less or equal to
|
||||||
|
the \fIBddSystem->NUMBER_VAR\fP field.
|
||||||
|
.RE
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"bad variable association xxx, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddAssoc\fP parameter must a valid variable association.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddnode \(**BddSubst;
|
||||||
|
bddnode \(**BddVariable;
|
||||||
|
bddassoc \(**Assoc;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
bddvar Variable;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
Expr = createablbinexpr( ABL_OR,
|
||||||
|
createablatom( "i2" ),
|
||||||
|
createablatom( "i3" ) );
|
||||||
|
BddSubst = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
|
||||||
|
Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
|
||||||
|
Assoc = addbddassoc( (bddsystem \(**)0 );
|
||||||
|
addbddnodeassoc( (bddsystem \(**)0, Assoc, Variable, BddSubst );
|
||||||
|
BddNode = substbddnodeassoc( (bddsystem \(**)0, BddSubst, Assoc );
|
||||||
|
Expr = convertbddcircuitabl( BddCircuit, BddNode );
|
||||||
|
/* displays ((i3 or i2) and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddassoc( (bddsystem \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
.\" $Id: swapbddvar.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)swapbddvar.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH SWAPBDDVAR 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
swapbddvar \- swaps two contiguous variables.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void swapbddvar( BddSystem, Variable )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddvar Variable;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIVariable\fP
|
||||||
|
The variable to swap.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBswapbddvar\fP swaps the variable number \fIVariable\fP with
|
||||||
|
the variable number \fIVariable\fP + 1, in the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
This function is usefull for the \fBbdd\fP nodes reordering.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBswapbddvar\fP returns nothing.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"variable xxx out of range, error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIVariable\fP and \fIVariable\fP + 1, must be valid variables number.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode1;
|
||||||
|
bddnode \(**BddNode2;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddNode1 = addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
BddNode2 = addbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
swapbddvar( (bddsystem \(**)0, 0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
.\" $Id: testbddcircuit.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)testbddcircuit.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH TESTBDDCIRCUIT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
testbddcircuit \- debugs a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
int testbddcircuit( BddCircuit )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit to debug.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBtestbddcircuit\fP calls a debugger of \fIBddCircuit\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
This function provides a multiple commands to debug all the
|
||||||
|
functions include in this \fBbdd\fP package.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBtestbddcircuit\fP returns 0 if the debugger is interrupt by user, and 1 otherwise.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
testbddcircuit( (bddcircuit \(**)0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
.\" $Id: unmarkbddnode.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)unmarkbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH UNMARKBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
unmarkbddnode \- unmarks \fBbdd\fP node with a specified mask.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
long unmarkbddnode( BddSystem, BddNode, Mark )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
bddunmark Mark;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to unmark.
|
||||||
|
.TP
|
||||||
|
\fIMark\fP
|
||||||
|
The bit mask.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBunmarkbddnode\fP unmarks the \fBbdd\fP node \fIBddNode\fP
|
||||||
|
with the bit mask \fIMark\fP, in the \fBbdd\fP system BddSystem.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
This function does a AND with the field MARK of the \fBbdd\fP node \fIBddNode\fP,
|
||||||
|
and the complemented bit mask \fIMark\fP.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBunmarkbddnode\fP returns the number of the differents unmarked nodes.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
Expr = createablbinexpr( ABL_AND,
|
||||||
|
createablatom( "i0" ),
|
||||||
|
createablatom( "i1" ) );
|
||||||
|
BddNode = addbddcircuitabl( BddCircuit, Expr );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
printf( "Number nodes: %ld\n",
|
||||||
|
markbddnode( (bddsystem \(**)0, BddNode, 0x0001 ) );
|
||||||
|
unmarkbddnode( (bddsystem \(**)0, BddNode, 0x0001 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
.\" $Id: unsetbddrefext.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)unsetbddrefext.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH UNSETBDDREFEXT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
unsetbddrefext \- increments the internal reference,
|
||||||
|
and decrements the external reference of a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddnode \(**unsetbddrefext( BddNode )
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBunsetbddrefext\fP increments the number of internal reference
|
||||||
|
of the \fBbdd\fP node \fIBddNode\fP and decrements its number of
|
||||||
|
external reference.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBunsetbddrefext\fP returns the \fIBddNode\fP pointer.
|
||||||
|
.SH ERRORS
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
"negative reference, index xxx error !"
|
||||||
|
.ft R
|
||||||
|
.RS
|
||||||
|
The \fIBddNode\fP must have a postive number of external reference.
|
||||||
|
.RE
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = addbddnode( (bddsystem \(**)0, BddNode->INDEX, BddNode->LOW, BddNode->HIGH );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
incbddrefext( BddNode );
|
||||||
|
unsetbddrefext( BddNode );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 0 REF_INT: 1 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
/* displays (not i0) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
.\" $Id: viewbddcircuit.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)viewbddcircuit.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH VIEWBDDCIRCUIT 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
viewbddcircuit \- displays a \fBbdd\fP circuit.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void viewbddcircuit( BddCircuit, ViewIndex )
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
char ViewName;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddCircuit\fP
|
||||||
|
The \fBbdd\fP circuit to display.
|
||||||
|
.TP
|
||||||
|
\fIViewName\fP
|
||||||
|
Flag to display more informations.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBviewbddcircuit\fP displays the \fBbdd\fP circuit \fIBddCircuit\fP.
|
||||||
|
If \fIViewName\fP is true, \fBviewbddcircuit\fP displays also the field \fINAME_IN\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP circuit is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBviewbddcircuit\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
...
|
||||||
|
viewbddcircuit( (bddcircuit \(**)0, 0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
.\" $Id: viewbddnode.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)viewbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH VIEWBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
viewbddnode \- displays a \fBbdd\fP node.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void viewbddnode( BddSystem, BddNode )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system.
|
||||||
|
.TP
|
||||||
|
\fIBddNode\fP
|
||||||
|
The \fBbdd\fP node to display.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBviewbddnode\fP displays the node \fIBddNode\fP, in the \fBbdd\fP system
|
||||||
|
\fIBddSystem\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBviewbddnode\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
bddcircuit \(**BddCircuit;
|
||||||
|
bddnode \(**BddNode;
|
||||||
|
chain_list \(**Expr;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i0", 0, BDD_IN_MODE_FIRST );
|
||||||
|
addbddcircuitin( (bddcircuit \(**)0, "i1", 0, BDD_IN_MODE_FIRST );
|
||||||
|
BddNode = applybddnode( (bddsystem \(**)0,
|
||||||
|
ABL_AND,
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i0" ),
|
||||||
|
searchbddcircuitin( (bddcircuit \(**)0, "i1" ) );
|
||||||
|
Expr = convertbddcircuitabl( (bddcircuit \(**)0, BddNode );
|
||||||
|
/* displays (i0 and i1) */
|
||||||
|
viewablexpr( Expr, ABL_VIEW_VHDL );
|
||||||
|
freeablexpr( Expr );
|
||||||
|
/* displays Node VAR: 0 INDEX: 2 MARK: 0 REF_EXT: 1 REF_INT: 0 */
|
||||||
|
viewbddnode( (bddsystem \(**)0, BddNode );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
destroybddcircuit( (bddcircuit \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
.\" $Id: viewbddsystem.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)viewbddsystem.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH VIEWBDDSYSTEM 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
viewbddsystem \- displays a \fBbdd\fP system.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void viewbddsystem( BddSystem, ViewIndex )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
char ViewIndex;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system to display.
|
||||||
|
.TP
|
||||||
|
\fIViewIndex\fP
|
||||||
|
Flag to display more informations.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBviewbddsystem\fP displays the \fBbdd\fP system \fIBddSystem\fP.
|
||||||
|
If \fIViewIndex\fP is true, \fBviewbddsystem\fP displays also
|
||||||
|
the two fields \fIINDEX_TO_VAR\fP and \fIVAR_TO_INDEX\fP.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBviewbddsystem\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
viewbddsystem( BddSystem, 0 );
|
||||||
|
destroybddsystem( (bddsystem \(**)0 );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
.\" $Id: viewbddsysteminfo.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
|
||||||
|
.\" @(#)viewbddsysteminfo.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
|
||||||
|
.TH VIEWBDDSYSTEMINFO 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
|
||||||
|
.SH NAME
|
||||||
|
viewbddsysteminfo \- displays statistical informations.
|
||||||
|
.so man1/alc_origin.1
|
||||||
|
.SH SYNOPSYS
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
void viewbddsysteminfo( BddSystem )
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH PARAMETERS
|
||||||
|
.TP 20
|
||||||
|
\fIBddSystem\fP
|
||||||
|
The \fBbdd\fP system to examines.
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBviewbddsysteminfo\fP provides statistical informations
|
||||||
|
on the \fBbdd\fP system \fIBddSystem\fP, for example the
|
||||||
|
perfomance of the different caches.
|
||||||
|
If a null pointer is given, the default \fBbdd\fP system is used.
|
||||||
|
.br
|
||||||
|
.SH RETURN VALUE
|
||||||
|
\fBviewbddsysteminfo\fP returns nothing.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.ta 3n 6n 9n 12n 15n 18n 21n
|
||||||
|
.nf
|
||||||
|
.if n \{\
|
||||||
|
.ft B \}
|
||||||
|
.if t \{\
|
||||||
|
.ft CR \}
|
||||||
|
#include "bdd101.h"
|
||||||
|
bddsystem \(**BddSystem;
|
||||||
|
BddSystem = createbddsystem( 100, 1000, 100, 50000 );
|
||||||
|
...
|
||||||
|
viewbddsysteminfo( BddSystem );
|
||||||
|
destroybddsystem( BddSystem );
|
||||||
|
.ft R
|
||||||
|
.fi
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bdd (1)
|
||||||
|
.BR viewbddsystem(3).
|
||||||
|
|
||||||
|
|
||||||
|
.so man1/alc_bug_report.1
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
CFLAGS = @CFLAGS@ \
|
||||||
|
-DALLIANCE_TOP=\"${ALLIANCE_TOP}\"
|
||||||
|
lib_LIBRARIES = libBdd.a
|
||||||
|
include_HEADERS = bdd.h
|
||||||
|
libAbl_a_SOURCES = \
|
||||||
|
bdd.h bddenv.h bddimply.h bddsimpdc.h \
|
||||||
|
bddalloc.c bdderror.c bddlog.c bddsubst.c \
|
||||||
|
bddalloc.h bdderror.h bddlog.h bddsubst.h \
|
||||||
|
bddapply.c bddexist.c bddmark.c bddsupport.c \
|
||||||
|
bddapply.h bddexist.h bddmark.h bddsupport.h \
|
||||||
|
bddassoc.c bddexplosion.c bddnode.c bddsweep.c \
|
||||||
|
bddassoc.h bddexplosion.h bddnode.h bddsweep.h \
|
||||||
|
bddblock.c bddflag.c bddoptimize.c bddsystem.c \
|
||||||
|
bddblock.h bddflag.h bddoptimize.h bddsystem.h \
|
||||||
|
bddcheck.c bddfraction.c bddreduce.c bddtest.c \
|
||||||
|
bddcheck.h bddfraction.h bddreduce.h bddtest.h \
|
||||||
|
bddcircuit.c bddfree.c bddref.c bddtransfert.c \
|
||||||
|
bddcircuit.h bddfree.h bddref.h bddtransfert.h \
|
||||||
|
bddcofactor.c bddgarbage.c bddrelprod.c bdduser.c \
|
||||||
|
bddcofactor.h bddgarbage.h bddrelprod.h bdduser.h \
|
||||||
|
bddcompose.c bddheath.c bddreorder.c bddvar.c \
|
||||||
|
bddcompose.h bddheath.h bddreorder.h bddvar.h \
|
||||||
|
bddconvert.c bddhnode.c bddresize.c bddvaraux.c \
|
||||||
|
bddconvert.h bddhnode.h bddresize.h bddvaraux.h \
|
||||||
|
bdddump.c bddhoper.c bddsatisfy.c bddvartree.c \
|
||||||
|
bdddump.h bddhoper.h bddsatisfy.h bddvartree.h \
|
||||||
|
bddenv.c bddimply.c bddsimpdc.c
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,398 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddalloc.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Bddhor : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddalloc.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddallocinfo BddAllocInfo =
|
||||||
|
|
||||||
|
{
|
||||||
|
0, /* CIRCUIT */
|
||||||
|
0, /* SYSTEM */
|
||||||
|
0, /* BLOCK */
|
||||||
|
0, /* NODE_BLOCK */
|
||||||
|
0, /* HASH_NODE_TABLE */
|
||||||
|
0, /* HASH_NODE */
|
||||||
|
0, /* HASH_OPER_TABLE */
|
||||||
|
0, /* HASH_OPER */
|
||||||
|
0, /* VAR */
|
||||||
|
0, /* VAR_NODE */
|
||||||
|
0, /* INDEX_NODE */
|
||||||
|
0, /* INDEX */
|
||||||
|
0, /* ASSOC */
|
||||||
|
0, /* ASSOC_NODE */
|
||||||
|
0, /* NAME_IN */
|
||||||
|
0, /* INDEX_IN */
|
||||||
|
0, /* HEATH */
|
||||||
|
0 /* USER_FUNC */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc User Func |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bdduserfunc *allocbdduserfunc()
|
||||||
|
{
|
||||||
|
BddAllocInfo.USER_FUNC++;
|
||||||
|
|
||||||
|
return( (bdduserfunc *)autallocheap( sizeof( bdduserfunc ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Heath |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddheath *allocbddheath()
|
||||||
|
{
|
||||||
|
BddAllocInfo.HEATH++;
|
||||||
|
|
||||||
|
return( (bddheath *)autallocheap( sizeof( bddheath ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Hash Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddhnode *allocbddhnode( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.HASH_NODE += Number;
|
||||||
|
|
||||||
|
return( (bddhnode *)autallocblock( sizeof( bddhnode ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Hash Oper |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddhoper *allocbddhoper( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.HASH_OPER += Number;
|
||||||
|
|
||||||
|
return( (bddhoper *)autallocblock( sizeof( bddhoper ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Hash Node Table |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddhnodetable *allocbddhnodetable()
|
||||||
|
{
|
||||||
|
BddAllocInfo.HASH_NODE_TABLE++;
|
||||||
|
|
||||||
|
return( (bddhnodetable *)autallocheap( sizeof( bddhnodetable ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Hash Oper Table |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddhopertable *allocbddhopertable()
|
||||||
|
{
|
||||||
|
BddAllocInfo.HASH_OPER_TABLE++;
|
||||||
|
|
||||||
|
return( (bddhopertable *)autallocblock( sizeof( bddhopertable ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddblock *allocbddblock()
|
||||||
|
{
|
||||||
|
BddAllocInfo.BLOCK++;
|
||||||
|
|
||||||
|
return( (bddblock *)autallocheap( sizeof( bddblock ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Node Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *allocbddnodeblock( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.NODE_BLOCK += Number;
|
||||||
|
|
||||||
|
return( (bddnode *)autallocblock( sizeof( bddnode ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Variable Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddvarnode *allocbddvarnode( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.VAR_NODE += Number;
|
||||||
|
|
||||||
|
return( (bddvarnode *)autallocblock( sizeof( bddvarnode ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Index Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddindexnode *allocbddindexnode( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.INDEX_NODE += Number;
|
||||||
|
|
||||||
|
return( (bddindexnode *)autallocblock( sizeof( bddindexnode ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Variable |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddvar *allocbddvar( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.VAR += Number;
|
||||||
|
|
||||||
|
return( (bddvar *)autallocblock( sizeof( bddvar ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Index |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddindex *allocbddindex( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.INDEX += Number;
|
||||||
|
|
||||||
|
return( (bddindex *)autallocblock( sizeof( bddindex ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Assoc |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddassoc *allocbddassoc()
|
||||||
|
{
|
||||||
|
BddAllocInfo.ASSOC++;
|
||||||
|
|
||||||
|
return( (bddassoc *)autallocheap( sizeof( bddassoc ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Assoc Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddassocnode *allocbddassocnode( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.ASSOC_NODE += Number;
|
||||||
|
|
||||||
|
return( (bddassocnode *)autallocblock( sizeof( bddassocnode ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Name Input |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnamein *allocbddnamein( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.NAME_IN += Number;
|
||||||
|
|
||||||
|
return( (bddnamein *)autallocblock( sizeof( bddnamein ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Index Input |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddindex *allocbddindexin( Number )
|
||||||
|
|
||||||
|
long Number;
|
||||||
|
{
|
||||||
|
BddAllocInfo.INDEX_IN += Number;
|
||||||
|
|
||||||
|
return( (bddindex *)autallocblock( sizeof( bddindex ) * Number ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc System |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddsystem *allocbddsystem()
|
||||||
|
{
|
||||||
|
BddAllocInfo.SYSTEM++;
|
||||||
|
|
||||||
|
return( (bddsystem *)autallocblock( sizeof( bddsystem ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Alloc Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddcircuit *allocbddcircuit()
|
||||||
|
{
|
||||||
|
BddAllocInfo.CIRCUIT++;
|
||||||
|
|
||||||
|
return( (bddcircuit *)autallocblock( sizeof( bddcircuit ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| View Bdd Alloc Info |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbddallocinfo()
|
||||||
|
{
|
||||||
|
fprintf( stdout, "--> BddAllocInfo\n" );
|
||||||
|
fprintf( stdout, " CIRCUIT : %ld bytes\n",
|
||||||
|
BddAllocInfo.CIRCUIT * sizeof( bddcircuit ) );
|
||||||
|
fprintf( stdout, " SYSTEM : %ld bytes\n",
|
||||||
|
BddAllocInfo.SYSTEM * sizeof( bddsystem ) );
|
||||||
|
fprintf( stdout, " BLOCK : %ld bytes\n",
|
||||||
|
BddAllocInfo.BLOCK * sizeof( bddblock ) );
|
||||||
|
fprintf( stdout, " NODE_BLOCK : %ld bytes\n",
|
||||||
|
BddAllocInfo.NODE_BLOCK * sizeof( bddnode ) );
|
||||||
|
fprintf( stdout, " HASH_NODE_TABLE : %ld bytes\n",
|
||||||
|
BddAllocInfo.HASH_NODE_TABLE * sizeof( bddhnodetable ) );
|
||||||
|
fprintf( stdout, " HASH_NODE : %ld bytes\n",
|
||||||
|
BddAllocInfo.HASH_NODE * sizeof( bddhnode ) );
|
||||||
|
fprintf( stdout, " HASH_OPER_TABLE : %ld bytes\n",
|
||||||
|
BddAllocInfo.HASH_OPER_TABLE * sizeof( bddhopertable ) );
|
||||||
|
fprintf( stdout, " HASH_OPER : %ld bytes\n",
|
||||||
|
BddAllocInfo.HASH_OPER * sizeof( bddhoper ) );
|
||||||
|
fprintf( stdout, " VAR : %ld bytes\n",
|
||||||
|
BddAllocInfo.VAR * sizeof( bddvar ) );
|
||||||
|
fprintf( stdout, " VAR_NODE : %ld bytes\n",
|
||||||
|
BddAllocInfo.VAR_NODE * sizeof( bddvarnode ) );
|
||||||
|
fprintf( stdout, " INDEX_NODE : %ld bytes\n",
|
||||||
|
BddAllocInfo.INDEX_NODE * sizeof( bddindexnode ) );
|
||||||
|
fprintf( stdout, " INDEX : %ld bytes\n",
|
||||||
|
BddAllocInfo.INDEX * sizeof( bddindex ) );
|
||||||
|
fprintf( stdout, " ASSOC : %ld bytes\n",
|
||||||
|
BddAllocInfo.ASSOC * sizeof( bddassoc ) );
|
||||||
|
fprintf( stdout, " ASSOC_NODE : %ld bytes\n",
|
||||||
|
BddAllocInfo.ASSOC_NODE * sizeof( bddassocnode ) );
|
||||||
|
fprintf( stdout, " NAME_IN : %ld bytes\n",
|
||||||
|
BddAllocInfo.NAME_IN * sizeof( bddnamein ) );
|
||||||
|
fprintf( stdout, " INDEX_IN : %ld bytes\n",
|
||||||
|
BddAllocInfo.INDEX_IN * sizeof( bddindex ) );
|
||||||
|
fprintf( stdout, " HEATH : %ld bytes\n",
|
||||||
|
BddAllocInfo.HEATH * sizeof( bddheath ) );
|
||||||
|
fprintf( stdout, " USER_FUNC : %ld bytes\n",
|
||||||
|
BddAllocInfo.USER_FUNC * sizeof( bdduserfunc ) );
|
||||||
|
fprintf( stdout, "<-- BddAllocInfo\n" );
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddalloc.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_ALLOC_H
|
||||||
|
# define BDD_ALLOC_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,499 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddapply.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddapply.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Apply Bdd Node Not |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_applybddnot( BddNode )
|
||||||
|
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
bddhoper *HashOper;
|
||||||
|
bddnode *BddNot;
|
||||||
|
|
||||||
|
if ( BddNode == BddLocalSystem->ONE )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddNode == BddLocalSystem->ZERO )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
HashOper = searchbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
ABL_NOT, BddNode, BddNode );
|
||||||
|
|
||||||
|
if ( HashOper != (bddhoper *)0 )
|
||||||
|
{
|
||||||
|
return( incbddrefext( HashOper->FATHER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNot = addbddnode( (bddsystem *)0, BddNode->INDEX,
|
||||||
|
decbddrefext( loc_applybddnot( BddNode->HIGH ) ),
|
||||||
|
decbddrefext( loc_applybddnot( BddNode->LOW ) ) );
|
||||||
|
|
||||||
|
addbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
ABL_NOT, BddNode, BddNode, BddNot );
|
||||||
|
|
||||||
|
return( BddNot );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply Bdd Not Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *applybddnodenot( BddSystem, BddNode )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddNode = loc_applybddnot( BddNode );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Apply Terminal Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_applybddterm( Oper, Index, BddNode )
|
||||||
|
|
||||||
|
long Oper;
|
||||||
|
bddindex Index;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
if ( Index == BDD_INDEX_ONE )
|
||||||
|
{
|
||||||
|
if ( Oper == ABL_OR )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_NAND ) ||
|
||||||
|
( Oper == ABL_XOR ) )
|
||||||
|
{
|
||||||
|
return( loc_applybddnot( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_AND ) ||
|
||||||
|
( Oper == ABL_NXOR ) )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Oper == ABL_AND )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_NOR ) ||
|
||||||
|
( Oper == ABL_NXOR ) )
|
||||||
|
{
|
||||||
|
return( loc_applybddnot( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_OR ) ||
|
||||||
|
( Oper == ABL_XOR ) )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply Bdd Terminal Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *applybddnodeterm( BddSystem, Oper, Index, BddNode )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
long Oper;
|
||||||
|
bddindex Index;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
checkbddoper( BddSystem, Oper, 1 );
|
||||||
|
|
||||||
|
BddNode = loc_applybddterm( Oper, Index, BddNode );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Apply Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_applybdd( Oper, BddNode1, BddNode2 )
|
||||||
|
|
||||||
|
long Oper;
|
||||||
|
bddnode *BddNode1;
|
||||||
|
bddnode *BddNode2;
|
||||||
|
{
|
||||||
|
bddhoper *HashOper;
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddnode *BddHigh;
|
||||||
|
bddnode *BddLow;
|
||||||
|
bddindex Index1;
|
||||||
|
bddindex Index2;
|
||||||
|
|
||||||
|
Index1 = BddNode1->INDEX;
|
||||||
|
Index2 = BddNode2->INDEX;
|
||||||
|
|
||||||
|
if ( ( Index1 < BDD_INDEX_MIN ) ||
|
||||||
|
( Index2 < BDD_INDEX_MIN ) )
|
||||||
|
{
|
||||||
|
if ( ( Index1 < BDD_INDEX_MIN ) &&
|
||||||
|
( Index2 < BDD_INDEX_MIN ) )
|
||||||
|
{
|
||||||
|
if ( Index1 != Index2 )
|
||||||
|
{
|
||||||
|
if ( ( Oper == ABL_NAND ) ||
|
||||||
|
( Oper == ABL_OR ) ||
|
||||||
|
( Oper == ABL_XOR ) )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index1 == BDD_INDEX_ZERO )
|
||||||
|
{
|
||||||
|
if ( ( Oper == ABL_NAND ) ||
|
||||||
|
( Oper == ABL_NOR ) ||
|
||||||
|
( Oper == ABL_NXOR ) )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_OR ) ||
|
||||||
|
( Oper == ABL_AND ) ||
|
||||||
|
( Oper == ABL_NXOR ) )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index1 < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
return( loc_applybddterm( Oper, Index1, BddNode2 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( loc_applybddterm( Oper, Index2, BddNode1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
HashOper = searchbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
Oper, BddNode1, BddNode2 );
|
||||||
|
|
||||||
|
if ( HashOper != (bddhoper *)0 )
|
||||||
|
{
|
||||||
|
return( incbddrefext( HashOper->FATHER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index1 == Index2 )
|
||||||
|
{
|
||||||
|
if ( BddNode1 == BddNode2 )
|
||||||
|
{
|
||||||
|
if ( ( Oper == ABL_OR ) ||
|
||||||
|
( Oper == ABL_AND ) )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Oper == ABL_NOR ) ||
|
||||||
|
( Oper == ABL_NAND ) )
|
||||||
|
{
|
||||||
|
return( loc_applybddnot( BddNode1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Oper == ABL_XOR )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddHigh = loc_applybdd( Oper, BddNode1->HIGH, BddNode2->HIGH );
|
||||||
|
BddLow = loc_applybdd( Oper, BddNode1->LOW , BddNode2->LOW );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( BddLocalSystem->INDEX_TO_VAR[ Index1 ] >
|
||||||
|
BddLocalSystem->INDEX_TO_VAR[ Index2 ] )
|
||||||
|
{
|
||||||
|
Index1 = Index2;
|
||||||
|
BddHigh = loc_applybdd( Oper, BddNode1, BddNode2->HIGH );
|
||||||
|
BddLow = loc_applybdd( Oper, BddNode1, BddNode2->LOW );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddHigh = loc_applybdd( Oper, BddNode1->HIGH, BddNode2 );
|
||||||
|
BddLow = loc_applybdd( Oper, BddNode1->LOW, BddNode2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNode = addbddnode( (bddsystem *)0, Index1,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
|
||||||
|
addbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
Oper, BddNode1, BddNode2, BddNode );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *applybddnode( BddSystem, Oper, BddNode1, BddNode2 )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
long Oper;
|
||||||
|
bddnode *BddNode1;
|
||||||
|
bddnode *BddNode2;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( isablunaryoper( Oper ) )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNode1 = loc_applybdd( Oper, BddNode1, BddNode2 );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Apply Bdd Ite Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_applybddite( BddIf, BddThen, BddElse )
|
||||||
|
|
||||||
|
bddnode *BddIf;
|
||||||
|
bddnode *BddThen;
|
||||||
|
bddnode *BddElse;
|
||||||
|
{
|
||||||
|
BddThen = loc_applybdd( ABL_AND, BddIf, BddThen );
|
||||||
|
BddIf = loc_applybddnot( BddIf );
|
||||||
|
BddElse = loc_applybdd( ABL_AND,
|
||||||
|
decbddrefext( BddIf ), BddElse );
|
||||||
|
BddIf = loc_applybdd( ABL_OR ,
|
||||||
|
decbddrefext( BddThen ),
|
||||||
|
decbddrefext( BddElse ) );
|
||||||
|
return( BddIf );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply Bdd Ite Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *applybddnodeite( BddSystem, BddIf, BddThen, BddElse )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddnode *BddIf;
|
||||||
|
bddnode *BddThen;
|
||||||
|
bddnode *BddElse;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddThen = loc_applybdd( ABL_AND, BddIf, BddThen );
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
BddIf = loc_applybddnot( BddIf );
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
BddElse = loc_applybdd( ABL_AND,
|
||||||
|
decbddrefext( BddIf ),
|
||||||
|
decbddrefext( BddElse ) );
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
BddIf = loc_applybdd( ABL_OR ,
|
||||||
|
decbddrefext( BddThen ),
|
||||||
|
decbddrefext( BddElse ) );
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddIf );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply List Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_applybddlist( Oper, BddList )
|
||||||
|
|
||||||
|
long Oper;
|
||||||
|
chain_list *BddList;
|
||||||
|
{
|
||||||
|
bddnode *BddNode1;
|
||||||
|
bddnode *BddNode2;
|
||||||
|
|
||||||
|
BddNode1 = (bddnode *)( BddList->DATA );
|
||||||
|
BddNode2 = (bddnode *)( BddList->NEXT->DATA );
|
||||||
|
|
||||||
|
if ( BddList->NEXT->NEXT != (chain_list *)0 )
|
||||||
|
{
|
||||||
|
BddNode2 = decbddrefext( loc_applybddlist( Oper, BddNode2 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( loc_applybdd( Oper, BddNode1, BddNode2 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Apply Bdd List Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *applybddnodelist( BddSystem, Oper, BddList )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
long Oper;
|
||||||
|
chain_list *BddList;
|
||||||
|
{
|
||||||
|
bddnode *BddNode;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( BddList == (chain_list *)0 )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_LIST_ERROR, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Oper == ABL_NOT )
|
||||||
|
{
|
||||||
|
if ( BddList->NEXT != (chain_list *)0 )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNode = (bddnode *)( BddList->DATA );
|
||||||
|
BddNode = loc_applybddnot( BddNode );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( ( isablunaryoper( Oper ) ) ||
|
||||||
|
( BddList->NEXT == (chain_list *)0 ) )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( getabloperpolar( Oper ) == ABL_POLAR_POSITIVE ) ||
|
||||||
|
( BddList->NEXT->NEXT == (chain_list *)0 ) )
|
||||||
|
{
|
||||||
|
BddNode = loc_applybddlist( Oper, BddList );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Oper = getablopernot( Oper );
|
||||||
|
BddNode = loc_applybddlist( Oper, BddList );
|
||||||
|
BddNode = loc_applybddnot( decbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
|
@ -0,0 +1,82 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddapply.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_APPLY_H
|
||||||
|
# define BDD_APPLY_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern bddnode * loc_applybdd __P((long Oper, bddnode *BddNode1, bddnode *BddNode2));
|
||||||
|
extern bddnode * loc_applybddterm __P((long Oper, bddindex Index, bddnode *BddNode));
|
||||||
|
extern bddnode * loc_applybddnot __P((bddnode *BddNode));
|
||||||
|
extern bddnode * loc_applybddite __P((bddnode *BddIf, bddnode *BddThen, bddnode *BddElse));
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,442 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddassoc.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddassoc.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddassoc *BddLocalAssoc = (bddassoc *)0;
|
||||||
|
bddassocnode *BddLocalAssocNode = (bddassocnode *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Bdd Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddassoc *addbddassoc( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddassoc **PrevAssoc;
|
||||||
|
bddassoc *ScanAssoc;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
bddshort AssocIdent;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
ScanAssoc = BddLocalSystem->ASSOC;
|
||||||
|
PrevAssoc = &BddLocalSystem->ASSOC;
|
||||||
|
AssocIdent = 0;
|
||||||
|
|
||||||
|
while ( ( ScanAssoc != (bddassoc *)0 ) &&
|
||||||
|
( ScanAssoc->IDENT > AssocIdent ) )
|
||||||
|
{
|
||||||
|
if ( AssocIdent == BDD_MAX_SHORT )
|
||||||
|
{
|
||||||
|
bdderror( BDD_NO_MORE_ASSOC_ERROR, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
AssocIdent = AssocIdent + 1;
|
||||||
|
PrevAssoc = &ScanAssoc->NEXT;
|
||||||
|
ScanAssoc = ScanAssoc->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
BddAssoc = allocbddassoc();
|
||||||
|
|
||||||
|
BddAssoc->ASSOC_NODE = allocbddassocnode( BddLocalSystem->MAX_VAR );
|
||||||
|
BddAssoc->FIRST = BDD_MAX_VAR;
|
||||||
|
BddAssoc->LAST = BDD_MAX_VAR;
|
||||||
|
BddAssoc->IDENT = AssocIdent;
|
||||||
|
|
||||||
|
BddAssoc->NEXT = ScanAssoc;
|
||||||
|
*PrevAssoc = BddAssoc;
|
||||||
|
|
||||||
|
return( BddAssoc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Bdd Node In Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddassoc *addbddnodeassoc( BddSystem, BddAssoc, Variable, BddNode )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
bddassocnode *BddAssocNode;
|
||||||
|
|
||||||
|
checkbddvar( BddSystem, Variable, 1 );
|
||||||
|
|
||||||
|
BddAssocNode = BddAssoc->ASSOC_NODE;
|
||||||
|
|
||||||
|
if ( BddAssocNode[ Variable ] != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( BddAssocNode[ Variable ] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( ( BddAssoc->FIRST == BDD_MAX_VAR ) ||
|
||||||
|
( Variable < BddAssoc->FIRST ) ) BddAssoc->FIRST = Variable;
|
||||||
|
|
||||||
|
if ( ( BddAssoc->LAST == BDD_MAX_VAR ) ||
|
||||||
|
( Variable > BddAssoc->LAST ) ) BddAssoc->LAST = Variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
BddAssocNode[ Variable ] = incbddrefext( BddNode );
|
||||||
|
|
||||||
|
if ( BddAssoc->CACHE )
|
||||||
|
{
|
||||||
|
BddLocalSystem->ASSOC_RESET = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddAssoc );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Del Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Del Bdd Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int delbddassoc( BddSystem, BddAssoc )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
{
|
||||||
|
bddassoc **PrevAssoc;
|
||||||
|
bddassoc *ScanAssoc;
|
||||||
|
bddassocnode *BddAssocNode;
|
||||||
|
bddvar Variable;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
PrevAssoc = &BddLocalSystem->ASSOC;
|
||||||
|
ScanAssoc = BddLocalSystem->ASSOC;
|
||||||
|
|
||||||
|
while ( ScanAssoc != (bddassoc *)0 )
|
||||||
|
{
|
||||||
|
if ( ScanAssoc == BddAssoc )
|
||||||
|
{
|
||||||
|
*PrevAssoc = ScanAssoc->NEXT;
|
||||||
|
|
||||||
|
BddAssocNode = BddAssoc->ASSOC_NODE;
|
||||||
|
|
||||||
|
if ( BddAssoc->FIRST != BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
for ( Variable = BddAssoc->FIRST;
|
||||||
|
Variable <= BddAssoc->LAST;
|
||||||
|
Variable++ )
|
||||||
|
{
|
||||||
|
if ( BddAssocNode[ Variable ] != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( BddAssocNode[ Variable ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddAssoc->CACHE )
|
||||||
|
{
|
||||||
|
BddLocalSystem->ASSOC_RESET = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
freebddassocnode( BddAssocNode );
|
||||||
|
freebddassoc( BddAssoc );
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
PrevAssoc = &ScanAssoc->NEXT;
|
||||||
|
ScanAssoc = ScanAssoc->NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Reset Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Reset Bdd Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void resetbddassoc( BddSystem, BddAssoc )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
{
|
||||||
|
bddassocnode *BddAssocNode;
|
||||||
|
bddvar Variable;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddAssocNode = BddAssoc->ASSOC_NODE;
|
||||||
|
|
||||||
|
if ( BddAssoc->FIRST != BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
for ( Variable = BddAssoc->FIRST;
|
||||||
|
Variable <= BddAssoc->LAST;
|
||||||
|
Variable++ )
|
||||||
|
{
|
||||||
|
if ( BddAssocNode[ Variable ] != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( BddAssocNode[ Variable ] );
|
||||||
|
BddAssocNode[ Variable ] = (bddnode *)0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BddAssoc->FIRST = BDD_MAX_VAR;
|
||||||
|
BddAssoc->LAST = BDD_MAX_VAR;
|
||||||
|
|
||||||
|
if ( BddAssoc->CACHE )
|
||||||
|
{
|
||||||
|
BddLocalSystem->ASSOC_RESET = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Del Bdd Node In Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int delbddnodeassoc( BddSystem, BddAssoc, Variable )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
bddvar Variable;
|
||||||
|
{
|
||||||
|
bddassocnode *BddAssocNode;
|
||||||
|
|
||||||
|
checkbddvar( BddSystem, Variable, 1 );
|
||||||
|
|
||||||
|
BddAssocNode = BddAssoc->ASSOC_NODE;
|
||||||
|
|
||||||
|
if ( BddAssocNode[ Variable ] != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( BddAssocNode[ Variable ] );
|
||||||
|
BddAssocNode[ Variable ] = (bddnode *)0;
|
||||||
|
|
||||||
|
if ( BddAssoc->CACHE )
|
||||||
|
{
|
||||||
|
BddLocalSystem->ASSOC_RESET = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( Variable == BddAssoc->FIRST ) &&
|
||||||
|
( Variable == BddAssoc->LAST ) )
|
||||||
|
{
|
||||||
|
BddAssoc->FIRST = BDD_MAX_VAR;
|
||||||
|
BddAssoc->LAST = BDD_MAX_VAR;
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Variable == BddAssoc->FIRST )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Variable = Variable + 1;
|
||||||
|
}
|
||||||
|
while ( BddAssocNode[ Variable ] == (bddnode *)0 );
|
||||||
|
|
||||||
|
BddAssoc->FIRST = Variable;
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Variable == BddAssoc->LAST )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Variable = Variable - 1;
|
||||||
|
}
|
||||||
|
while ( BddAssocNode[ Variable ] == (bddnode *)0 );
|
||||||
|
|
||||||
|
BddAssoc->LAST = Variable;
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Destroy Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Destroy Bdd Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void destroybddassoc( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
bddassoc *DelAssoc;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddAssoc = BddLocalSystem->ASSOC;
|
||||||
|
BddLocalSystem->ASSOC = (bddassoc *)0;
|
||||||
|
|
||||||
|
while ( BddAssoc != (bddassoc *)0 )
|
||||||
|
{
|
||||||
|
DelAssoc = BddAssoc;
|
||||||
|
BddAssoc = BddAssoc->NEXT;
|
||||||
|
|
||||||
|
freebddassocnode( DelAssoc->ASSOC_NODE );
|
||||||
|
freebddassoc( DelAssoc );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddLocalSystem->ASSOC_RESET = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| View Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| View Bdd Association |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbddassoc( BddSystem, BddAssoc, FuncView )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
void (*FuncView)();
|
||||||
|
{
|
||||||
|
bddassocnode *BddAssocNode;
|
||||||
|
bddvar Variable;
|
||||||
|
|
||||||
|
if ( BddSystem == (bddsystem *)0 )
|
||||||
|
{
|
||||||
|
BddSystem = BddLocalSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "--> BddAssoc\n" );
|
||||||
|
fprintf( stdout, " FIRST : %ld\n", (long)BddAssoc->FIRST );
|
||||||
|
fprintf( stdout, " LAST : %ld\n", (long)BddAssoc->LAST );
|
||||||
|
fprintf( stdout, " IDENT : %ld\n", (long)BddAssoc->IDENT );
|
||||||
|
fprintf( stdout, " CACHE : %ld\n", (long)BddAssoc->CACHE );
|
||||||
|
|
||||||
|
if ( BddAssoc->FIRST != BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
BddAssocNode = BddAssoc->ASSOC_NODE;
|
||||||
|
|
||||||
|
for ( Variable = BddAssoc->FIRST;
|
||||||
|
Variable <= BddAssoc->LAST;
|
||||||
|
Variable = Variable + 1 )
|
||||||
|
{
|
||||||
|
if ( BddAssocNode[ Variable ] != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
fprintf( stdout, " ASSOC_NODE[ %ld ] : ", (long)Variable );
|
||||||
|
|
||||||
|
if ( FuncView )
|
||||||
|
{
|
||||||
|
(*FuncView)( Variable, BddAssocNode[ Variable ] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stdout, "\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "<-- BddAssoc\n" );
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddassoc.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_ASSOC_H
|
||||||
|
# define BDD_ASSOC_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern bddassoc *BddLocalAssoc;
|
||||||
|
extern bddassocnode *BddLocalAssocNode;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,246 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddblock.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <memory.h>
|
||||||
|
# include <string.h>
|
||||||
|
|
||||||
|
# include "bddblock.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Add Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddblock *addbddblock( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddblock *BddBlock;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddBlock = allocbddblock();
|
||||||
|
BddBlock->NEXT = BddLocalSystem->BLOCK;
|
||||||
|
BddLocalSystem->BLOCK = BddBlock;
|
||||||
|
|
||||||
|
BddBlock->NODE = allocbddnodeblock( BDD_NODE_BLOCK_SIZE );
|
||||||
|
BddBlock->NODE_FREE = BDD_NODE_BLOCK_SIZE;
|
||||||
|
|
||||||
|
return( BddBlock );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Create Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddblock *createbddblock( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
return( addbddblock( BddSystem ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Reset Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void resetbddblock( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddblock *BddBlock;
|
||||||
|
bddnode **PrevNode;
|
||||||
|
bddnode *ScanNode;
|
||||||
|
long Counter;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddBlock = BddLocalSystem->BLOCK;
|
||||||
|
PrevNode = &BddLocalSystem->NODE_FREE;
|
||||||
|
|
||||||
|
for ( BddBlock = BddLocalSystem->BLOCK;
|
||||||
|
BddBlock != (bddblock *)0;
|
||||||
|
BddBlock = BddBlock->NEXT )
|
||||||
|
{
|
||||||
|
ScanNode = BddBlock->NODE;
|
||||||
|
|
||||||
|
memset( (void *)ScanNode, 0,
|
||||||
|
(size_t)BDD_NODE_BLOCK_SIZE * sizeof( bddnode ) );
|
||||||
|
|
||||||
|
for ( Counter = 0; Counter < BDD_NODE_BLOCK_SIZE; Counter++ )
|
||||||
|
{
|
||||||
|
*PrevNode = ScanNode;
|
||||||
|
PrevNode = &ScanNode->HIGH;
|
||||||
|
ScanNode = ScanNode + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
BddBlock->NODE_FREE = 0;
|
||||||
|
BddLocalSystem->NUMBER_FREE += BDD_NODE_BLOCK_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*PrevNode = (bddnode *)0;
|
||||||
|
|
||||||
|
BddLocalSystem->NUMBER_NODE = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Destroy Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void destroybddblock( BddSystem )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddblock *BddBlock;
|
||||||
|
bddblock *DelBddBlock;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddBlock = BddLocalSystem->BLOCK;
|
||||||
|
|
||||||
|
while ( BddBlock != (bddblock *)0 )
|
||||||
|
{
|
||||||
|
DelBddBlock = BddBlock;
|
||||||
|
BddBlock = BddBlock->NEXT;
|
||||||
|
|
||||||
|
freebddnodeblock( DelBddBlock->NODE );
|
||||||
|
freebddblock( DelBddBlock );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddLocalSystem->BLOCK = (bddblock *)0;
|
||||||
|
BddLocalSystem->NODE_FREE = (bddnode *)0;
|
||||||
|
BddLocalSystem->NUMBER_FREE = 0;
|
||||||
|
BddLocalSystem->NUMBER_NODE = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd View Block |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbddblock( BddSystem, FuncView )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
void (*FuncView)();
|
||||||
|
{
|
||||||
|
bddblock *BddBlock;
|
||||||
|
bddnode *ScanNode;
|
||||||
|
long Counter;
|
||||||
|
long NumberBlock;
|
||||||
|
long NumberNode;
|
||||||
|
|
||||||
|
if ( BddSystem == (bddsystem *)0 )
|
||||||
|
{
|
||||||
|
BddSystem = BddLocalSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "--> BlockNodeTable\n" );
|
||||||
|
|
||||||
|
fprintf( stdout, " NUMBER_FREE : %ld\n", BddSystem->NUMBER_FREE );
|
||||||
|
|
||||||
|
NumberBlock = 0;
|
||||||
|
|
||||||
|
for ( BddBlock = BddLocalSystem->BLOCK;
|
||||||
|
BddBlock != (bddblock *)0;
|
||||||
|
BddBlock = BddBlock->NEXT )
|
||||||
|
{
|
||||||
|
fprintf( stdout, "--> BLOCK_NODE[ %ld ]\n", NumberBlock );
|
||||||
|
|
||||||
|
ScanNode = BddBlock->NODE;
|
||||||
|
NumberNode = 0;
|
||||||
|
|
||||||
|
for ( Counter = 0; Counter < BDD_NODE_BLOCK_SIZE; Counter++ )
|
||||||
|
{
|
||||||
|
if ( ScanNode[ Counter ].LOW != (bddnode *)0 )
|
||||||
|
{
|
||||||
|
NumberNode = NumberNode + 1;
|
||||||
|
|
||||||
|
if ( FuncView ) (*FuncView)( ScanNode[ Counter ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, " NUMBER_NODE : %ld\n", NumberNode );
|
||||||
|
fprintf( stdout, "<-- BLOCK_NODE[ %ld ]\n", NumberBlock );
|
||||||
|
|
||||||
|
NumberBlock = NumberBlock + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, " NUMBER_BLOCK : %ld\n", NumberBlock );
|
||||||
|
fprintf( stdout, "<-- BlockNodeTable\n" );
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddblock.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_BLOCK_H
|
||||||
|
# define BDD_BLOCK_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define BDD_NODE_BLOCK_SIZE 1024
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,262 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcheck.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddcheck.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Check Bdd Variable |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int checkbddvar( BddSystem, Variable, Severity )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddvar Variable;
|
||||||
|
int Severity;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( Variable >= BddLocalSystem->NUMBER_VAR )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_VAR_ERROR, Variable );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Check Bdd Index |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int checkbddindex( BddSystem, Index, Severity )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddindex Index;
|
||||||
|
int Severity;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( ( Index < BDD_INDEX_MIN ) ||
|
||||||
|
( Index >= BddLocalSystem->NUMBER_INDEX ) )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_INDEX_ERROR, Index );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Check Bdd Operator |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int checkbddoper( BddSystem, Oper, Severity )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
long Oper;
|
||||||
|
int Severity;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( ( Oper < 0 ) ||
|
||||||
|
( Oper >= ABL_NXOR ) )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Check Bdd Assoc |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int checkbddassoc( BddSystem, BddAssoc, Severity )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddassoc *BddAssoc;
|
||||||
|
int Severity;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( BddLocalSystem->ASSOC_RESET )
|
||||||
|
{
|
||||||
|
resetbddhopertable( BddLocalSystem->HASH_OPER );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( BddAssoc->FIRST == BDD_MAX_VAR ) &&
|
||||||
|
( BddAssoc->LAST == BDD_MAX_VAR ) )
|
||||||
|
{
|
||||||
|
return( 2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddAssoc->FIRST >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_ASSOC_ERROR, BddAssoc->FIRST );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddAssoc->LAST >= BDD_MAX_VAR )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_ASSOC_ERROR, BddAssoc->LAST );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Check Bdd Max Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int checkbddmaxnode( BddSystem, Severity )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
int Severity;
|
||||||
|
{
|
||||||
|
long ReorderLimit;
|
||||||
|
long FirstNumberNode;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( IsBddSystemReorderOn( BddLocalSystem ) )
|
||||||
|
{
|
||||||
|
if ( ( BddLocalSystem->NUMBER_NODE > BddLocalSystem->MAX_NODE ) ||
|
||||||
|
( BddLocalSystem->NUMBER_NODE > BddLocalSystem->REORDER_LIMIT ) )
|
||||||
|
{
|
||||||
|
FirstNumberNode = BddLocalSystem->NUMBER_NODE;
|
||||||
|
|
||||||
|
SetBddSystemReorder( BddLocalSystem );
|
||||||
|
|
||||||
|
BddLocalSystem->REORDER_FUNC( (bddsystem *)0 );
|
||||||
|
|
||||||
|
if ( ! IsBddSystemNoWarning( BddLocalSystem ) )
|
||||||
|
{
|
||||||
|
bddwarning( BDD_DYNAMIC_REORDER_WARNING,
|
||||||
|
FirstNumberNode, BddLocalSystem->NUMBER_NODE );
|
||||||
|
}
|
||||||
|
|
||||||
|
ReorderLimit = ( BddLocalSystem->NUMBER_NODE *
|
||||||
|
BddLocalSystem->REORDER_RATIO ) / 100;
|
||||||
|
|
||||||
|
if ( ReorderLimit < BddLocalSystem->REORDER_LOW )
|
||||||
|
{
|
||||||
|
BddLocalSystem->REORDER_LIMIT = BddLocalSystem->REORDER_LOW;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddLocalSystem->REORDER_LIMIT = ReorderLimit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddLocalSystem->NUMBER_NODE > BddLocalSystem->MAX_NODE )
|
||||||
|
{
|
||||||
|
if ( Severity )
|
||||||
|
{
|
||||||
|
bdderror( BDD_MAX_NODE_ERROR, BddLocalSystem->NUMBER_NODE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 1 );
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcheck.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_CHECK_H
|
||||||
|
# define BDD_CHECK_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,983 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcircuit.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <memory.h>
|
||||||
|
# include "bddcircuit.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddcircuit *BddLocalCircuit = (bddcircuit *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Private Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static char BddStableName[ 512 ];
|
||||||
|
static authtable *BddHashStable = (authtable *)0;
|
||||||
|
static authtable *BddHashInvStable = (authtable *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Get Bdd Stable Name |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *loc_getbddstablename( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
char *StableName;
|
||||||
|
|
||||||
|
if ( BddHashStable == (authtable *)0 )
|
||||||
|
{
|
||||||
|
BddHashStable = createauthtable( 100 );
|
||||||
|
BddHashInvStable = createauthtable( 100 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Element = searchauthelem( BddHashStable, Name );
|
||||||
|
|
||||||
|
if ( Element == (authelem *)0 )
|
||||||
|
{
|
||||||
|
sprintf( BddStableName, "%s'stable", Name );
|
||||||
|
StableName = namealloc( BddStableName );
|
||||||
|
|
||||||
|
Element = addauthelem( BddHashInvStable, StableName, (long)Name );
|
||||||
|
Element = addauthelem( BddHashStable , Name, (long)StableName );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (char *)( Element->VALUE ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Bdd Stable Name |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *getbddstablename( Name )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
{
|
||||||
|
return( loc_getbddstablename( namealloc( Name ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Bdd Input Name |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *getbddcircuitinname( BddCircuit, BddIndex )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
bddindex BddIndex;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
int Index;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
checkbddindex( BddLocalSystem, BddIndex, 1 );
|
||||||
|
|
||||||
|
Index = BddLocalCircuit->INDEX_IN[ BddIndex - BDD_INDEX_MIN ];
|
||||||
|
Name = BddLocalCircuit->NAME_IN[ Index ];
|
||||||
|
|
||||||
|
return( Name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Bdd Is Stable Name |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *loc_isbddstablename( StableName )
|
||||||
|
|
||||||
|
char *StableName;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
if ( BddHashStable == (authtable *)0 )
|
||||||
|
{
|
||||||
|
return( (char *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Element = searchauthelem( BddHashInvStable, StableName );
|
||||||
|
|
||||||
|
if ( Element == (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (char *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (char *)( Element->VALUE ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Is Bdd Stable Name |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *isbddstablename( StableName )
|
||||||
|
|
||||||
|
char *StableName;
|
||||||
|
{
|
||||||
|
return( loc_isbddstablename( namealloc( StableName ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Create Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddcircuit *createbddcircuit( Name, NumberIn, NumberOut, BddSystem )
|
||||||
|
|
||||||
|
char *Name;
|
||||||
|
long NumberIn;
|
||||||
|
long NumberOut;
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
{
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
BddCircuit = allocbddcircuit();
|
||||||
|
|
||||||
|
BddCircuit->NAME = namealloc( Name );
|
||||||
|
BddCircuit->HASH_IN = createauthtable( NumberIn << 1 );
|
||||||
|
BddCircuit->HASH_OUT = createauthtable( NumberOut << 1 );
|
||||||
|
BddCircuit->NAME_IN = allocbddnamein( NumberIn );
|
||||||
|
BddCircuit->NAME_IN_SIZE = NumberIn;
|
||||||
|
BddCircuit->INDEX_IN = allocbddindexin( NumberIn );
|
||||||
|
BddCircuit->INDEX_IN_SIZE = NumberIn;
|
||||||
|
BddCircuit->BDD_SYSTEM = BddLocalSystem;
|
||||||
|
|
||||||
|
BddLocalCircuit = BddCircuit;
|
||||||
|
|
||||||
|
return( BddCircuit );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Reset Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void resetbddcircuit( BddCircuit )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
{
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
resetauthtable( BddLocalCircuit->HASH_IN );
|
||||||
|
resetauthtable( BddLocalCircuit->HASH_OUT );
|
||||||
|
|
||||||
|
memset( (void *)BddLocalCircuit->NAME_IN, 0,
|
||||||
|
(size_t)BddLocalCircuit->NAME_IN_SIZE * sizeof( bddnamein ) );
|
||||||
|
|
||||||
|
memset( (void *)BddLocalCircuit->INDEX_IN, 0,
|
||||||
|
(size_t)BddLocalCircuit->INDEX_IN_SIZE * sizeof( bddindex ) );
|
||||||
|
|
||||||
|
BddLocalCircuit->NUMBER_NAME_IN = 0;
|
||||||
|
BddLocalCircuit->NUMBER_NAME_OUT = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Destroy Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void destroybddcircuit( BddCircuit )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
{
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
destroyauthtable( BddLocalCircuit->HASH_IN );
|
||||||
|
destroyauthtable( BddLocalCircuit->HASH_OUT );
|
||||||
|
|
||||||
|
freebddnamein( BddLocalCircuit->NAME_IN );
|
||||||
|
freebddindexin( BddLocalCircuit->INDEX_IN );
|
||||||
|
|
||||||
|
freebddcircuit( BddLocalCircuit );
|
||||||
|
|
||||||
|
BddLocalCircuit = (bddcircuit *)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Input Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Search Input Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *searchbddcircuitin( BddCircuit, InputName )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *InputName;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
if ( InputName != (char *)0 )
|
||||||
|
{
|
||||||
|
InputName = namealloc( InputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_IN, InputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (bddnode *)Element->VALUE );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (bddnode *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Circuit Input |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *addbddcircuitin( BddCircuit, InputName, Index, Mode )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *InputName;
|
||||||
|
bddindex Index;
|
||||||
|
long Mode;
|
||||||
|
{
|
||||||
|
char **NameIn;
|
||||||
|
bddindex *IndexIn;
|
||||||
|
authelem *Element;
|
||||||
|
bddnode *BddNode;
|
||||||
|
long NameInSize;
|
||||||
|
long NumberNameIn;
|
||||||
|
long IndexInSize;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
setbddlocalsystem( BddLocalCircuit->BDD_SYSTEM );
|
||||||
|
|
||||||
|
BddNode = (bddnode *)0;
|
||||||
|
InputName = namealloc( InputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_IN, InputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (bddnode *)Element->VALUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Mode & BDD_IN_MODE_IMPOSE )
|
||||||
|
{
|
||||||
|
if ( checkbddindex( (bddsystem *)0, Index, 0 ) )
|
||||||
|
{
|
||||||
|
BddNode = getbddvarnodebyindex( (bddsystem *)0, Index );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Mode &= ~BDD_IN_MODE_IMPOSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! ( Mode & BDD_IN_MODE_IMPOSE ) )
|
||||||
|
{
|
||||||
|
switch ( Mode )
|
||||||
|
{
|
||||||
|
case BDD_IN_MODE_FIRST : BddNode = addbddvarfirst( (bddsystem *)0 );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BDD_IN_MODE_LAST : BddNode = addbddvarlast( (bddsystem *)0 );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BDD_IN_MODE_BEFORE : BddNode = addbddvarbefore( (bddsystem *)0, Index );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BDD_IN_MODE_AFTER : BddNode = addbddvarafter( (bddsystem *)0, Index );
|
||||||
|
break;
|
||||||
|
|
||||||
|
default : bdderror( BDD_UNKNOWN_IN_MODE_ERROR, Mode );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addauthelem( BddLocalCircuit->HASH_IN, InputName, (long)BddNode );
|
||||||
|
|
||||||
|
NumberNameIn = BddLocalCircuit->NUMBER_NAME_IN;
|
||||||
|
NameIn = BddLocalCircuit->NAME_IN;
|
||||||
|
NameInSize = BddLocalCircuit->NAME_IN_SIZE;
|
||||||
|
|
||||||
|
if ( NumberNameIn >= NameInSize )
|
||||||
|
{
|
||||||
|
NameIn = resizebddnamein( NameIn, NameInSize, ( NameInSize << 1 ) );
|
||||||
|
|
||||||
|
BddLocalCircuit->NAME_IN = NameIn;
|
||||||
|
BddLocalCircuit->NAME_IN_SIZE = NameInSize << 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
NameIn[ NumberNameIn ] = InputName;
|
||||||
|
BddLocalCircuit->NUMBER_NAME_IN++;
|
||||||
|
|
||||||
|
IndexIn = BddLocalCircuit->INDEX_IN;
|
||||||
|
IndexInSize = BddLocalCircuit->INDEX_IN_SIZE;
|
||||||
|
Index = BddNode->INDEX - BDD_INDEX_MIN;
|
||||||
|
|
||||||
|
if ( Index >= IndexInSize )
|
||||||
|
{
|
||||||
|
IndexIn = resizebddindexin( IndexIn, IndexInSize, (long)( Index ) << 1 );
|
||||||
|
|
||||||
|
BddLocalCircuit->INDEX_IN = IndexIn;
|
||||||
|
BddLocalCircuit->INDEX_IN_SIZE = (long)( Index ) << 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
IndexIn[ Index ] = (bddindex)NumberNameIn;
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Rename Input Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *renamebddcircuitin( BddCircuit, InputName, NewName )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *InputName;
|
||||||
|
char *NewName;
|
||||||
|
{
|
||||||
|
authelem *Element1;
|
||||||
|
authelem *Element2;
|
||||||
|
bddnode *BddNode;
|
||||||
|
char **NameIn;
|
||||||
|
bddindex *IndexIn;
|
||||||
|
bddindex Index;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
InputName = namealloc( InputName );
|
||||||
|
NewName = namealloc( NewName );
|
||||||
|
|
||||||
|
Element1 = searchauthelem( BddLocalCircuit->HASH_IN, InputName );
|
||||||
|
Element2 = searchauthelem( BddLocalCircuit->HASH_IN, NewName );
|
||||||
|
|
||||||
|
if ( ( Element1 != (authelem *)0 ) &&
|
||||||
|
( Element2 == (authelem *)0 ) )
|
||||||
|
{
|
||||||
|
BddNode = (bddnode *)Element1->VALUE;
|
||||||
|
|
||||||
|
delauthelem( BddLocalCircuit->HASH_IN, InputName );
|
||||||
|
addauthelem( BddLocalCircuit->HASH_IN, NewName, (long)BddNode );
|
||||||
|
|
||||||
|
NameIn = BddLocalCircuit->NAME_IN;
|
||||||
|
IndexIn = BddLocalCircuit->INDEX_IN;
|
||||||
|
Index = BddNode->INDEX - BDD_INDEX_MIN;
|
||||||
|
|
||||||
|
NameIn[ IndexIn[ Index ] ] = NewName;
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (bddnode *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Add Circuit Auxiliary Signal |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *addbddcircuitaux( BddCircuit, InputName, BddAux, UserFunc, Mode )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *InputName;
|
||||||
|
bddnode *BddAux;
|
||||||
|
int (*UserFunc)();
|
||||||
|
long Mode;
|
||||||
|
{
|
||||||
|
char **NameIn;
|
||||||
|
bddindex *IndexIn;
|
||||||
|
bddindex Index;
|
||||||
|
authelem *Element;
|
||||||
|
bddnode *BddNode;
|
||||||
|
long NameInSize;
|
||||||
|
long NumberNameIn;
|
||||||
|
long IndexInSize;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
BddNode = (bddnode *)0;
|
||||||
|
InputName = namealloc( InputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_IN, InputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_IN_ERROR, InputName );
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( Mode )
|
||||||
|
{
|
||||||
|
case BDD_AUX_MODE_SINGLE :
|
||||||
|
|
||||||
|
BddNode = addbddvarauxsingle( (bddsystem *)0, BddAux );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BDD_AUX_MODE_GLOBAL :
|
||||||
|
|
||||||
|
BddNode = addbddvarauxglobal( (bddsystem *)0, BddAux, UserFunc );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default : bdderror( BDD_UNKNOWN_AUX_MODE_ERROR, Mode );
|
||||||
|
}
|
||||||
|
|
||||||
|
addbddcircuitout( (bddcircuit *)0, InputName, BddNode );
|
||||||
|
addauthelem( BddLocalCircuit->HASH_IN, InputName, (long)BddAux );
|
||||||
|
|
||||||
|
NumberNameIn = BddLocalCircuit->NUMBER_NAME_IN;
|
||||||
|
NameIn = BddLocalCircuit->NAME_IN;
|
||||||
|
NameInSize = BddLocalCircuit->NAME_IN_SIZE;
|
||||||
|
|
||||||
|
if ( NumberNameIn >= NameInSize )
|
||||||
|
{
|
||||||
|
NameIn = resizebddnamein( NameIn, NameInSize, ( NameInSize << 1 ) );
|
||||||
|
|
||||||
|
BddLocalCircuit->NAME_IN = NameIn;
|
||||||
|
BddLocalCircuit->NAME_IN_SIZE = NameInSize << 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
NameIn[ NumberNameIn ] = InputName;
|
||||||
|
BddLocalCircuit->NUMBER_NAME_IN++;
|
||||||
|
|
||||||
|
IndexIn = BddLocalCircuit->INDEX_IN;
|
||||||
|
IndexInSize = BddLocalCircuit->INDEX_IN_SIZE;
|
||||||
|
Index = BddAux->INDEX - BDD_INDEX_MIN;
|
||||||
|
|
||||||
|
if ( Index >= IndexInSize )
|
||||||
|
{
|
||||||
|
IndexIn = resizebddindexin( IndexIn, IndexInSize, (long)( Index ) << 1 );
|
||||||
|
|
||||||
|
BddLocalCircuit->INDEX_IN = IndexIn;
|
||||||
|
BddLocalCircuit->INDEX_IN_SIZE = (long)( Index ) << 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
IndexIn[ Index ] = (bddindex)NumberNameIn;
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Output Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Search Output Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *searchbddcircuitout( BddCircuit, OutputName )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *OutputName;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
OutputName = namealloc( OutputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_OUT, OutputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
return( (bddnode *)Element->VALUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( (bddnode *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Add Output Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *addbddcircuitout( BddCircuit, OutputName, BddNode )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *OutputName;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
OutputName = namealloc( OutputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_OUT, OutputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( (bddnode *)Element->VALUE );
|
||||||
|
Element->VALUE = (long)( BddNode );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddLocalCircuit->NUMBER_NAME_OUT++;
|
||||||
|
Element = addauthelem( BddLocalCircuit->HASH_OUT, OutputName, (long)BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Del Output Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int delbddcircuitout( BddCircuit, OutputName )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char *OutputName;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
OutputName = namealloc( OutputName );
|
||||||
|
Element = searchauthelem( BddLocalCircuit->HASH_OUT, OutputName );
|
||||||
|
|
||||||
|
if ( Element != (authelem *)0 )
|
||||||
|
{
|
||||||
|
decbddrefext( (bddnode *)Element->VALUE );
|
||||||
|
|
||||||
|
BddLocalCircuit->NUMBER_NAME_OUT--;
|
||||||
|
|
||||||
|
return( delauthelem( BddLocalCircuit->HASH_OUT, OutputName ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Add Circuit Abl |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static bddnode *loc_addbddcircuitabl( Expr )
|
||||||
|
|
||||||
|
ablexpr *Expr;
|
||||||
|
{
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddnode *BddFirst;
|
||||||
|
char *AtomValue;
|
||||||
|
long Oper;
|
||||||
|
int Negative;
|
||||||
|
|
||||||
|
if ( ABL_ATOM( Expr ) )
|
||||||
|
{
|
||||||
|
AtomValue = ABL_ATOM_VALUE( Expr );
|
||||||
|
|
||||||
|
if ( AtomValue == ABL_ATOM_NAME_ONE )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ONE );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( AtomValue == ABL_ATOM_NAME_ZERO )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNode = searchbddcircuitin( (bddcircuit *)0, AtomValue );
|
||||||
|
|
||||||
|
if ( BddNode == (bddnode *)0 )
|
||||||
|
{
|
||||||
|
BddNode = searchbddcircuitout( (bddcircuit *)0, AtomValue );
|
||||||
|
|
||||||
|
if ( BddNode == (bddnode *)0 )
|
||||||
|
{
|
||||||
|
if ( AtomValue == ABL_ATOM_NAME_DC )
|
||||||
|
{
|
||||||
|
return( BddLocalSystem->ZERO );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit *)0, AtomValue,
|
||||||
|
(bddindex )0, BDD_IN_MODE_LAST );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Oper = ABL_OPER( Expr );
|
||||||
|
Expr = ABL_CDR( Expr );
|
||||||
|
|
||||||
|
if ( Oper == ABL_NOT )
|
||||||
|
{
|
||||||
|
if ( ABL_CDR( Expr ) != (ablexpr *)0 )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddFirst = loc_addbddcircuitabl( ABL_CAR( Expr ) );
|
||||||
|
BddNode = applybddnodenot( (bddsystem *)0, decbddrefext( BddFirst ) );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Oper == ABL_STABLE )
|
||||||
|
{
|
||||||
|
Expr = ABL_CAR( Expr );
|
||||||
|
|
||||||
|
if ( ! ABL_ATOM( Expr ) )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
AtomValue = ABL_ATOM_VALUE( Expr );
|
||||||
|
BddFirst = searchbddcircuitin( (bddcircuit *)0, AtomValue );
|
||||||
|
|
||||||
|
if ( BddFirst == (bddnode *)0 )
|
||||||
|
{
|
||||||
|
BddFirst = addbddcircuitin( (bddcircuit *)0, AtomValue,
|
||||||
|
(bddindex )0, BDD_IN_MODE_LAST );
|
||||||
|
}
|
||||||
|
|
||||||
|
AtomValue = loc_getbddstablename( AtomValue );
|
||||||
|
BddNode = searchbddcircuitin( (bddcircuit *)0, AtomValue );
|
||||||
|
|
||||||
|
if ( BddNode == (bddnode *)0 )
|
||||||
|
{
|
||||||
|
BddNode = addbddcircuitin( (bddcircuit *)0, AtomValue,
|
||||||
|
(bddindex )0, BDD_IN_MODE_LAST );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( isablunaryoper( Oper ) ) ||
|
||||||
|
( ABL_CDR( Expr ) == (ablexpr *)0 ) )
|
||||||
|
{
|
||||||
|
bdderror( BDD_OPERATOR_ERROR, Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( getabloperpolar( Oper ) == ABL_POLAR_POSITIVE ) ||
|
||||||
|
( ABL_CDDR( Expr ) == (ablexpr *)0 ) )
|
||||||
|
{
|
||||||
|
Negative = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Negative = 1;
|
||||||
|
Oper = getablopernot( Oper );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddFirst = loc_addbddcircuitabl( ABL_CAR( Expr ) );
|
||||||
|
|
||||||
|
while ( ( Expr = ABL_CDR( Expr ) ) != (ablexpr *)0 )
|
||||||
|
{
|
||||||
|
BddNode = loc_addbddcircuitabl( ABL_CAR( Expr ) );
|
||||||
|
BddFirst = applybddnode( (bddsystem *)0, Oper,
|
||||||
|
decbddrefext( BddFirst ),
|
||||||
|
decbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Negative )
|
||||||
|
{
|
||||||
|
BddFirst = applybddnodenot( (bddsystem *)0,
|
||||||
|
decbddrefext( BddFirst ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( BddFirst );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Add Abl Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *addbddcircuitabl( BddCircuit, Expr )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
ablexpr *Expr;
|
||||||
|
{
|
||||||
|
bddnode *BddNode;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
BddNode = loc_addbddcircuitabl( Expr );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Stable Circuit Abl |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void loc_stablebddcircuitabl( Expr )
|
||||||
|
|
||||||
|
ablexpr *Expr;
|
||||||
|
{
|
||||||
|
char *Name;
|
||||||
|
|
||||||
|
if ( ABL_ATOM( Expr ) )
|
||||||
|
{
|
||||||
|
Name = loc_isbddstablename( ABL_ATOM_VALUE( Expr ) );
|
||||||
|
|
||||||
|
if ( Name != (char *)0 )
|
||||||
|
{
|
||||||
|
ABL_CAR( Expr ) = addchain( (chain_list *)0, (void *)ABL_STABLE );
|
||||||
|
addablhexpr( Expr, createablatom( Name ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ( ( Expr = ABL_CDR( Expr ) ) != (ablexpr *)0 )
|
||||||
|
{
|
||||||
|
loc_stablebddcircuitabl( ABL_CAR( Expr ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Convert Circuit Abl |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
ablexpr *convertbddcircuitabl( BddCircuit, BddNode )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
ablexpr *Expr;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
Expr = convertbddnodeabl( (bddsystem *)0,
|
||||||
|
BddLocalCircuit->NAME_IN,
|
||||||
|
BddLocalCircuit->INDEX_IN, BddNode );
|
||||||
|
|
||||||
|
loc_stablebddcircuitabl( Expr );
|
||||||
|
|
||||||
|
return( Expr );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd Convert Circuit Sum Abl |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
ablexpr *convertbddcircuitsumabl( BddCircuit, BddNode )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
ablexpr *Expr;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
Expr = convertbddnodesumabl( (bddsystem *)0,
|
||||||
|
BddLocalCircuit->NAME_IN,
|
||||||
|
BddLocalCircuit->INDEX_IN, BddNode );
|
||||||
|
|
||||||
|
loc_stablebddcircuitabl( Expr );
|
||||||
|
|
||||||
|
return( Expr );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Bdd View Circuit |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void viewbddcircuit( BddCircuit, ViewName )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
char ViewName;
|
||||||
|
{
|
||||||
|
bddnamein *NameIn;
|
||||||
|
long ScanName;
|
||||||
|
long NumberName;
|
||||||
|
|
||||||
|
if ( BddCircuit == (bddcircuit *)0 )
|
||||||
|
{
|
||||||
|
BddCircuit = BddLocalCircuit;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, "--> BddCircuit\n" );
|
||||||
|
|
||||||
|
fprintf( stdout, " NAME : %s \n", BddCircuit->NAME );
|
||||||
|
fprintf( stdout, " NAME_IN_SIZE : %ld\n", BddCircuit->NAME_IN_SIZE );
|
||||||
|
fprintf( stdout, " NUMBER_NAME_IN : %ld\n", BddCircuit->NUMBER_NAME_IN );
|
||||||
|
fprintf( stdout, " NUMBER_NAME_OUT : %ld\n", BddCircuit->NUMBER_NAME_OUT );
|
||||||
|
|
||||||
|
if ( ViewName )
|
||||||
|
{
|
||||||
|
NameIn = BddCircuit->NAME_IN;
|
||||||
|
NumberName = BddCircuit->NUMBER_NAME_IN;
|
||||||
|
|
||||||
|
for ( ScanName = 0; ScanName < NumberName; ScanName++ )
|
||||||
|
{
|
||||||
|
fprintf( stdout," NAME_IN[ %ld ] = %s\n", ScanName, NameIn[ ScanName ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf( stdout, " HASH_IN :\n" );
|
||||||
|
viewauthtable( BddCircuit->HASH_IN, (void *)0 );
|
||||||
|
fprintf( stdout, " HASH_OUT :\n" );
|
||||||
|
viewauthtable( BddCircuit->HASH_OUT, (void *)0 );
|
||||||
|
|
||||||
|
fprintf( stdout, "<-- BddCircuit\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Bdd Circuit Node Num |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
long getbddcircuitnumnode( BddCircuit )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
long HashIndex;
|
||||||
|
bddnode *BddNode;
|
||||||
|
long NumNode;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
NumNode = 0;
|
||||||
|
|
||||||
|
for ( HashIndex = 0; HashIndex < BddLocalCircuit->HASH_OUT->TABLE_SIZE; HashIndex++ )
|
||||||
|
{
|
||||||
|
Element = &BddLocalCircuit->HASH_OUT->TABLE[ HashIndex ];
|
||||||
|
|
||||||
|
if ( checkauthkey( Element->KEY, 0 ) )
|
||||||
|
{
|
||||||
|
BddNode = (bddnode *)Element->VALUE;
|
||||||
|
NumNode += getbddnodenum( (bddsystem *)0, BddNode );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return( NumNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Get Bdd Node Size |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
long getbddcircuitsize( BddCircuit )
|
||||||
|
|
||||||
|
bddcircuit *BddCircuit;
|
||||||
|
{
|
||||||
|
authelem *Element;
|
||||||
|
long HashIndex;
|
||||||
|
bddnode *BddNode;
|
||||||
|
long SizeNode;
|
||||||
|
|
||||||
|
setbddlocalcircuit( BddCircuit );
|
||||||
|
|
||||||
|
SizeNode = 0;
|
||||||
|
|
||||||
|
for ( HashIndex = 0; HashIndex < BddLocalCircuit->HASH_OUT->TABLE_SIZE; HashIndex++ )
|
||||||
|
{
|
||||||
|
Element = &BddLocalCircuit->HASH_OUT->TABLE[ HashIndex ];
|
||||||
|
|
||||||
|
if ( checkauthkey( Element->KEY, 0 ) )
|
||||||
|
{
|
||||||
|
BddNode = (bddnode *)Element->VALUE;
|
||||||
|
SizeNode += getbddnodenum( (bddsystem *)0, BddNode );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return( SizeNode );
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcircuit.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_CIRCUIT_H
|
||||||
|
# define BDD_CIRCUIT_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,175 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcofactor.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddcofactor.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Cofactor Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *loc_cofactorbdd( BddNode1, BddNode2 )
|
||||||
|
|
||||||
|
bddnode *BddNode1;
|
||||||
|
bddnode *BddNode2;
|
||||||
|
{
|
||||||
|
bddhoper *HashOper;
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddnode *BddHigh;
|
||||||
|
bddnode *BddLow;
|
||||||
|
bddindex Index1;
|
||||||
|
bddindex Index2;
|
||||||
|
|
||||||
|
Index1 = BddNode1->INDEX;
|
||||||
|
Index2 = BddNode2->INDEX;
|
||||||
|
|
||||||
|
if ( Index2 < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
if ( Index2 == BDD_INDEX_ZERO )
|
||||||
|
{
|
||||||
|
return( (bddnode *)0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( incbddrefext( BddNode1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index1 < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
return( BddNode1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
HashOper = searchbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_COFACTOR, BddNode1, BddNode2 );
|
||||||
|
|
||||||
|
if ( HashOper != (bddhoper *)0 )
|
||||||
|
{
|
||||||
|
return( incbddrefext( HashOper->FATHER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Index1 == Index2 )
|
||||||
|
{
|
||||||
|
BddHigh = loc_cofactorbdd( BddNode1->HIGH, BddNode2->HIGH );
|
||||||
|
BddLow = loc_cofactorbdd( BddNode1->LOW , BddNode2->LOW );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if ( BddLocalSystem->INDEX_TO_VAR[ Index1 ] >
|
||||||
|
BddLocalSystem->INDEX_TO_VAR[ Index2 ] )
|
||||||
|
{
|
||||||
|
Index1 = Index2;
|
||||||
|
BddHigh = loc_cofactorbdd( BddNode1, BddNode2->HIGH );
|
||||||
|
BddLow = loc_cofactorbdd( BddNode1, BddNode2->LOW );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddHigh = loc_cofactorbdd( BddNode1->HIGH, BddNode2 );
|
||||||
|
BddLow = loc_cofactorbdd( BddNode1->LOW , BddNode2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddHigh == (bddnode *)0 ) BddNode = BddLow;
|
||||||
|
else
|
||||||
|
if ( BddLow == (bddnode *)0 ) BddNode = BddHigh;
|
||||||
|
else
|
||||||
|
BddNode = addbddnode( (bddsystem *)0, Index1,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
|
||||||
|
addbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_COFACTOR,
|
||||||
|
BddNode1, BddNode2, BddNode );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Cofact Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *cofactorbddnode( BddSystem, BddNode1, BddNode2 )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddnode *BddNode1;
|
||||||
|
bddnode *BddNode2;
|
||||||
|
{
|
||||||
|
setbddlocalsystem( BddSystem );
|
||||||
|
|
||||||
|
if ( BddNode2 == BddLocalSystem->ZERO )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_INDEX_ERROR, BDD_INDEX_ZERO );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddNode1 = loc_cofactorbdd( BddNode1, BddNode2 );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode1 );
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcofactor.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_COFACTOR_H
|
||||||
|
# define BDD_COFACTOR_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern bddnode *loc_cofactorbdd();
|
||||||
|
|
||||||
|
# endif
|
|
@ -0,0 +1,262 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcompose.c |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Include Files |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# include MUT_H
|
||||||
|
# include AUT_H
|
||||||
|
# include ABL_H
|
||||||
|
# include BDD_H
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "bddcompose.h"
|
||||||
|
# include "bddapply.h"
|
||||||
|
# include "bdderror.h"
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static bddvar BddLocalVariable = (bddvar )0;
|
||||||
|
static bddindex BddLocalIndex = (bddindex )0;
|
||||||
|
static bddnode *BddLocalNode = (bddnode *)0;
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Restrict Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static bddnode *loc_restrictbdd( BddNode )
|
||||||
|
|
||||||
|
bddnode *BddNode;
|
||||||
|
{
|
||||||
|
bddhoper *HashOper;
|
||||||
|
bddnode *BddRestrict;
|
||||||
|
bddvar Variable;
|
||||||
|
|
||||||
|
Variable = BddLocalSystem->INDEX_TO_VAR[ BddNode->INDEX ];
|
||||||
|
|
||||||
|
if ( BddLocalVariable < Variable )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddLocalVariable == Variable )
|
||||||
|
{
|
||||||
|
if ( BddLocalNode->INDEX == BDD_INDEX_ZERO )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode->LOW ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode->HIGH ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HashOper = searchbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_RESTRICT + BddLocalIndex,
|
||||||
|
BddNode, BddLocalNode );
|
||||||
|
|
||||||
|
if ( HashOper != (bddhoper *)0 )
|
||||||
|
{
|
||||||
|
return( incbddrefext( HashOper->FATHER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddRestrict = addbddnode( (bddsystem *)0, BddNode->INDEX,
|
||||||
|
decbddrefext( loc_restrictbdd( BddNode->HIGH ) ),
|
||||||
|
decbddrefext( loc_restrictbdd( BddNode->LOW ) ) );
|
||||||
|
|
||||||
|
addbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_RESTRICT + BddLocalIndex,
|
||||||
|
BddNode, BddLocalNode, BddRestrict );
|
||||||
|
|
||||||
|
return( BddRestrict );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Restrict Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *restrictbddnode( BddSystem, BddNode, Variable, BddSubst )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode *BddSubst;
|
||||||
|
{
|
||||||
|
checkbddvar( BddSystem, Variable, 1 );
|
||||||
|
|
||||||
|
if ( BddSubst->INDEX >= BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
bdderror( BDD_BAD_INDEX_ERROR, BddSubst->INDEX );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddLocalIndex = BddLocalSystem->VAR_TO_INDEX[ Variable ];
|
||||||
|
BddLocalVariable = Variable;
|
||||||
|
BddLocalNode = BddSubst;
|
||||||
|
|
||||||
|
BddNode = loc_restrictbdd( BddNode );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Local Compose Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static bddnode *loc_composebdd( BddNode, BddSubst )
|
||||||
|
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddnode *BddSubst;
|
||||||
|
{
|
||||||
|
bddhoper *HashOper;
|
||||||
|
bddnode *BddCompose;
|
||||||
|
bddnode *BddHigh;
|
||||||
|
bddnode *BddLow;
|
||||||
|
bddvar Variable;
|
||||||
|
bddindex IndexNode;
|
||||||
|
bddindex IndexSubst;
|
||||||
|
|
||||||
|
if ( BddSubst->INDEX < BDD_INDEX_MIN )
|
||||||
|
{
|
||||||
|
BddLocalNode = BddSubst;
|
||||||
|
|
||||||
|
return( loc_restrictbdd( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Variable = BddLocalSystem->INDEX_TO_VAR[ BddNode->INDEX ];
|
||||||
|
|
||||||
|
if ( BddLocalVariable < Variable )
|
||||||
|
{
|
||||||
|
return( incbddrefext( BddNode ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
HashOper = searchbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_COMPOSE + BddLocalIndex,
|
||||||
|
BddNode, BddSubst );
|
||||||
|
|
||||||
|
if ( HashOper != (bddhoper *)0 )
|
||||||
|
{
|
||||||
|
return( incbddrefext( HashOper->FATHER ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( BddLocalVariable == Variable )
|
||||||
|
{
|
||||||
|
BddCompose = loc_applybddite( BddSubst, BddNode->HIGH , BddNode->LOW );
|
||||||
|
|
||||||
|
return( BddCompose );
|
||||||
|
}
|
||||||
|
|
||||||
|
IndexNode = BddNode->INDEX;
|
||||||
|
IndexSubst = BddSubst->INDEX;
|
||||||
|
|
||||||
|
if ( BddLocalSystem->INDEX_TO_VAR[ IndexNode ] >
|
||||||
|
BddLocalSystem->INDEX_TO_VAR[ IndexSubst ] )
|
||||||
|
{
|
||||||
|
IndexNode = IndexSubst;
|
||||||
|
BddHigh = loc_composebdd( BddNode, BddSubst->HIGH );
|
||||||
|
BddLow = loc_composebdd( BddNode, BddSubst->LOW );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BddHigh = loc_composebdd( BddNode->HIGH, BddSubst );
|
||||||
|
BddLow = loc_composebdd( BddNode->LOW, BddSubst );
|
||||||
|
}
|
||||||
|
|
||||||
|
BddCompose = addbddnode( (bddsystem *)0, IndexNode,
|
||||||
|
decbddrefext( BddHigh ),
|
||||||
|
decbddrefext( BddLow ) );
|
||||||
|
|
||||||
|
addbddhoper( BddLocalSystem->HASH_OPER,
|
||||||
|
BDD_OPER_RESTRICT + BddLocalIndex,
|
||||||
|
BddNode, BddSubst, BddCompose );
|
||||||
|
|
||||||
|
return( BddCompose );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Compose Bdd Node |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
bddnode *composebddnode( BddSystem, BddNode, Variable, BddSubst )
|
||||||
|
|
||||||
|
bddsystem *BddSystem;
|
||||||
|
bddnode *BddNode;
|
||||||
|
bddvar Variable;
|
||||||
|
bddnode *BddSubst;
|
||||||
|
{
|
||||||
|
checkbddvar( BddSystem, Variable, 1 );
|
||||||
|
|
||||||
|
BddLocalVariable = Variable;
|
||||||
|
BddLocalIndex = BddLocalSystem->VAR_TO_INDEX[ Variable ];
|
||||||
|
|
||||||
|
BddNode = loc_composebdd( BddNode, BddSubst );
|
||||||
|
|
||||||
|
checkbddmaxnode( (bddsystem *)0, 1 );
|
||||||
|
|
||||||
|
return( BddNode );
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| This file is part of the Alliance CAD System Copyright |
|
||||||
|
| (C) Laboratoire LIP6 - Département ASIM Universite P&M Curie|
|
||||||
|
| |
|
||||||
|
| Home page : http://www-asim.lip6.fr/alliance/ |
|
||||||
|
| E-mail support : mailto:alliance-support@asim.lip6.fr |
|
||||||
|
| |
|
||||||
|
| This progam is free software; you can redistribute it |
|
||||||
|
| and/or modify it under the terms of the GNU Library General|
|
||||||
|
| Public License as published by the Free Software Foundation |
|
||||||
|
| either version 2 of the License, or (at your option) any |
|
||||||
|
| later version. |
|
||||||
|
| |
|
||||||
|
| Alliance VLSI CAD System is distributed in the hope that |
|
||||||
|
| it will be useful, but WITHOUT ANY WARRANTY; |
|
||||||
|
| without even the implied warranty of MERCHANTABILITY or |
|
||||||
|
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
|
| Public License for more details. |
|
||||||
|
| |
|
||||||
|
| You should have received a copy of the GNU General Public |
|
||||||
|
| License along with the GNU C Library; see the file COPYING. |
|
||||||
|
| If not, write to the Free Software Foundation, Inc., |
|
||||||
|
| 675 Mass Ave, Cambridge, MA 02139, USA. |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Tool : Bdd |
|
||||||
|
| |
|
||||||
|
| File : bddcompose.h |
|
||||||
|
| |
|
||||||
|
| Date : 03.12.96 |
|
||||||
|
| |
|
||||||
|
| Author : Jacomme Ludovic |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# ifndef BDD_COMPOSE_H
|
||||||
|
# define BDD_COMPOSE_H
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Constants |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Macro |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __P
|
||||||
|
# if defined(__STDC__) || defined(__GNUC__)
|
||||||
|
# define __P(x) x
|
||||||
|
# else
|
||||||
|
# define __P(x) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Types |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Variables |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
/*------------------------------------------------------------\
|
||||||
|
| |
|
||||||
|
| Functions |
|
||||||
|
| |
|
||||||
|
\------------------------------------------------------------*/
|
||||||
|
|
||||||
|
# endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue