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