bionic (3) restrictbddnode.3.gz

Provided by: alliance_5.1.1-1.1build1_amd64 bug

NAME

       restrictbddnode - substitutes a variable by a zero or one, in a bdd.

SYNOPSYS

       #include "bdd101.h"
       bddnode ∗restrictbddnode( 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

       restrictbddnode 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.
       The BddSubst must be a the node BddSystem->ONE or BddSystem->ZERO.

RETURN VALUE

       restrictbddnode 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.
       "index xxx out of range, error !"
              The BddSubst parameter must have its index less than BDD_INDEX_MIN.

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

SEE ALSO

       bdd(1)