substbddnodeassoc.3alc - Man Page
substitutes a set of variables with a set of bdd node.
Synopsis
#include "bdd101.h" bddnode ∗substbddnodeassoc( BddSystem, BddNode, BddAssoc ) bddsystem ∗BddSystem; bddnode ∗BddNode; bddassoc ∗BddAssoc;
Parameters
- BddSystem
- The bdd system. 
- BddNode
- The bdd node to treat. 
- BddAssoc
- The variable association. 
Description
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.
Return Value
substbddnodeassoc returns the computed bdd node.
Errors
"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.
Example
#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 );See Also
Info
October 1, 1997 ASIM/LIP6 BDD FUNCTIONS