This commit was generated by cvs2svn to track changes on a CVS vendor

branch.
This commit is contained in:
Ludovic Jacomme 2002-03-18 11:26:51 +00:00
commit cc19353df4
171 changed files with 25656 additions and 0 deletions

View File

@ -0,0 +1 @@
man_MANS = bdd.1

479
alliance/src/bdd/man1/bdd.1 Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

1111
alliance/src/bdd/src/bdd.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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" );
}

View File

@ -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

View File

@ -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 );
}

View File

@ -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

View File

@ -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" );
}

View File

@ -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

View File

@ -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" );
}

View File

@ -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

View File

@ -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 );
}

View File

@ -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

View File

@ -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 );
}

View File

@ -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

View File

@ -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 );
}

View File

@ -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

View File

@ -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 );
}

View File

@ -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