substbddnodeassoc - substitutes a set of variables with a set of
bdd node.
See the file man1/alc_origin.1.
#include "bdd101.h"
bddnode ∗substbddnodeassoc( BddSystem, BddNode, BddAssoc )
bddsystem ∗BddSystem;
bddnode ∗BddNode;
bddassoc ∗BddAssoc;
substbddnodeassoc substitutes in the bdd node
BddNode all the variables associated to something in the variable
association BddAssoc, with the corresponding bdd node, in the
bdd system BddSystem. If a null pointer is given, the default
bdd system is used.
substbddnodeassoc returns the computed bdd node.
"variable xxx out of range, error !"
The Variable parameter must be less or equal to
the BddSystem->NUMBER_VAR field.
"bad variable association xxx, error !"
The BddAssoc parameter must a valid variable
association.
#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 );
bdd(1)
See the file man1/alc_bug_report.1.