composebddnode

COMPOSEBDDNODE(3)                BDD FUNCTIONS               COMPOSEBDDNODE(3)



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



ORIGIN
       This software belongs to the  ALLIANCE CAD SYSTEM developed by the ASIM
       team at LIP6 laboratory of Université Pierre et Marie CURIE, in Paris,
       France.

       Web : http://asim.lip6.fr/recherche/alliance/
       E-mail : alliance-users@asim.lip6.fr


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)




BUG REPORT
       This tool is under development at the ASIM department of the LIP6
       laboratory.
       We need your feedback to improve documentation and tools.






ASIM/LIP6                       October 1, 1997              COMPOSEBDDNODE(3)