Provided by: alliance_5.0-20120515-6_amd64 bug

NAME

       composebddnode - substitutes a variable by a bdd in another bdd.

SYNOPSYS

       #include "bdd101.h"
       bddnode ∗composebddnode( BddSystem, BddNode, Variable, BddSubst )
         bddsystem ∗BddSystem;
         bddnode   ∗BddNode;
         bddvar     Variable;
         bddnode   ∗BddSubst;

PARAMETERS

       BddSystem           The bdd system.

       BddNode             The bdd node.

       Variable            The variable to find.

       BddSubst            The bdd to substitute with.

DESCRIPTION

       composebddnode  substitutes  all  the  occurency  of the variable Variable in the bdd node
       BddNode by the bdd node BddSubst, in the bdd system  BddSystem.   If  a  null  pointer  is
       given, the default bdd system is used.

RETURN VALUE

       composebddnode returns the resulting bdd node.

ERRORS

       "variable xxx out of range, error !"
              The Variable parameter must be less or equal to the BddSystem->NUMBER_VAR field.

EXAMPLE

       #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 );

SEE ALSO

       bdd(1)